单片机课后习题答案 下载本文

特殊功能寄存器 B A(ACC) PSW IP P3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 寄存器B 累加器 功 能 名 称 物 理 地 址 F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H 可否位寻址 可以 可以 可以 可以 可以 可以 可以 不可以 可以 可以 不可以 不可以 不可以 不可以 不可以 可以 不可以 不可以 不可以 不可以 可以 程序状态字(标志寄存器) 中断优先级控制寄存器 P3口数据寄存器 中断允许控制寄存器 P2口数据寄存器 串行口发送/接收数据缓冲寄存器 串行口控制寄存器 P1口数据寄存器 T1计数器高8位寄存器 T0计数器高8位寄存器 T1计数器低8位寄存器 T0计数器低8位寄存器 定时器/计数器方式控制寄存器 定时器控制寄存器 电源控制寄存器 数据指针寄存器高8位 数据指针寄存器低8位 堆栈指针寄存器 P0口数据寄存器

23. DPTR是什么寄存器?它的作用是什么?

数据指针DPTR是16位的专用寄存器,它由两个8位的寄存器DPH(高8位)和DPL(低8位)组成。专门用来寄存片外RAM及扩展I/O口进行数据存取时的地址。编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用(即高位字节寄存器DPH和低位字节寄存器DPL)。

DPTR主要是用来保存16位地址,当对64KB外部数据存储器寻址时,可作为间址寄存器使用,

24. 8051单片机的PSW寄存器各位标志的意义如何?

程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:

PSW.7(Cy):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。 PSW.5(F0):用户标志位。 PSW.4、PSW.3(RS1和 RS0):寄存器组选择位。 PSW.2(OV):溢出标志位。 PSW.1(空缺位):此位未定义。 PSW.0(P):奇偶校验位。

25. 开机复位后,CPU使用的是哪组工作寄存器(R0-Rn)?它们的地址是什么?CPU如何确定和改变当前工作寄存器组(R0-Rn)?

开机复位后,CPU使用的是第0组工作寄存器。它们的地址是00H-07H。CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组。 26. 8051单片机的片内、片外存储器如何选择?

程序存储器通过EA/Vpp引脚选择。若EA=0,则允许使用片内ROM;若EA=1则允许使用片外ROM。

数据存储器通过指令区分:访问片内RAM采用MOV指令,访问片外RAM采用MOVX指令。

27. MCS-51单片机的时钟周期、机器周期、指令周期是如何定义的?当主频为12MHz的时

5

候,一个机器周期是多长时间?执行一条最长的指令需要多长时间?

时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。时钟周期又称为节拍(用P表示)。时钟周期是时序中的最小单位。一个状态有两个节拍,

机器周期定义为实现特定功能所需的时间。MCS-51的机器周期由12个时钟周期构成。 执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。MCS-51的指令可能包括1~4个不等的机器周期。

当MCS-51的主频为12MHz时,一个机器周期为1?s。执行一条指令需要的最长时间为4?s。

28. 8051单片机复位后,各寄存器的初始状态如何?复位方法有几种?

8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态如下:

寄存器 PC ACC B PSW SP DPTR P0—P3 TMOD 复位时内容 0000H 00H 00H 00H 07H 0000H FFH ××000000B 寄存器 TCON TL0 TH0 TH1 TH1 SCON SBUF PCON 复位时内容 0×000000B 00H 00H 00H 00H 00H 不确定 0×××0000B 单片机复位方法有:上电自动复位,按键电平复位和外部

脉冲三种方式。

1. 指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。

2. 在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地址,而DPTR是为访问(数据)存储器提供地址。

3. 在变址寻址方式中,以( A )作变址寄存器,以( DPTR )或( PC )作基址寄存器。

4. 假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC后,把程序存储器( 1031H )单元的内容送入累加器A中。

5. 8051执行完MOV A,#08H后,PSW的( D )位被置位。

A:C B:F0 C:OV D:P

6. 指出下列指令中的源操作数的寻址方式

(1)MOV R0,#30H 立即寻址 (2)MOV A,30H 直接寻址

