单片机原理与应用习题

发布时间 : 星期二 文章单片机原理与应用习题更新完毕开始阅读

答:8051单片机复位后PC、A、PSW、SP 、P0~P3的状态如下: PC:0000H; A、PSW:00H SP:07H; P0~P3:FFH

单片机的复位不影响内部RAM的状态(包括工作寄存器Rn )。

习题3

1.若访问工作寄存器、特殊功能寄存器、片外数据存储器、程序存储器分别可使用哪些寻址方式?

答:访问工作寄存器采用寄存器寻址,特殊功能寄存器采用直接寻址,片外数据存储器采用寄存器间接寻址,程序存储器的寻址方式有立即寻、变址寻址、相对寻址。 2.写出下列源操作数的寻址方式。

(1) JZ 20H (2) MOV A,R2 (3) MOV A,B

(4) MOV DPTR,#4012H (5) MOVX A,@DPTR (6) MOVC A,@A+PC (7) PUSH B (8) POP ACC (9) MOV C,20H (10)MOV A,20H

答:各指令的源操作数的寻址方式是

⑴ 相对寻址;⑵ 寄存器寻址;⑶ 寄存器寻址;⑷ 立即寻址;⑸ 寄存器间接寻址;⑹ 变址寻址 ;⑺ 直接寻址;⑻ 直接寻址;⑼ 位寻址;⑽ 直接寻址

3.设片内RAM的30H单元的内容为40H,即(30H)=40H,(40H)=10H,(10H)=00H,端口P1=CAH,执行下列程序段填结果。

MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV A,P1 MOV 30H,10H

;R0=30H

;A=(R0)=(30H)=40H ;R1=40H ;B=(40H)=10H ;(40H)=0CAH ;A=0CAH ;(10H)=20H ;(30H)=20H

MOV 10H,#20H

结果:R0= ,R1= ,A= ,B= ,P1= ,(40H)= ,(30H)= ,(10H)= 。 解:每一条指令执行后的结果如注释字段所标。最后的结果为R0=30H,R1=40H,A=0CAH,B=10H,P1=0CAH,(40H)=0CAH,(30H)=20H,(10H)=20H。

4.设A=94H,R2=37H,(40H)=6EH,R1=40H,RS1RS0=00 执行程序段填结果。

MOV P2,A MOV A0H,R2 MOV D0H,@R1 MOV 02H,#98H

结果:A= ,(02H)= ,(40H)= , (01H)= , P2= ,PSW= 。 解:结果:A=94H,(02H)=98H,(40H)=6EH, (01H)=40H, P2=37H,PSW=6EH。

5.A=83H,R0=17H,(17H)=34H , 执行以下指令后A=?

ANL A,#17H ORL 17H,A XRL A,@R0 CPL A

;A=03H ;(17H)=37H ;A=34H ;A=0CBH

解:每一条指令执行后的结果如注释字段所标。所以执行以下指令后A=0CBH。

6.若要完成下列数据传送,应如何用MCS-51的指令来实现。

⑴ A的内容送到P1。

解: MOV A,P1 ⑵ R1的内容传送到R0。 解: MOV A,R1 MOV R0,A

⑶ 片内RAM 20H单元的内容送片内RAM 30H单元。

解: MOV 31H,20H

⑷ 片外RAM 20H单元的内容送片内RAM 30H单元。

解: MOV R0,#20H MOVX A,@R0 MOV 30H,A

⑸ 片外RAM 20H单元的内容送片外RAM 30H单元。

解: MOV MOVX MOV MOVX R0,#20H A,@R0 R1,#30H @R1,A

⑹ 用两种方法将程序存储器ROM 3040H中的常数送到A中,已知PC当前值为3000H。

解:①MOV A,#00H MOV DPTR,#3040H MOVC A,@A+DPTR ② MOV A,#40H MOVC A,@A+PC 3000H: ? ┇ 3040H: ?

⑺ ROM 2000H单元的内容送到片外RAM 1000H单元中。

解: CLR MOV

MOV MOV MOV 解: XCH 解: MOV

A

DPTR,#2000H A,@A+ DPTR DPTR,#1000H @ DPTR,A A,B R0,#40H

⑻ 将A中的内容与寄存器B中的内容交换。

⑼ 将片内RAM 30H单元内容与片外 40H单元的内容交换。

解:

MOVX A,@R0 XCH A,30H MOVX @R0,A MOV MOVX MOV MOV MOVX MOVX

MOV MOVX

⑽ 将片外RAM 30H单元内容与片外 40H单元的内容交换。

R0,#30H A,@R0 R7,A R1,#40H A,@R1 @R0,A

A,R7

;暂存外部RAM 30H单元的内容

;外部RAM 40H单元的内容送外部RAM 30H单元 ;外部RAM 30H单元的内容送外部RAM 40H单元

