單片機(jī)的一些面試題整理
1.MCS51的中斷系統(tǒng)有幾個(gè)中斷源?幾個(gè)中斷優(yōu)先級(jí)?中斷優(yōu)先級(jí)是如何控制的?在出現(xiàn)同級(jí)中斷申請(qǐng)時(shí),CPU按什么順序響應(yīng)(按由高級(jí)到低級(jí)的順序?qū)懗龈鱾(gè)中斷源)?各個(gè)中斷源的入口地址是多少?
答:MCS51單片機(jī)有5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí),中斷優(yōu)先級(jí)由特殊功能寄存器IP控制,在出現(xiàn)同級(jí)中斷申請(qǐng)時(shí),CPU按如下順序響應(yīng)各個(gè)中斷源的請(qǐng)求:INT0、T0、INT1、T1、串口,各個(gè)中斷源的入口地址分別是0003H、000BH、0013H、001BH、0023H。
單片機(jī)是將微處理器、一定容量的 RAM 和ROM以及 I/O 口、定時(shí)器等電路集成在一塊芯片上而構(gòu)成的微型計(jì)算機(jī)。當(dāng)CPU訪問(wèn)片外的存儲(chǔ)器時(shí),其低八位地址由 P0口提供,高八位地址由 P2口提供,8位數(shù)據(jù)由 P0口提供。在I/O口中,P0口在接LED時(shí),必須提供上拉電阻,P3口具有第二功能。
19、是非題:工作寄存器區(qū)不允許做普通的RAM單元來(lái)使用。F
20、是非題:工作寄存器組是通過(guò)置位PSW中的RS0和RS1來(lái)切換的。T
21、是非題:特殊功能寄存器可以當(dāng)作普通的RAM單元來(lái)使用。F
22、是非題:訪問(wèn)128個(gè)位地址用位尋址方式,訪問(wèn)低128字節(jié)單元用直接或間接尋址方式。T
23、是非題:堆棧指針SP的內(nèi)容可指向片內(nèi)00H~7FH的任何RAM單元,系統(tǒng)復(fù)位后,SP初始化為00H。F
24、數(shù)據(jù)指針DPTR是一個(gè)16位的 特殊功能寄存器 寄存器。
25、是非題:DPTR只能當(dāng)作一個(gè)16位的特殊功能寄存器來(lái)使用。F
26、是非題:程序計(jì)數(shù)器PC是一個(gè)可以尋址的特殊功能寄存器。F
28、當(dāng)系統(tǒng)處于正常工作狀態(tài)且振蕩穩(wěn)定后,在RST引腳上加一個(gè) 高 電平并維持 2 個(gè)機(jī)器周期,可將系統(tǒng)復(fù)位。
29、是非題:?jiǎn)纹瑱C(jī)89C51復(fù)位后,其PC指針初始化為0000H,使單片機(jī)從該地址單元開(kāi)始執(zhí)行程序。T
31、是非題:?jiǎn)纹瑱C(jī)系統(tǒng)上電后,其內(nèi)部RAM的值是不確定的。T
36、以下哪一條指令的寫(xiě)法是錯(cuò)誤的(C)。
A、MOV DPTR,#3F98H B、MOV R0,#0FEH C、MOV 50H,#0FC3DH D、INC R0
37、以下哪一條指令的寫(xiě)法是錯(cuò)誤的(D)。
A、INC DPTR B、MOV R0,#0FEH C、DEC A D、PUSH A
38、以下哪一條指令的寫(xiě)法是錯(cuò)誤的(B)。
A、MOVC A,@A+DPTR B、MOV R0,#FEH C、CPL A D、PUSH ACC
39、是非題:在51系列單片機(jī)的指令系統(tǒng)中,其加法、減法、乘法和除法必須有累加器A的參與才能完成。T
46、單片機(jī)89C51的5個(gè)中斷源分別為 INT0 、INT1 、T0 、T1以及TXD/RXD 。
47、單片機(jī)89C51的中斷要用到4個(gè)特殊功能寄存器,它們是TCON、SCON、 IE 以及IP。
48、在89C51中,外部中斷由IT0(1)位來(lái)控制其兩種觸發(fā)方式,分別是 電平 觸發(fā)方式和 邊沿 觸發(fā)方式。
50、是非題:在89C51中,當(dāng)產(chǎn)生中斷響應(yīng)時(shí),所有中斷請(qǐng)求標(biāo)志位都由硬件自動(dòng)清零。F
51、中斷處理過(guò)程分為3個(gè)階段,即中斷響應(yīng)、中斷處理以及中斷返回。
52、簡(jiǎn)述51系列單片機(jī)中斷響應(yīng)的條件。
●有中斷源發(fā)出中斷請(qǐng)求;
●中斷總允許位EA=1,即CPU開(kāi)中斷;
●申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒(méi)有屏蔽;
●無(wú)同級(jí)或更高級(jí)中斷正在被服務(wù);
●當(dāng)前的指令周期已經(jīng)結(jié)束;
●若現(xiàn)在指令為RETI或者是訪問(wèn)IE或IP指令,則該指令以及緊接著的另一條指令已執(zhí)行完。
53、是非題:在51系列單片機(jī)中,中斷服務(wù)程序從矢量地址開(kāi)始執(zhí)行,一直到返回指令RETI為止。T
56、是非題:在執(zhí)行子程序調(diào)用或執(zhí)行中斷服務(wù)程序時(shí)都將產(chǎn)生壓棧的動(dòng)作。T
65、是非題:在51系列單片機(jī)的指令中,既有帶借位的減法指令,又有不帶借位的減法指令。F
69、單片機(jī)89C51具有并行 通信和串行 通信兩種通信方式。
79、單片機(jī)89C51中的串行通信共有4種方式,其中方式 0 是用作同步移位寄存器來(lái)擴(kuò)展I/O口的。
99、MCS-51 單片機(jī)的RS1,RS0=01 時(shí),當(dāng)前寄存器R0—R7 占用內(nèi)部RAM(B)單元。
A、 00H—07H B、 08H—0FH C、 10H—17H D、 18H—1FH
101、MCS-51 單片機(jī)有片內(nèi)RAM 容量( A )。
A. 128B B、 4KB C、 8KB D、 256B
104、在執(zhí)行下列指令后,A=___60H___,R0=__45H____,(60H)=___45H___。
MOV A,# 45H
MOV R0,# 60H
MOV @R0,A
XCH A, R0
106、設(shè)RAM 中(2456H)=66H,(2457H)=34H,ROM 中(2456H)=55H,(2457H)=64H。請(qǐng)分析下面程序執(zhí)行后各寄存器的內(nèi)容。 (A)=___64H___,(DPTR)=__2356H____。
MOV A,#1
MOV DPTR,#2456H
MOVC A,@A+DPTR
107、MCS-51 單片機(jī)的定時(shí)器/計(jì)數(shù)器工作方式0 是( C )。
A、8 位計(jì)數(shù)器結(jié)構(gòu) B、16 位計(jì)數(shù)器結(jié)構(gòu) C、13 位計(jì)數(shù)器結(jié)構(gòu) D、2 個(gè)8 位計(jì)數(shù)器結(jié)構(gòu)
108、執(zhí)行下列程序后,(A)=__35H____,(B)=__16H____。
MOV A,#9FH
MOV B,#36H
ANL B,A
SETB C
ADDC A,B
109、MCS-51 單片機(jī)的外部中斷0 中斷入口地址為( C )。
A、 000BH B、 001BH C、0003H D、 0013H
尋址方式 | 尋址空間 |
立即數(shù)尋址 | 程序存儲(chǔ)器ROM |
直接尋址 | 片內(nèi)RAM低128B、特殊功能寄存器 |
寄存器尋址 | 工作寄存器R0-R7、A、B、C、DPTR |
寄存器間接尋址 | 片內(nèi)RAM低128B、片外RAM |
變址尋址 | 程序存儲(chǔ)器(@A+PC,@A+DPTR) |
相對(duì)尋址 | 程序存儲(chǔ)器256B范圍(PC+偏移量) |
位尋址 | 片內(nèi)RAM的20H-2FH字節(jié)地址、部分SFR |
1.MOV A,40H ;直接尋址 (40H)→A
MOV R0,A ;寄存器尋址 (A)→R0
MOV P1,#0F0H ;立即數(shù)尋址 0F0→P1
MOV @R0,30H ;直接尋址 (30H) →(R0)
MOV DPTR,#3848H ;立即數(shù)尋址 3848H→DPTR
MOV 40H,38H ;直接尋址 (38H) →40H
MOV R0,30H ;直接尋址 (30H) →R0
MOV P0,R0 ;寄存器尋址 ( R0 )→P0
MOV 18H,#30H ;立即數(shù)尋址 30H→18H
MOV A,@R0 ;寄存器間接尋址 ((R0)) →A
MOV P2,P1 ;直接尋址 (P1)→P2
最后結(jié)果:(R0)=38H,(A)=40H,(P0)=38H,
(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,
(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H
2. MOV A,DATA ;直接尋址 2字節(jié)1周期
MOV A,#DATA ;立即數(shù)尋址 2字節(jié)1周期
MOV DATA1,DATA2 ;直接尋址 3字節(jié)2周期
MOV 74H,#78H ;立即數(shù)尋址 3字節(jié)2周期
2-1 MCS-51單片機(jī)內(nèi)部包含哪些主要功能部件?它們的作用是什么?
答:MCS-51單片機(jī)在一塊芯片中集成了CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器、多功能I/O口
和中斷控制等基本功能部件。
單片機(jī)的核心部分是CPU,CPU是單片機(jī)的大腦和心臟。
程序存儲(chǔ)器用于存放編好的程序或表格常數(shù)。數(shù)據(jù)存儲(chǔ)器用于存放中間運(yùn)算結(jié)果、數(shù)據(jù)
暫存和緩沖、標(biāo)志位等。
定時(shí)/計(jì)數(shù)器實(shí)質(zhì)上是加法計(jì)數(shù)器,當(dāng)它對(duì)具有固定時(shí)間間隔的內(nèi)部機(jī)器周期進(jìn)行計(jì)數(shù)時(shí)
,它是定時(shí)器;當(dāng)它對(duì)外部事件進(jìn)行計(jì)數(shù)時(shí),它是計(jì)數(shù)器。
I/O 接口的主要功能包括:緩沖與鎖存數(shù)據(jù)、地址譯碼、信息格式轉(zhuǎn)換、傳遞狀態(tài)(外
設(shè)狀態(tài))和發(fā)布命令等。
中斷控制可以解決 CPU 與外設(shè)之間速度匹配的問(wèn)題,使單片機(jī)可以及時(shí)處理系統(tǒng)中許
多隨機(jī)的參數(shù)和信息,同時(shí),它也提高了其處理故障與應(yīng)變能力的能力。
2-5 簡(jiǎn)述MCS-51單片機(jī)片內(nèi)RAM區(qū)地址空間的分配特點(diǎn)。
答:片內(nèi)數(shù)據(jù)存儲(chǔ)器分為工作寄存器區(qū)、位尋址區(qū)和數(shù)據(jù)緩沖器區(qū)等3個(gè)區(qū)域。 工作寄存器使用內(nèi)部RAM中地址為00H~1FH的32個(gè)單元, 并分成4個(gè)工作寄存器組,每個(gè)組有8個(gè)工作寄存器,名稱(chēng)為R0~R7。 對(duì)于內(nèi)部RAM 中地址為 20H~2FH 的 16 個(gè)單元,CPU 不僅具有字節(jié)尋址功能,而且還具有位尋址功能。這 16 個(gè)單元共 128 位,每一位都賦予 1 個(gè)位地址,位地址范圍是00H~7FH。 30H~7FH是數(shù)據(jù)緩沖區(qū),即用戶(hù)RAM區(qū),共80個(gè)單元。
2-7 單片機(jī)復(fù)位后,各特殊功能寄存器中的初始化狀態(tài)是什么?
答: 特殊功能寄存器 初始狀態(tài) 特殊功能寄存器 初始狀態(tài)
ACC 00H TMOD 00H
PC 0000H TCON 00H
PSW 00H TL0 00H
SP 07H TH0 00H
DPTR 0000H TL1 00H
P0~P3 0FFH TH1 00H
IP xx000000B B 00H
IE 0x000000B SCON 00H
PCON 0xxx0000B SBUF 不定
2-8 MCS-51單片機(jī)的21個(gè)特殊功能寄存器中,哪些具有位尋址能力?
答:MCS-51 單片機(jī)中的程序狀態(tài)字寄存器(PSW),B 寄存器,累加器(ACC) ,端口 P0
~P3,控制寄存器中用于中斷控制的中斷優(yōu)先級(jí)控制寄存器(IP)和中斷允許控制寄存
器(IE) ,用于設(shè)置定時(shí)/計(jì)數(shù)器和串行口工作方式的定時(shí)/計(jì)數(shù)器控制寄存器(TCON)
、串行口控制寄存器(SCON)具有位尋址能力。
2-15 什么時(shí)候需要復(fù)位操作?對(duì)復(fù)位信號(hào)有何要求?
答:復(fù)位是單片機(jī)的初始化操作。單片機(jī)系統(tǒng)在上電啟動(dòng)運(yùn)行時(shí),都需要先復(fù)位。
上電復(fù)位利用電容器的充電實(shí)現(xiàn)。在時(shí)鐘電路工作后,在 RST 端連續(xù)給出 2 個(gè)機(jī)器周
期的高電平就可完成復(fù)位操作。MCS-51 單片機(jī)的上電加按鍵復(fù)位電路當(dāng)復(fù)位按鍵按下
3-1 什么是尋址方式?MCS-51指令系統(tǒng)有哪些尋址方式?相應(yīng)的尋址空間在何處?
答:在指令系統(tǒng)中,操作數(shù)是一個(gè)重要的組成部分,它指定了參與運(yùn)算的數(shù)據(jù)或數(shù)據(jù)所在的
地址單元。如何找到參與運(yùn)算的這個(gè)數(shù)據(jù)或數(shù)據(jù)所在的地址就稱(chēng)為尋址方式。
MCS-51 指令系統(tǒng)的尋址方式主要有立即尋址、直接尋址、寄存器尋址、寄存器間接尋
址、基址加變址尋址、相對(duì)尋址和位尋址等七種。
對(duì)程序存儲(chǔ)器只能采用立即尋址和基址加變址尋址方式;對(duì)特殊功能寄存器只能采用直
接尋址方式,不能采用寄存器間接尋址,對(duì) 8032/8052 等單片機(jī)內(nèi)部 RAM 的高 128 個(gè)
字節(jié)(80H~FFH),只能采用寄存器間接尋址,不能使用直接尋址方式;對(duì)位操作指令
只能對(duì)位尋址區(qū)操作;外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器只能用MOVX指令訪問(wèn), 而內(nèi)部RAM的
低128個(gè)字節(jié)(00H~7FH)既能用直接尋址,也能用間接尋址。
3-2 訪問(wèn)內(nèi)部RAM單元可以采用哪些尋址方式?訪問(wèn)外部RAM單元可以采用哪些尋址方
式?訪問(wèn)特殊功能寄存器(SFR)可以采用哪些尋址方式?
答:對(duì)特殊功能寄存器只能采用直接尋址方式,單片機(jī)內(nèi)部RAM的高128個(gè)字節(jié) (80H~FFH
) ,只能采用寄存器間接尋址,外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器只能用MOVX指令訪問(wèn),而內(nèi)部
RAM的低128個(gè)字節(jié)(00H~7FH)既能用直接尋址,也能用間接尋址。
3-3 訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器可以用哪些指令來(lái)實(shí)現(xiàn)?舉例說(shuō)明。
答:訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器可以用以下指令實(shí)現(xiàn):
MOVX A, @Ri ;((Ri))→A,寄存器Ri指向的片外RAM地址中的內(nèi)容送到累加器A中
MOVX @Ri, A ;A→((Ri)),累加器中內(nèi)容送到寄存器Ri指向的片外RAM地址中
MOVX A, @DPTR;((DPTR))→A,數(shù)據(jù)指針指向的片外RAM地址中的內(nèi)容送到累加器A中
MOVX @DPTR, A ; A→((DPTR)),累加器中內(nèi)容送到數(shù)據(jù)指針指向的片外RAM地址中
訪問(wèn)程序存儲(chǔ)器可以用以下指令實(shí)現(xiàn):
MOVC A, @A+DPTR ;((A+DPTR))→A,表格地址單元中的內(nèi)容送到累加器A中
MOVC A, @A+PC ;PC+1→PC,((A+PC))→A,表格地址單元中的內(nèi)容送到累加器A中
3-4 試用下列3種尋址方式編程,將立即數(shù)0FH送入內(nèi)部RAM的30H單元中。
(1) 立即尋址方式;(2) 寄存器尋址方式;(3) 寄存器間接尋址方式
答: (1)立即尋址方式: MOV 30H, #0FH
(2)寄存器尋址方式: MOV R5, #0FH MOV 30H, R5
(3)寄存器間接尋址方式:MOV @R1, #0FH MOV 30H, @R1
3-6 加法和減法指令影響哪些標(biāo)志位?怎么影響的?
答:在帶進(jìn)位的加法運(yùn)算中,會(huì)影響進(jìn)位位Cy,最終要將A中的值和其后面的值以及進(jìn)位
位Cy中的值相加,最終結(jié)果存在A。
在帶進(jìn)位減法指令中,要將累加器A的內(nèi)容與第二操作數(shù)及進(jìn)位標(biāo)志相減,結(jié)果送回到
累加器A中。在執(zhí)行減法過(guò)程中,如果位7(D7)有借位,則進(jìn)位標(biāo)志Cy置“1”,否則
清“0”;如果位3(D3)有借位,則輔助進(jìn)位標(biāo)志AC置“1”,否則清“0”;如位6有借位
而位 7 沒(méi)有借位,或位 7 有借位而位 6 沒(méi)有借位,則溢出標(biāo)志 OV 置“1”,否則清“0”。
若要進(jìn)行不帶借位的減法操作,則必須先將Cy清“0”。
3-8 試編寫(xiě)一段程序,將內(nèi)部數(shù)據(jù)存儲(chǔ)器30H、 3lH單元內(nèi)容傳送到外部數(shù)據(jù)存儲(chǔ)器1000H、1001H單元中。
答: MOV A, 30H
MOV DPTR, #1000H
MOV @DPTR, A
MOV A, 31H
MOV DPTR, #1000H
MOV @DPTR, A
3-9 試編寫(xiě)一段程序,將外部數(shù)據(jù)存儲(chǔ)器40H單元中的內(nèi)容傳送到0l00H單元中。
答: MOV DPTR, #0040H
MOV A, @DPTR
MOV 0100H, A
6-2 MCS-51 單片機(jī)提供了幾個(gè)中斷源?有幾級(jí)中斷優(yōu)先級(jí)別?各中斷標(biāo)志是如何產(chǎn)生的
又如何清除這些中斷標(biāo)志?各中斷源所對(duì)應(yīng)的中斷矢量地址是多少?
答:MCS-51單片機(jī)提供了5個(gè)中斷源,有2級(jí)中斷優(yōu)先級(jí)別。中斷標(biāo)志由特殊功能寄存器
TCON和SCON的相應(yīng)位鎖存。
中斷標(biāo)志的撤消分為:
1)定時(shí)/計(jì)數(shù)器中斷請(qǐng)求的撤消 中斷請(qǐng)求被響應(yīng)后,硬件會(huì)自動(dòng)清TF0或TF1。
2)外部中斷請(qǐng)求的撤消
(1)跳沿方式外部中斷請(qǐng)求的撤消是自動(dòng)撤消的。
(2)電平方式外部中斷請(qǐng)求的撤消,除了標(biāo)志位清“0”之外,還需在中斷響應(yīng)后把中斷
請(qǐng)求信號(hào)引腳從低電平強(qiáng)制改變?yōu)楦唠娖健?/p>
3)串行口中斷請(qǐng)求的撤消
響應(yīng)串行口的中斷后,CPU無(wú)法知道是接收中斷還是發(fā)送中斷,還需測(cè)試這兩個(gè)中斷標(biāo)
志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請(qǐng)求的
撤消只能使用軟件的方法。
CLR TI ;清TI標(biāo)志位
CLR RI ;清RI標(biāo)志位
各中斷源對(duì)應(yīng)的中斷矢量地址分別為:
中斷源 中斷矢量
外部中斷0 0003H
定時(shí)器T0中斷 000BH
外部中斷1 0013H
定時(shí)器T1中斷 001BH
串行口中斷 0023H
定時(shí)器中斷T2(僅52系列有) 002BH
6-4 試分析以下幾種中斷優(yōu)先級(jí)的排列順序(級(jí)別由高到低)是否可能?若可能,則應(yīng)如何
設(shè)置中斷源的中斷級(jí)別?否則,請(qǐng)簡(jiǎn)述不可能的理由。
(1) 定時(shí)器T0中斷,定時(shí)T1中斷,外中斷1NT0,外中斷INT1,串行口中斷;
(2) 串行口中斷,外中斷1NT0,定時(shí)器T0中斷,外中斷INT1,定時(shí)器T1中斷;
(3) 外中斷INT0、定時(shí)器T1中斷,外中斷INT1,定時(shí)器T0中斷,串行口中斷。
(1)可以,將定時(shí)器T0中斷,定時(shí)T1設(shè)置為高優(yōu)先級(jí)中斷,將外中斷1NT0,外中斷
INT1,串行口中斷
(2)可以,將串行口中斷設(shè)置為高優(yōu)先級(jí)中斷,將外中斷 1NT0,定時(shí)器 T0 中斷,外
中斷INT1,定時(shí)器T1中斷設(shè)置為低優(yōu)先級(jí)中斷;
(3)不行,因?yàn)?MCS-51 單片機(jī)有 2 級(jí)中斷優(yōu)先級(jí)別,同級(jí)中斷還存在按次序決定的
第二優(yōu)先級(jí)結(jié)構(gòu),由高到低依次為外中斷 1NT0、定時(shí)器 T0 中斷、外中斷 INT1、定時(shí)
器T1中斷、串行口中斷。
7-2 如果采用晶振的頻率為 3MHz,定時(shí)/計(jì)數(shù)器工作方式 0、1、2 下,其最大的定時(shí)時(shí)間為多少?
答:內(nèi)部定時(shí)脈沖周期=機(jī)器周期=12/3Mhz=4us
工作方式0:Tmax=8192*4us=32.768ms
工作方式1:Tmax=65536*4us=262.144ms
工作方式2:Tmax=256*4us=1.024ms
7-10 定時(shí)/計(jì)數(shù)器測(cè)量某正單脈沖的寬度,采用何種方式可得到最大量程?若時(shí)鐘頻率為
6MHz,求允許測(cè)量的最大脈沖寬度是多少?
答:采用定時(shí)器工作方式1可得到最大量程,最大脈沖寬度:65536*12/6M=131.072ms
【2—9】什么是堆棧?堆棧有哪些功能? 設(shè)計(jì)時(shí),為什么還要對(duì)SP重新賦值?
堆棧指針SP的作用是什么?
【答】堆棧是在片內(nèi)數(shù)據(jù)RAM區(qū)中,數(shù)據(jù)按照“先進(jìn)后出”或“后進(jìn)先出”原則進(jìn)行管理的區(qū)域。堆棧功能有兩個(gè):保護(hù)斷點(diǎn)和保護(hù)數(shù)據(jù)。在子程序調(diào)用和中斷操作時(shí)這兩個(gè)功能特別有用。在80C51單片機(jī)中,堆棧在子程序調(diào)用和中斷時(shí)會(huì)把斷點(diǎn)地址自動(dòng)進(jìn)棧和出棧。進(jìn)棧和出棧的指令(PUSH、POP)操作可用于保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。由于子程序調(diào)用和中斷都允許嵌套,并可以多級(jí)嵌套,而現(xiàn)場(chǎng)的保護(hù)也往往使用堆棧,所以一定要注意給堆棧以一定的深度,以免造成堆棧內(nèi)容的破壞而引起程序執(zhí)行的“跑飛”。
堆棧指針SP在80C51中存放當(dāng)前的堆棧棧頂所指存儲(chǔ)單元地址的一個(gè)8位寄存器。80C51單片機(jī)的堆棧是向上生成的,即進(jìn)棧時(shí)SP的內(nèi)容是增加的;出棧時(shí)SP的內(nèi)容是減少的。
系統(tǒng)復(fù)位后。80C51的SP內(nèi)容為07H。若不重新定義,則以07H為棧底,壓棧的內(nèi)容從08H單元開(kāi)始存放。但工作寄存器R0~R7有4組,占有內(nèi)部RAM地址為00H~1FH,位尋址區(qū)占有內(nèi)部RAM地址為20H~2FH。若程序中使用了工作寄存器1~3組或位尋址區(qū),則必須通過(guò)軟件對(duì)SP的內(nèi)容重新定義,使堆棧區(qū)設(shè)定在片內(nèi)數(shù)據(jù)RAM區(qū)中的某一區(qū)域內(nèi)(如30H),堆棧深度不能超過(guò)片內(nèi)RAM空間。
【2一13】程序存儲(chǔ)器指令地址、堆棧地址和外接數(shù)據(jù)存儲(chǔ)器地址各使用什么指針?為什么?
【答】程序存儲(chǔ)器指令地址使用程序計(jì)數(shù)器PC指針,PC中存放的是下一條將要從程序存儲(chǔ)器中取出的指令的地址。程序計(jì)數(shù)器PC變化的軌跡決定程序的流程。PC最基本的工作方式是自動(dòng)加1。在執(zhí)行條件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移指令時(shí),將轉(zhuǎn)移的目的地址送入程序計(jì)數(shù)器,程序流向發(fā)生變化。在執(zhí)行調(diào)用指令或響應(yīng)中斷時(shí),將子程序的入口地址或者中斷矢量地址送人PC,程序流向發(fā)生變化。 堆棧地址使用堆棧指針.SP。SP在80C51中存放當(dāng)前的堆棧棧頂所指存儲(chǔ)單元地址,是一個(gè)8位寄存器,對(duì)數(shù)據(jù)按照“先進(jìn)后出”原則進(jìn)行管理。外接數(shù)據(jù)存儲(chǔ)器地址使用數(shù)據(jù)指針DPTR。DPTR是一個(gè)16位特殊功能寄存器,主要功能是作為片外數(shù)據(jù)存儲(chǔ)器或I/0尋址用的地址寄存器,這時(shí)會(huì)產(chǎn)生RD或wR控制信號(hào),用于單片機(jī)對(duì)外擴(kuò)的數(shù)據(jù)存儲(chǔ)器或I/0的控制。數(shù)據(jù)指針DPTR也可以作為訪問(wèn)程序存儲(chǔ)器時(shí)的基址寄存器,此時(shí)是尋址程序存儲(chǔ)器中的表格、常數(shù)等單元,而不是尋址指令。
【2一19】80C51單片機(jī)的4個(gè)I/O口在使用上有哪些分工和特點(diǎn)?
【答】4個(gè)I/O口的分工和特點(diǎn)如下:
① P0口是一個(gè)多功能的8位口,可按字節(jié)訪問(wèn)也可按位訪問(wèn)。
l 用作I/0口。相當(dāng)于一個(gè)真正的雙向口:輸出鎖存,輸入緩沖,但輸入時(shí)須先將口置l;每根口線(xiàn)可以獨(dú)立定義為輸入或輸出。
l 用作地址/數(shù)據(jù)復(fù)用總線(xiàn)。作數(shù)據(jù)總線(xiàn)使用時(shí),輸入/輸出8位數(shù)據(jù)D0~D7;作地址總 線(xiàn)用時(shí),輸出低8位地址AO~A7。
② P1口是一個(gè)8位口,可按字節(jié)訪問(wèn)也可按位訪問(wèn),因此,P1口不僅可以8位一組進(jìn)行 輸入、輸出操作,還可以逐位分別定義各口線(xiàn)為輸入線(xiàn)或輸出線(xiàn)。輸入時(shí)有條件,即需要先輸出1,將該口設(shè)為輸入狀態(tài)。一般作I/o口用。
③ P2口是一個(gè)多功能的8位口,可按字節(jié)訪問(wèn)也可按位訪問(wèn)。在單片機(jī)采用并行擴(kuò)展方式時(shí),P2口作為地址總線(xiàn)的高8位D8~D15。
④ P3口是一個(gè)多功能的8位口,可按字節(jié)訪問(wèn),也按可位訪問(wèn)。可作為I/0口使用,為準(zhǔn)雙向口。既可以字節(jié)操作,也可以位操作;既可以8位口操作,也可以逐位定義口線(xiàn)為輸入線(xiàn)或輸出線(xiàn)。
P3可替代輸入、輸出功能。
替代輸入功能:
P3.0一一RXD,串行輸入口。
P3.2一一IN'I、0,外部中斷O的請(qǐng)求。
P3.3一一INTl,外部中斷1的請(qǐng)求。
P3.4一TO,定時(shí)器/計(jì)數(shù)器O外部計(jì)數(shù)脈沖輸入。
P3.5一一T1,定時(shí)器/計(jì)數(shù)器1外部計(jì)數(shù)脈沖輸入。
替代輸出功能:
P3.1一一TXD,串行輸出口。
P3.6一一wR,外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通,輸出,低電平有效。
P3.7~RD,外部數(shù)據(jù)存儲(chǔ)器讀選通,輸出,低電平有效。
【3—4】簡(jiǎn)述80C51的指令尋址方式,并舉例說(shuō)明。
【答】執(zhí)行任何一條指令都需要使用操作數(shù),尋址方式就是在指令中給出的尋找操作數(shù)或操作數(shù)所在地址的方法。
80C5l系列單片機(jī)的指令系統(tǒng)中共有以下7種尋址方式。
①立即尋址。在指令中直接給出操作數(shù)。出現(xiàn)在指令中的操作數(shù)稱(chēng)為“立即數(shù)”,為了與直接尋址指令中的直接地址相區(qū)別,在立即數(shù)前面必須加上前綴“#”。
例如:MOV DPTR,#1234H ;1234H為立即數(shù),直接送DPTR
②直接尋址。在指令中直接給出操作數(shù)單元的地址。
例如: MOV A,55H ;55H是操作數(shù)單元的地址,55H單元內(nèi)的數(shù)據(jù)才是操作數(shù),取出后送累加器A
③寄存器尋址。在指令中將指定寄存器的內(nèi)容作為操作數(shù)。因此,指定了寄存器就能得
到操作數(shù)。寄存器尋址方式中,用符號(hào)名稱(chēng)來(lái)表示寄存器。
例如: INC R7 ;R7的內(nèi)容為操作數(shù),加1后再送回R7
④寄存器間接尋址。在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地址中取出的才
是操作數(shù)?梢钥闯,在寄存器尋址方式中,寄存器中存放的是操作數(shù);而在寄存器間接尋址
方式中,寄存器中存放的則是操作數(shù)的地址。
寄存器間接尋址須以寄存器符號(hào)名稱(chēng)的形式表示。為了區(qū)別寄存器尋址和寄存器間接尋
址,在寄存器間接尋址中,應(yīng)在寄存器的名稱(chēng)前面加前綴“@”。
例如: ORL A.@Ro; 當(dāng)R0寄存器的內(nèi)容是60H時(shí),該指令功能是以RO寄存器的內(nèi)容60H為地址,將60H地址單元的內(nèi)容與累加器A中的數(shù)相“或”,其結(jié)果仍存放在A中。
⑤相對(duì)尋址。在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。相對(duì)尋址方式是為實(shí)現(xiàn)程序的相對(duì)轉(zhuǎn)移而設(shè)立的,為相對(duì)轉(zhuǎn)移指令所采用。
在相對(duì)轉(zhuǎn)移指令中,給出地址偏移量(在80C51系列單片機(jī)的指令系統(tǒng)中,以“rel”表示,為8位帶符號(hào)數(shù)),把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址。而PC的當(dāng)前值是指執(zhí)行完轉(zhuǎn)移指令后的PC值,即轉(zhuǎn)移指令的PC值加上轉(zhuǎn)移指令的字節(jié)數(shù)。轉(zhuǎn)移的目的地址可用如下公式表示:
目的地址=(轉(zhuǎn)移指令所在地址+轉(zhuǎn)移指令字節(jié)數(shù))+rel
例如:SJMP 80H ;80H為程序轉(zhuǎn)移的偏移量,即一128。當(dāng)前PC值減去128后即為轉(zhuǎn)移地址
⑥變址尋址。以DPTR或PC作基址寄存器,累加器A作變址寄存器,以?xún)烧邇?nèi)容相加形成的16位程序存儲(chǔ)器地址作為操作數(shù)地址。又稱(chēng)“基址寄存器+變址寄存器間接尋址”。變址尋址方式只能對(duì)程序存儲(chǔ)器進(jìn)行尋址。
例如: MOVC A,@A+DPTR ;功能是把DPTR和A的內(nèi)容相加,所得到的程序存儲(chǔ)器地址單元的內(nèi)容送A
⑦位尋址。80C51系列單片機(jī)有位處理功能,可以對(duì)數(shù)據(jù)位進(jìn)行操作,因此,就有相應(yīng)的位尋址方式。位尋址的尋址范圍:
●片內(nèi)RAM中的位尋址區(qū)。
·可位尋址的特殊功能寄存器位。
例如:MOV c,80H ;功能是把位尋址區(qū)的80H位(即P0.0)狀態(tài)送累加位C
【3—14】已知(30H)=40H,(40H)=10 H,(10H)=00H,(P1)=CAH,請(qǐng)寫(xiě)出執(zhí)行以下程序段后有關(guān)單元的內(nèi)容。
【答】有關(guān)單元的內(nèi)容如下:
MOV R0,#30H ;(RO)=30H
MOV A,@R0 ;(A)=40H
MOV Rl,A ;(R1)=40H
MOV B,@R1 ;(B)=1OH
MOV @R1,P1 ;(40H)=CAH
MOV A,@RO ;(A)=40H
MOV 10H,#20H ;(10H)=20H
MOV 30H,10H ;(30H)=20H
執(zhí)行以上程序段后,有關(guān)單元的內(nèi)容分別為:(30H)=20H,(40H)=CAH,(10H)=20H,(P1)=CAH。
【3-1】已知(A)=7AH,(RO)=30H,(30H)=A5 H,(PSW)=80H。請(qǐng)?zhí)顚?xiě)各條指令單獨(dú)執(zhí)行后的結(jié)果。
【答】結(jié)果如下:
(1) XCH A,R0 ;(A)=30H,(R0):7AH
(2) XCH A,30H ;(A)=A5H,(30H)=7AH,(PSW)=81H
(3) XCH A,@R0 ;(A)=R5H,(30H)=7AH,(PSW)=81H
(4) XCHD A,@R0 ;(A)=75H,(30H)=AAH,(PSW)=81H
(5) SWAP A ;(A)=A7H
(6) ADD A,R0 ;(A)=AAH,(PSW)=04H
(7) ADD A,30H ;(A)=1FH,(PSW)=81H
(8) ADD A,#30H ;(A)=AAH,(PSW)=04H
(9) ADDC A,30H ;(A)=20H,(PSW)=01H
(10) SUBB A,30H ;(A)=D4H,(PSW)=84H
(11) SUBB A,#30H ;(A)=49H,(PSW)=01H
【3-15】已知(R1)=20 H,(20 H)=AAH,請(qǐng)寫(xiě)出執(zhí)行完下列程序段后A的內(nèi)容。
【答】各指令的執(zhí)行結(jié)果如下:
MOV A,#55H ;(A)=55H
ANL A,#0FFH ;(A)=55H
ORL 20H,A ;(20H)=FFH
XRL A,@R1 ;(A)=AAH
CPL A ;(A)=55H
執(zhí)行完程序段后,A的內(nèi)容為5 5 H。
【3—17】已知兩個(gè)十進(jìn)制數(shù)分別在內(nèi)部RAM中的40 H單元和50H單元開(kāi)始存放(低位在前),其字節(jié)長(zhǎng)度存放在內(nèi)部RAM的30 H單元中。編程實(shí)現(xiàn)兩個(gè)十進(jìn)制數(shù)求和,求和結(jié)果存放在40 H開(kāi)始的單元中。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV R0,#40H ;被加數(shù)首址.又作兩個(gè)十進(jìn)制數(shù)和的首址
MOV R1,#50H ;加數(shù)首址
MOV R2,30H ;字節(jié)長(zhǎng)度
CLR C
PP: MOV A,@R1 ;取加數(shù)
ADDC A,@R0 ;帶進(jìn)位加
DA A ;二一十進(jìn)制數(shù)調(diào)整
MOV @R0,A ;存和
INC R0 ;修正地址
INC R1
DJNZ R2,PP ;多字節(jié)循環(huán)加
AJMP $
END
【4-17】根據(jù)8100 H單元中的值X,決定P1口引腳輸出為:
加上必要的偽指令,并對(duì)源程序加以注釋。 .
【答】程序如下:
ORG 0000H
SJMP BEGIN
ORG 0030H
BEGIN: MOV DPTR,#8100H
MOVX A,@DPTR
MOV R2,A
JB ACC.7,SMALLER;有符號(hào)數(shù)<0
SJMP UNSIGNED ;無(wú)符號(hào)數(shù)≥0
SMALLER:DEC A ;X<0,輸出-X(先減1,再取反)
CPL A
MOV P1,A
SJMP OK
UNSIGNED:CJNE A,#00H,BIGGER ;不等于0即大于0
MOV P1,#80H ;X等于0,輸出80H
SJMP OK
BIGGER: CLR C ;X大于0,輸出A×2
RLC A ;A×2
MOV P1,A
OK: SJMP $
END
例如:輸入55 H,P1口引腳輸出AAH;輸入00 H,P1口引腳輸出80 H;輸入F1(一1 5的補(bǔ)碼),P1口引腳輸出0FH。
【5-4】什么是單片機(jī)的中斷優(yōu)先級(jí)?中斷優(yōu)先級(jí)處理的原則是什么?
【答】在一個(gè)單片機(jī)系統(tǒng)中往往允許有多個(gè)中斷源,通常給每個(gè)中斷源規(guī)定了優(yōu)先級(jí)別,稱(chēng)為“優(yōu)先權(quán)"或“中斷優(yōu)先級(jí)’’。
當(dāng)單片機(jī)同時(shí)接收到兩個(gè)或多個(gè)不同優(yōu)先級(jí)的中斷請(qǐng)求時(shí),先響應(yīng)高優(yōu)先級(jí)的中斷。如果同時(shí)接收到的是幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求,則由內(nèi)部的硬件查詢(xún)序列確定它們的優(yōu)先服務(wù)次序,當(dāng)服務(wù)結(jié)束后,再響應(yīng)級(jí)別較低的中斷源。
在80C51單片機(jī)中有高、低兩個(gè)中斷優(yōu)先級(jí),通過(guò)中斷優(yōu)先級(jí)寄存器IP來(lái)設(shè)定。
在80C51單片機(jī)中存在同一優(yōu)先級(jí)內(nèi)由內(nèi)部硬件查詢(xún)序列確定的第二個(gè)優(yōu)先級(jí)結(jié)構(gòu)。
其排列如下:
中斷源 中斷優(yōu)先級(jí)
外部中斷0 最高
定時(shí)器T0中斷
外部中斷1
定時(shí)器T1中斷
串行口中斷
定時(shí)器T2中斷 最低
【5—7】80C51單片機(jī)在什么情況下可響應(yīng)中斷?
【答】中斷響應(yīng)是有條件的,即:
·中斷源申請(qǐng)中斷;
·該中斷源已被允許中斷,且CPU也已允許中斷;
·沒(méi)有同級(jí)或高優(yōu)先級(jí)中斷在執(zhí)行中斷服務(wù)程序。
在接受中斷申請(qǐng)時(shí),如遇下列情況之一,硬件生成的長(zhǎng)調(diào)用指令LCALL將被封鎖:
①CPU正在執(zhí)行同級(jí)或高一級(jí)的中斷服務(wù)程序。因?yàn)楫?dāng)一個(gè)中斷被響應(yīng)時(shí),其對(duì)應(yīng)的中斷優(yōu)先級(jí)觸發(fā)器被置1,封鎖了同級(jí)和低級(jí)中斷。
②查詢(xún)中斷請(qǐng)求的機(jī)器周期不是執(zhí)行當(dāng)前指令的最后一個(gè)周期。目的在于使當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng),以確保當(dāng)前指令的完整執(zhí)行。
③當(dāng)前正在執(zhí)行RETI指令或執(zhí)行對(duì)IE、IP的讀/寫(xiě)操作指令。80C51.中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,必須再繼續(xù)執(zhí)行一條指令,然后才能響應(yīng)中斷。
【6-1】80C51單片機(jī)內(nèi)部設(shè)有幾個(gè)定時(shí)器/計(jì)數(shù)器?簡(jiǎn)述各種工作方式的特點(diǎn)。
【答】80C51單片機(jī)內(nèi)部設(shè)有2個(gè)16位定時(shí)器/計(jì)數(shù)器TO和T1。定時(shí)器/計(jì)數(shù)器有4種工作方式,其特點(diǎn)如下: .
①方式O是13位定時(shí)器/計(jì)數(shù)器。由THx高8位(作計(jì)數(shù)器)和TLx的低5位(32分頻的定標(biāo)器)構(gòu)成,TLx的低5位溢出時(shí),向THx進(jìn)位;THx溢出時(shí),硬件置位TFx(可用于軟件查詢(xún)),并可以申請(qǐng)定時(shí)器中斷。
②方式1是16位定時(shí)器/計(jì)數(shù)器。TLx的低8位溢出時(shí)向THx進(jìn)位,THx溢出時(shí),硬
件置位TFx(可用于軟件查詢(xún)),并可以申請(qǐng)定時(shí)器中斷。
③方式2是定時(shí)常數(shù)自動(dòng)重裝載的8位定時(shí)器/計(jì)數(shù)器。TLx作為8位計(jì)數(shù)寄存器,
THx作為8位計(jì)數(shù)常數(shù)寄存器。當(dāng)TLx計(jì)數(shù)溢出時(shí),一方面將TFx置位,并申請(qǐng)中斷;另一方面將THx的內(nèi)容自動(dòng)重新裝入TLx中,繼續(xù)計(jì)數(shù)。由于重新裝入不影響THx的內(nèi)容,所以可以多次連續(xù)再裝入。方式2對(duì)定時(shí)控制特別有用。 .
④方式3只適用于TO,T0被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TLO和TH0。TLO做8位計(jì)
數(shù)器,它占用了T0的GATE、INTO、啟動(dòng)/停止控制位TRO、TO引腳(P3.4)以及計(jì)數(shù)溢出標(biāo)志位TF0和TO的中斷矢量(地址為000BH)等TH0只能做8位定時(shí)器用,因?yàn)榇藭r(shí)的外部引腳T0已為定時(shí)器/計(jì)數(shù)器TLO所占用。這時(shí)它占用了定時(shí)器/計(jì)數(shù)器T1的啟動(dòng)/停止控制位TRl、計(jì)數(shù)溢出標(biāo)志位TFl.及T1中斷矢量(地址為001BH)。
T0設(shè)為方式3后,定時(shí)器/計(jì)數(shù)器T1只可選方式O、1或2。由于此時(shí)計(jì)數(shù)溢出標(biāo)志位TFI.及T1中斷矢量(地址為001BH)已被TH0所占用,所以T1僅能作為波特率發(fā)生器或其他不用中斷的地方。
3.訪問(wèn)片內(nèi)RAM低128字節(jié)使用哪些尋址方式?訪問(wèn)片內(nèi)RAM高128字節(jié)使用什么尋址方式?訪問(wèn)SFR使用什么尋址方式?
答: 訪問(wèn)片內(nèi)RAM低128字節(jié)使用直接尋址,寄存器間接尋址,位尋址;訪問(wèn)片內(nèi)RAM高128字節(jié)使用寄存器間接尋址;訪問(wèn)SFR使用直接尋址,位尋址。
4.訪問(wèn)片外RAM使用什么尋址方式?
答: 訪問(wèn)片外RAM使用寄存器間接尋址
5.訪問(wèn)程序存儲(chǔ)器使用什么尋址方式?指令跳轉(zhuǎn)使用什么尋址方式?
答: 訪問(wèn)程序存儲(chǔ)器使用指令絕對(duì)尋址,指令相對(duì)尋址。指令跳轉(zhuǎn)使用指令絕對(duì)尋址,指令相對(duì)尋址。
6.分析下面指令是否正確,并說(shuō)明理由。
MOV R3,R7 錯(cuò),兩個(gè)操作數(shù)不能同時(shí)為工作寄存器
MOV B,@R2 對(duì)
DEC DPTR 錯(cuò),不存在
MOV 20H.8,F(xiàn)0 錯(cuò),位傳送指令必須用C
PUSH DPTR
CPL 36H 錯(cuò),不存在
MOV PC,#0800H 錯(cuò),PC不能訪問(wèn)
7.分析下面各組指令,區(qū)分它們的不同之處。
MOV A,30H 與 MOV A,#30H
前者表示:(30H)→A 后者表示:30H→A
MOV A,R0 與 MOV A,@R0
前者表示:(R0)→A 后者表示:((R0))→A
MOV A,@R1 與 MOVX A,@R1
前者表示:在片內(nèi)數(shù)據(jù)存儲(chǔ)器((R1))→A
后者表示:在片外數(shù)據(jù)存儲(chǔ)器((R1))→A
MOVX A,@R0 與 MOVX A,@DPTR
前者R0表示8位地址 后者DPTR表示16位地址
MOVX A,@DPTR 與 MOVC A,@A+DPTR
前者表示:((DPTR))→A 后者表示:((DPTR)+(A))→A
8.在MCS-51單片機(jī)的片內(nèi)RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。請(qǐng)說(shuō)明下面各是什么指令和尋址方式,以及每條指令執(zhí)行后目的操作數(shù)的結(jié)果。
MOV A,40H ;數(shù)據(jù)傳送,直接尋址,(A)=48H
MOV R0,A ;數(shù)據(jù)傳送,寄存器尋址,(R0)=48H
MOV P1,#0FH ;數(shù)據(jù)傳送,立即數(shù)尋址,(P1)=0FH
MOV @R0,30H ;數(shù)據(jù)傳送,直接尋址,(48H)=38H
MOV DPTR,#1234H ;數(shù)據(jù)傳送,立即數(shù)尋址,(DPTR)=1234H
MOV 40H,30H ;數(shù)據(jù)傳送,直接尋址,(40H)=38H
MOV R0,38H ;數(shù)據(jù)傳送,直接尋址,(R0)=40H
MOV P0,R0 ;數(shù)據(jù)傳送,直接尋址,(P0)=40H
MOV 28H,#30H ;數(shù)據(jù)傳送,立即數(shù)尋址,(28H)=30H
MOV A,@R0 ;數(shù)據(jù)傳送,寄存器間接尋址,(A)=38H
9.已知(A)=23H,(R1)=65H,(DPTR)=1FECH,片內(nèi)RAM(65H)=70H, ROM(205CH)=64H。試分析下列各條指令執(zhí)行后目標(biāo)操作數(shù)的內(nèi)容。
MOV A,@R1 ;(A)=70H
MOVX @DPTR,A ;(1FECH)=70H
MOVC A,@A+DPTR ;(A)=64H
XCHD A,@R1 ;(A)=65H
10.已知(A)=76H,(R1)=76H,(B)=4,CY=1,片內(nèi)RAM(76H)=0D0H,(80H)=6CH。試分析下列各條指令執(zhí)行后目標(biāo)操作數(shù)的內(nèi)容和相應(yīng)標(biāo)志位的值。
ADD A,@R1 ;(A)=46H,CY=1
SUBB A,#75H ;(A)=0D0H,CY=1
MUL AB ;(A)=40H,(B)=03H
DIV AB ;(A)=15H,(B)=01H
ANL 76H,#76H ;(76H)=50H
ORL A,#0FH ;(A)=1FH
XRL 80H,A ;(80H)=73H
11.已知(A)=83H,(R0)=17H,(17H)=34H,試分析當(dāng)執(zhí)行完下面程序段后累加器A、R0、17H單元的內(nèi)容。
ANL A,#17H ;(A)=03H
ORL 17H,A ;(17H)=37H
XRL A,@R0 ;(A)=34H
CPL A ;(A)=0CBH
12.閱讀下面程序段,說(shuō)明該段程序的功能。
MOV R0,#40H
MOV R7,#10
CLR A
LOOP:
MOV @R0,A
INC A
INC R0
DJNZ R7,LOOP
SJMP $
答:把0,1,2,3……數(shù)列送到40H開(kāi)始的10個(gè)單元中。
13.閱讀下面程序段,說(shuō)明該段程序的功能。
MOV R0,#40H
MOV A,R0
INC R0
ADD A,@R0
MOV 43H,A
CLR A
ADDC A,#0
MOV 42H,A
SJMP $
答:40H加41H單元的數(shù),結(jié)果送42H:43H
14.閱讀下面程序段,說(shuō)明該段程序的功能。
MOV A,30H
MOV B,#5
MUL AB
ADD A,31H
MOV 33H,A
CLR A
ADDC A,B
MOV 32H,A
SJMP $
答:(30H)×5+(31H)→(32H:33H)
22.編寫(xiě)程序,把片外RAM從2000H開(kāi)始存放的16字節(jié)數(shù)據(jù),傳送到片內(nèi)從30H開(kāi)始的單元中。
MOV DPTR,#2000H
MOV R0,#30H
MOV R1,#0
NEXT:
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
INC R1
CINE R1,#16H,NEXT
編輯:admin 最后修改時(shí)間:2018-05-18