“单片机原理与接口技术”复习题
一、
填空
1、若外接晶振为6MHz,则8031单片机的振荡周期为 1/6μs ,时钟周期为 1/3μs ,机器周期为 2μs ,指令周期最短为 2μs ,最长为 8μs 。
2、SP是 堆栈指针寄存器,PC是 指令指针寄存器 ,DPTR是 数据指针寄存器 。
3、外接程序存储器的读信号为 OE* 低有效 ,外接数据存储器的读信号为 OE* 。
4、程序中“LOOP:SJMP rel”的相对转移以转移指令所在地址为基点向前(大地址方向)
最大可偏移 +127 个单元地址,向后(小地址方向)最大可偏移 -128 个单元地址。
5、“MOVC A, @A+DPTR”指令为 基址加变址寻址或变址寻址 寻址方式。 6、单片机寻址方式是指寻找 操作数所在地址 或 转移目标地址 的方式,常用的寻址方式有 立即寻址 、 直接寻址 、 寄存器寻址 、 寄存器间接寻址 、 变址寻址 等。
7、8031单片机内存20H的第7位,它的位地址为 07H 。
8、循环结构程序中循环控制的实现方法有 DJNZ 和 CJNE 。 9、循环结构程序中,当循环次数已知时,应采用 DJNZ 控制法,循环次数未知时,应采用 CJNE 控制法。
10、80C51单片机的位寻址区包括 20H-2FH 和 可按位寻址的SFR 。 11、由8031组成的单片机系统在工作时,EA引脚应该接 地 (我查过课本,这个是正确的) 。 12、LJMP的跳转范围是 64KB ,AJMP的跳转范围是 2KB ,SJMP的跳转范围是 -128B-+127B 。
13、若A中的内容为68H,那么P标志位为 1 。
14、单片机上电复位时PC= 0000H ,SP= 07H ;而工作寄存器则缺省采用第 0 组,这组寄存器的地址范围是 00H-07H 。
15、JZ rel 的操作码地址为1000H,rel=20H,它转移的目标地址为 1022H 。 16、8051内部有 4个8位的 并行口,P0口直接作输出口时,必须外接 上拉电阻 ;并行口作输入口时,必须先 置1 ,才能读入外设的状态。
17、MCS-51的堆栈只可设置在片内RAM ,其最大长度为 128 ,存取数据的原则是 先进后出 。堆栈寄存器SP是 8 位寄存器,用来存放 栈顶指针 。 18、假定(SP)=40H , (39H)=30H,(40H)=60H。执行下列指令:
POP DPH POP DPL
后,DPTR的内容为 6030H ,SP的内容是 38H 。
1
19、CJNE <目的字节>,<源字节>,rel属于五大类指令中的__控制转移 _ ______类指令,其操作码助记符含义是__比较不等则转移_ __________。 二、
选择题
1、8031单片机的( )口的引脚,还具有外部中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P3 2、下列指令中不影响标志位CY的指令有( )。
a)ADD A,20H b)CLR C c)RRC A d)INC A 3、当需要从MCS-51单片机程序存储器取数据时,采用的指令为( )。 a)MOV A, @R1 b)MOVC A, @A + DPTR c)MOVX A, @ R0 d)MOVX A, @ DPTR
4、8031单片机中既可位寻址又可字节寻址的单元是( ) a)20H b)30H c)00H d)70H 5、下列哪条指令是正确的( )
a) PUSH R2 b) ADD R0,A c) MOV A,@DPTR d) MOV
@R0,A
6、执行中断返回指令时,从堆栈顶部弹出的内容送给( ).
(A) A (B) CY (C)PC (D) DPTR
7、A7H和5BH两个立即数相加后,和为( ),(CY)是( )。
(A)1CH,0 (B) C1H,0 (C) 02H,1 (D) C1H,1
8、若(A)=86H,(PSW)=80H,则执行RRC A指令后,A的内容是( )。 (A)C3H (B) B3H (C) 0DH (D) 56H 9、如果(P0)=65H ,则当
CPL P0.2 SETB C MOV P0.4 ,C 执行后(P0)=( )
(A)61H (B) 75H (C) 71H (D) 17H
10、若片内(60H)=8H,(R0)=60H,A=7H,则执行指令 后,片内(60H)=7H. (A)MOV R0,A; (B)MOVX R0,A; (C)DEC @R0; (D)DEC R0;
11、MCS--51单片机在执行MOVX A,@DPTR指令时,将发出 信号。
(A)地址信号和RD信号;(B)数据信号和RD信号; (C)地址信号和WR信号;(D)数据信号和WR信号; 12、调用指令ACALL 的调用范围是 。
2
(A)2K (B)64K (C)256 (D)512 13、SJMP ﹩ 指令跳转的偏移量范围为: 。 (A)-128~127; (B)0~256;
(C)0~2047;
(D)0~65535;
14、执行MOV PSW,#08H指令后,被选中的当前工作寄存器R0~R7是: 。
(A)第0组
(B)第1组
(C)第2组
(D)第3组
15、复位后执行PUSH 00H,是把: 。
(A)R0压入08单元
(B)00H压入07H单元
三、判断题(对者打√,错者打×)
1、 MCS-51系列芯片复位后堆栈设置成从07H单元开始使用。× 2、 MCS-51中工作寄存器R7的实际物理地址与PSW中内容有关。 3、 DA A指令只能用在减法指令之后起到十进制调整的作用。× 4、 使用8031的MCS-51系统其EA引脚必须接地。× 5、 中断服务程序的最后一条指令是RET。×
6、 P2口既可以作为I/O使用,又可以作地址/数据复用口使用。× 7、 MOV A,30H的源操作数为立即寻址方式。× 8、 MOV A,@A+DPTR是一条查表指令。×
9、 MUL AB的执行结果是高8位在A中,低8 位在B中。× 10、AJMP跳转空间最大可达到64KB 。×
11、DPTR是由DPH和DPL两个8位特殊寄存器组成的。 12、汇编语言源程序中的伪指令汇编成目标程序时不产生机器码。 13、MCS-51系列芯片特殊寄存器区按字节寻址时可以采用间接寻址。× 14、8051单片机的算术逻辑部件能完成带借位和不带借位的减法运算。× 15、在MCS-51中,为使准双向的I/O口工作在输入方式,必须先预置为1。 四、改错
请判断下列各条指令的书写格式是否有错,如有错说明原因: 1.MUL R0R1;乘法指令的操作数只能用AB 2.MOV A,@R7;寄存器间接寻址不能使用R7
3.MOV A,#3000H;A是8位的,#3000H是个十六位的立即数,字长不匹配 4.MOVC @A+DPTR, A;该指令只读不写
5.LJMP #1000H;该指令的操作数是转移地址而不能是立即数 6. MOVX @R0,B ;片外RAM的数据传送必须借助累加器A 7. MOV A,30H
3
8. MOVX A,30H 9. ADDC A,R7
;片内RAM的数据传送只能通过MOV指令
10. SUB A,R2 ;51系列的减法指令助记符是SUBB
11. ANL #99H ,36H ;该指令的目的操作数只能是A或直接地址,而不能是立即数 12. MOV C,ACC.0
13. ORL P1.0,P3.1 ;逻辑位操作指令的两个操作数不能同时是直接地址 14. JBC P0,LL1 15. ACALL PROC
;该指令的第一个操作数是针对位地址的,而不是字节地址
16. MOV 20H , R1 ( )
17. ADDC A , 2030H (直接寻址的地址必须是片内RAM的地址 ) 18. CLR A ( )
19. MOVX 40H , #30H( MOVX指令的读写必须借助累加器并且采用寄存器间接寻址方式)
20. ORG 3000H ( ) 21. MOVC @A+PC , A( 该指令只读不写)
22. MOVX A ,2000H ( MOVX指令必须使用寄存器DPTR存放片外RAM的地址,采用间接寻址方式)
23. DJNZ #data , rel (该指令不能用立即数做第一个操作数 )
24. INC @R5 ( 寄存器间接寻址的寄存器不能使用R5) 25. DEC DPTR (针对DPTR寄存器只有加1指令没有减1指令 )
26. MOV R1 ,@ R2 (传送指令的两个操作数不能同时为寄存器 ) 27. SWAP R1 (该指令只能用累加器A做操作数)
28. SETB 2000H ( 该指令的操作数只能是位地址) 29. JZ A , LOOP (该指令是单操作数指令,累加器A是隐含的操作数 ) 30 DA R2 ( 该指令只能用累加器A做操作数 ) 五、按题意编写程序并加以注释,加上必要的伪指令。
1、 将40H中ASCII码转换为一位BCD码,存入42H的高4位中。 MOV A,40H CLR C SUBB A,#30H SWAP A MOV 42H,A END
2、 将片内RAM的20H-24H单元中5个压缩BCD码拆开,并转换为10个ASCII码,依
次存入2100H-2109H单元中。
MOV R0,#20H
4
MOV DPTR,#2100H MOV R7,#5
LOOP1:MOV A,@R0
MOV 30H,A MOV R2,#2 SWAP A
LOOP:ANL A,#0FH
ADD A,#30H MOVX @DPTR,A INC DPTR MOV A,30H DJNZ R2,LOOP INC R0
DJNZ R7,LOOP1
3、 请编写多字节加法子程序。入口条件有3个,即字节长度、加数首地址和被加数首地址,
累加和存放地址与加数存放单元相同。请标注出口结果。对源程序加注释和伪指令。 JIAFA:CLR C LOOP:MOV A,@R0 ADDC A,@R1 MOV @R1,A
INC R0 INC R1 DJNZ R7,LOOP
RET
4、 在片外数据存储器8000H和8001H单元内各有一个小于0CH的数,请编写源程序求出
这两个数的平方之和,要求采用调用查表子程序的方法实现。平方和存放在片内RAM中。对源程序加注释和伪指令。 MOV DPTR,#8000H MOVX A,@DPTR MOV 30H,A INC DPTR MOVX A,@DPTR MOV 31H,A MOV DPTR,#TAB MOV A,30H MOVC A,@A+DPTR
5