@R1,A

7.设位单元00H、01H中的内容为0,下列程序段执行后P1口的8条I/O线为何状态?位单元00H、01H的值。

START:CLR C

JC LP1 CPL C

;Cy=0

;A=56H=0101 0110B ;Cy=1 ;(01H)=1

;因ACC.2=1,转向LP2 ;该指令不执行 ;P1=A=0101 0111B

MOV A,#56H

SETB 01H JB ACC.2 ,

SETB 00H

LP2: MOV P1,A

RET

LP1: MOV ACC.0,C ; ACC.0=1

解:每一条指令执行后的结果如注释字段所标。P1=0101 0111B,即P1口的8条I/O线中P0.0、P0.1、P0.2、P0.4、P0.6为高电平状态,P0.3、 P0.5、 P0.7为低电平状态,

8.下列指令哪些是非法指令? (1) CPL B

(2) ADDC B,#20H (4)MOV R1,R2

(6) CJNE @R0,#64H,LABEL (8) DJNZ @R0,LABEL (10) POP @R1 (12)MOV R7, @R0 (14) MOV R1,#1234H

(16) ORL C,/ACC.5 (18) DEC DPTR (20) SWAP B

(22) MOVC A,@A+DPTR (24) SUB A,#12H (26) DIV AB (28) JMP LABEL (30) RETI (5)×;

(6)√;

(7)×;

(8)×;

(9)√;

(3) SETB 30H,0

(5) SUBB A,@R2 (7) MOVX @R0,20H (9) PUSH B (11) RL B (13) RLC A (15) ANL R0,A (17) XRL C,ACC.5 (19) XCHD A ,R1 (23) XCH A,R1 (25) MUL A,B (27)DA A

(29) LJMP LABEL 解:(1)×; (2)×;

(21) MOVX A,@A+DPTR

(3)×; (4)×;

(10)×; (11)×; (12)×; (13)√; (14)×; (15)×; (16)√; (17)×; (18)×;

(19)×; (20);× (21)×; (22)√; (23)√; (24) ×;(25)×; (28)×; (29)√; (30)√。 9.执行下列程序填结果。

MOV SP,#2FH MOV A,#50H MOV B,#51H PUSH ACC PUSH B POP ACC POP B

;SP=2FH ;A=50H ;B=51H

;SP=30H,(30H)=50H ;SP=31H,(31H)=51H ;A=51H,SP=30H ;B=50H.SP=2FH

(26)√; (27)√;

结果:SP= ,A= ,B= ,(30H)= ,(31H)= 。

解:结果:SP=2FH ,A=51H,B=50H,(30H)=50H,(31H)=51H。

10.SP=70H,MA=1000H,SUBPR=4060H。试问下列程序中哪些是正确的?为什么?哪些程序

最好,为什么?若SUBPR=1060H,则哪个程序最好,为什么?

(1)MA: ACALL SUBPR (2)MA: LCALL SUBPR (3)MA: LJMP 4000H

┋ 4000H: ACALL SUBPR

LJMP 1003H

解:因为ACALL指令转去子程序的入口地址与ACALL的下一条指令必须在同一个2k范围,而LCALL指令转去子程序的入口地址与LCALL的下一条指令范围为64k。所以当SUBPR=4060H时,程序(2)和(3)是正确的,(1)的程序是错误的,程序(2)较(3)快捷;当SUBPR=1060H时,程序(1)和(2)是正确的,程序(3)是错误的,程序(1)较程序(2)节省一个存储单元。

11.设A=53H,PSW=81H,转移指令所在地址为3090H,执行下列各条指令后,PC=? (1)JNZ 12H (2)JNC 34H (3)JNB P,56H (4)JBC AC,78H (5)CJNE A,#50H,9AH (6)DJNZ PSW,0BCH (7)SJMP 0B4H

解:(1)因A≠0,所以转移,故PC=(3090H+2)+12H=30A4H; (2)因Cy=1,所以不转移,故PC=3090H+2=3092H; (3)因P=1,所以不转移,故PC=3090H+3=3093H; (4)因AC=0,所以不转移,故PC=3090H+3=3093H;

(5)因A≠50H,所以转移,故PC=(3090H+3)+9AH=3093H-66H=302DH(注意:补码数9AH的

最高位为1属负数,故应先求得其真值为-66H)

(6)因PSW=PSW-1=80H≠0,所以转移,故PC=(3090H+3)+0BCH=3093H-44H=304FH (7)无条件转移,PC=(3090H+2)+0B4H=3092H-4CH=3046H。 12.阅读下列程序,说明其功能。

MOV R1,#40H MOV A,@R1 RL A

;设(40H)=x ;A= x ;A=2x

联系合同范文客服:xxxxx#qq.com(#替换为@)