一个机器周期为多少微秒?
答:8051的一个指令周期通常由1~4个机器周期组成;一个机器周期由6个时钟周
期组成;当振荡频率为10MHz时,一个机器周期为0.2微秒。
14.在8051扩展系统中,片外程序存储器和片外数据存储器共处同地址空间,为什
么不会发生总线冲突?
答:访问片外程序存储器使用MOVC类指令、访问片外数据存储器使用MOVX类指令,
因使用不同的指令产生不同的控制信号,所以不会发生总线冲突。
15.8051的P3口具有哪些第二功能? 答:P3.0的第二功能是RXD(串行输入口)
P3.1的第二功能是 TXD(串行输出口) P3.2的第二功能是INT0 (外部中断0输入) P3.3的第二功能是INT1(外部中断1输入) P3.4的第二功能是T0(定时器0外部输入) P3.5 的第二功能是T1(定时器1外部输入)
P3.6的第二功能是WR(外部数据存储器写脉冲输出) P3.7的第二功能是RD(外部数据存储器读脉冲输出)
16.位地址7CH与字节地址7CH有什么区别?位地址7CH具体在内存中什么位置? 答:位地址7CH指向一个存储位的地址;字节地址7CH指向一个存储单元的地址;位
地址7CH在内存中字节地址为2FH的D4位。
17.程序状态字PSW的作用是什么?常用的状态标志有哪几位?作用是什么? 答:程序状态字寄存器PSW相当于标志寄存器,用于存放指令执行结果的一些特征,供程序查询和判别之用。常用的状态标志有6位。CY:进位标志;AC:辅助进位;RS1和RS0:工作寄存器组选择位;OV:溢出标志;P:奇偶标志。
18.在程序存储器中,0000H,0003H,000BH,0013H,001BH,0023H这6个单元
有什么特定的含义?
答:在程序存储器中,有六个单元是分配给系统使用的,具有特定的含义。
0000H: 单片机系统复位后,PC=0000H,即程序从0000H开始执行指令。通常在0000H ~00002H单元安排一条无条件转移指令,使之转向主程序的入口地址。
0003H: 外部中断0入口地址。
000BH: 定时器0溢出中断入口地址。 0013H: 外部中断1入口地址。
001BH: 定时器1溢出中断入口地址。
0023H: 串行口中断入口地址。
19.若P1~P3口作通用I/O口使用,为什么把它们称为准双向口? 答:用于输入时,必须先向相应端口的锁存器写入?1?。
习题三
一、简答题
1. 简述下列名词术语的基本概念:
指令、指令系统、程序、汇编语言指令。
2. MCS-51 单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?
3. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式? 4. MCS-51 单片机的指令系统可分为哪几类?试说明各类指令的功能。 5. 外部数据传送指令有哪几条?试比较下面每一组中两条指令的区别。
5
(1) MOVX A,@R0 ; MOVX A,@DPTR
MOVX A,@R0 和MOVX A,@DPTR指令均为外部数据传送指令,但访问的存
储空间大小不同
(2) MOVX @R0,A ; MOVX @DPTR,A 同上
(3) MOVX A,@R0 ; MOVX @R0,A A与外部数据存储器和外部数据存储器与A 之间的传送
6. 在 MCS-51 单片机片内RAM中,已知(30H)= 38H,(38H)= 40H,(40H)= 48H,
(48H)= 90H,分析下段程序中各指令的功能;说明源操作数的寻址方式,以及按序执行每条指令后的结果。
MOV A,40H MOV R0,A
;直接寻址 A=48H ;寄存器寻址 R0=48H
MOV @R0,30H ;直接寻址 (48H)=38H MOV 40H,38H ;直接寻址 (40H)=40H MOV R0,30H MOV 90H,R0
;直接寻址 R0=38H ;寄存器寻址 (90H)=38H
MOV 48H,# 30H ;立即寻址 (48H)=30H MOV A,@R0 ;寄存器间接寻址A=40H 7. DA A指令的作用是什么?怎样使用?
DA A指令的作用是在进行BCD码运算时,跟在ADD和ADDC指令之后,将相加后
存放在累加器A中的结果进行调整修正。
8. 试编程将片外数据存储器50H中的内容传送到片内RAM 54H 单元中。 MOV R0,#50H MOVX A,@R0 MOV 54H,A 9. 试编程将寄存器 R7 的内容传送到 R1中去。 MOV A,R7 MOV R1,A
10. 用两种方法实现累加器A与寄存器B的内容交换。 XCH A,B
或 MOV R0,A MOV A,B MOV B,R0
11. 试编程将片外 RAM 40H 单元的内容与 R1 的内容交换。 MOV B,R1 MOV
MOV
R0,#40H MOVX A,@R0 MOV R1,A A,B MOVX @R0,A
12. 若要完成以下的数据传送,应如何用MCS-51的指令来实现?
(1)R1内容传送到R0。
(2)外部RAM 20H单元内容R0。
(3)外部RAM 20H单元内容送内部RAM 20H单元。 (4)外部RAM 1000H单元内容送内部RAM 20H单元。 (5)外部ROM 20H单元内容R0。
(6)外部ROM 2000H单元内容送内部RAM 20H单元。
13. 已知:A= 0C9H,B= 8DH,CY= 1。
执行指令 ADDC A,B 结果如何? A=57H
执行指令 SUBB A,B 结果如何? A=3BH
6
14. 列举4条能使累加器 A清零的指令。 CLR A
MOV A,#00H AND A,#00H XOR A,ACC
15. 试用 3 种方法将累加器 A 中无符号数乘 2。 1) MOV B,#02 MUL AB 2) RL A
3) ADD A,ACC
16. 分析下列指令执行后, A及PSW中进位位CY、奇偶位P和溢出位OV的值。
(1) 当 A = 5BH 时; (2) 当 A = 5BH 时;
ADD ANL
A,# 8CH A,# 7AH
(3) 当 A = 5BH 时; (4) 当 A = 5BH,CY=1 时 ; XRL A,# 7FH SUBB A,# 0E8H
17. 试说明指令 CJNE @R1,#7AH,10H 的作用。若本指令地址为250H,其转
移地址是多少?
(@R1)与#7AH比较不等于转移,转移的偏移量为10H;其转移地址是263H 18. 参照例题21若系统的晶振频率为 5MHz,求子程序 DELAY 的延时时间。若想
加长或缩短延时时间,应怎样修改?
晶振频率为 5MHz时,1M=2.4微秒,子程序 DELAY 的延时时间共为
1002*2.4=2404.8微秒;若想加长或缩短延时时间可以增加/减少NOP指令或增加/减少循环
19. 试编一程序将外部数据存储器2100H单元中的高4位置“1”,其余位清“0”。
MOV A,#0F0H MOV DPTR,#2100H MOVX @DPTR,A 20. 试编程将内部数据存储器40H单元的第0位和第7位置“1”,其余位变反。 MOV A,40H CPL A
SETB ACC.0
SETB ACC.7 MOV 40H,A
21. 将 ACC.5 与80H位相与的结果,通过 P1.4 输出。 MOV C,80H ANL C,ACC.5
MOV P1.4,C
22. 使用位操作指令,求下面逻辑方程: (1) P1.7=ACC.0∧(B.0∨P2.1)∨P3.2 MOV C,B.0
7
ORL C,P2.1 MOV MOV
30H,C C,ACC.0
ANL C,30H ORL C,/P3.2 MOV
P1.7,C
(2) PSW.5=P1.3∧ACC.2∨B.5∧P1.1 MOV C,P1.3 ANL C, ACC.2 ORL C, B.5 ANL C,/P1.1
MOV PSW.5,C
(3) P2.3= P1.5∧B.4∨ACC.7∧P1.0
基本同上
三、分析计算
1. 已知A=7AH,R0=30H,(30H)=A5H,PSW=81H。问执行以下各指令的结果
(每条指令都以题中规定的数据参加操作)。
(1) XCH (2) XCH (3) XCH
A,R0 A,30H A,@R0
A=30H R0=7AH
P=0
A=A5H (30H)=7AH P=0 A=A5H (30H)=7AH P=0 A=75H (30H)=AAH A=A7H P=1
P=1
(4) XCHD A,@R0 (5) SWAP A (6) ADD (7) ADD (8) ADD
A,R0 A,30H A,#30H A=AAH CY=0 OV=1 P=0 A=1FH CY=1 OV=1 P=1 A=AAH CY=0 OV=1 P=0 A=ABH CY=0 OV=1 P=1 A=D4H CY=1 OV=0 P=0 A= A= A= A=
CY= OV= P= CY= P= CY= P= CY= P=
P= P=
(9) ADDC A,R0 (10) SUBB A,30H (11) ADD (12) DA (13) RL (14) RLC (15) CJNE (16) CJNE
A,#30H A A A
A,#30H,00 A= CY= A,30H,00 A= CY=
2. 设A=82H,R0=17H,(17H)=34H,问执行以下指令后A=? ANL A,#17H ;A=02H ORL 17H,A ;A=02H (17H)=36H XRL CPL
A,@R0 A
;A=34H
;A=CBH
3. 已知:A=75H,PSW=81H,转移指令所在地址为2080H,当执行以下指令后,
PC值等于多少? (1) 执行JNZ PC=2094H (2) 执行JNC PC=2082H (3) 执行JB
PC=20D8H (4) 执行JBC
12H后,PC值=? 4H后, PC值=? P,55H后, PC值=? AC,78H后, PC值=?
A,#50H,9AH后, PC值=?
PC=2083H
(5) 执行CJNE PC=201DH
8