(3)MOV A,@R0 寄存器间接寻址 (4)MOVX A,@DPTR 寄存器间接寻址 (5)MOVC A,@A+DPTR 变址寻址 (6)MOV P1,P2 直接寻址 (7)MOV C,30H 位寻址 (8)MUL AB 寄存器寻址 (9)MOV DPTR,#1234H 立即寻址

(10)POP ACC 寄存器间接寻址

7. 指出下列各指令在程序存储器中所占的字节数

(1)MOV DPTR,#1234H 3字节 (2)MOVX A, @DPTR 1字节

6

(3)LJMP LOOP 3字节 (4)MOV R0,A 1字节 (5)AJMP LOOP 2字节 (6)MOV A,30H 2字节 (7)SJMP LOOP 2字节 (8)MOV B,#30H 2字节

8.8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?

MCS-51单片机指令系统按功能可分为5类: (1)数据传送指令 (2)算术运算指令

(3)逻辑运算和移位指令 (4)控制转移指令

(5)位操作指令

MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表: 寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 使用的变量 R0~R7;A、B、DPTR、C @R0、@R1、SP @R0、@R1、@DPTR @A+PC、@A+DPTR PC+偏移量 寻址范围 立即数 程序存储器ROM; 内部RAM低128个字节;特殊功能寄存器SFR 位地址空间 四组通用寄存器,A、B、DPTR、C 内部RAM 外部RAM 程序存储器 程序存储器 内部RAM低128B位寻址区 可位寻址的特殊功能寄存器SFR位 9.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式? 访问特殊功能寄存器,应采用直接寻址、位寻址方式。 访问外部数据存储器,应采用寄存器间接寻址方式。 在0~255B范围内,可用寄存器R0、R1间接寻址:

MOVX A,@R0 或 MOVX A,@R1 MOVX @R0,A 或 MOVX @R1,A

在0~64KB范围内,可用16位寄存器DPTR间接寻址:

MOVX A,@DPTR MOVX @DPTR,A

10.“DA A”指令的作用是什么?怎样使用?

这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。

11.片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?

位寻址是直接寻址方式的一种。虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过以下的方法区分:

1. 通过指令操作码(指令的类型)区分:

位操作只有17条指令,位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。

MOV C,bit CPL bit (C) JB bit,rel

7

MOV bit,C ORL C,bit (/bit) JNB bit,rel CLR bit (C) ANL C,bit (/bit) JC rel SETB bit (C) JBC bit,rel JNC rel

位操作只有MOV、 CLR 、SETB、 CPL 、ORL、 ANL 、JB 、JNB、 JBC、 JC、 JNC几种操作码,其中:JB、JNB、JBC、JC、JNC是位寻址特有的。

2. 当指令操作码一样时,可通过操作数的表现形式来区分。直接位地址的表示方法有: (1)直接使用位地址形式。如:MOV 00H, C

(2)字节地址加位序号的形式。如:MOV 20H.0, C (3)位的符号地址(位名称)的形式。如:ANL C, P

(4)字节符号地址(字节名称)加位序号的形式。如:CPL PSW.6 3. 可通过指令中的累加器区分:

位操作中的累加器为C,单元操作中的累加器为A。 12.SJMP, AJMP 和LJMP指令在功能上有何不同?

指令的转移范围不同。

SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。

13.在“MOVC A, @A+DPTR”和“MOVC A, @A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址? 使用中有何不同?

使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。

使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。

14.设片内RAM中的(40H)=50H,写出当执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?

MOV A, 40H MOV R0, A MOV A, #00 MOV @R0, A MOV A, #30H

MOV 51H, A

结果为:(A)=30H (R0)=50H (50H)=00H (51H)=30H 15.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H, 62H, 30H, 31H, DPTR及SP中的内容将有何变化?

PUSH 30H PUSH 31H POP DPL POP DPH MOV 30H, #00H MOV 31H, #0FFH

解:

结果为: 61H、62H单元为堆栈单元,其内容已被弹出栈。 (30H)=00H (31H)=0FFH (DPTR)=2410H (SP)=60H 16.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。

MOV A, 40H MOV R0, A MOV P1, #0F0H MOV @R0, 20H MOV 50H, R0 MOV A, @R0 MOV P2, P1

8