单片机原理及应用(姜志海第3版)习题参考答案

作寄存器时,可以作为一般的RAM区使用。 (2)位寻址区

20H~2FH单元是位寻址区。这16个单元(共计16 × 8 = 128位)的每一位都赋予了一个位地址,位地址范围为00H~7FH。位地址区的每一位都可当做软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存入位寻址区内。

00H…07H 08H…0FH 10H…17H 18H…1FH 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 30H…7FH 0组 1组 2组 3组 07 0F 17 1F 27 2F 37 3F 47 4F 57 5F 67 6F 77 7F 06 0E 16 1E 26 2E 36 3E 46 4E 56 5E 66 6E 76 7E 05 0D 15 1D 25 2D 35 3D 45 4D 55 5D 65 6D 75 7D 04 0C 14 1C 24 2C 34 3C 44 4C 54 5C 64 6C 74 7C 03 0B 13 1B 23 2B 33 3B 43 4B 53 5B 63 6B 73 7B 02 0A 12 1A 22 2A 32 3A 42 4A 52 5A 62 6A 72 7A 01 09 11 19 21 29 31 39 41 49 51 59 61 69 71 79 00 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78 工作寄存器区 位 寻 址 区 数据缓冲区 该区域当不被用做位寻址区时,可以作为一般的RAM区使用。 (3)数据缓冲区

30H~7FH是数据缓冲区,即用户RAM,共80个单元。

由于工作寄存器区、位寻址区、数据缓冲区统一编址,使用同样的指令访问,这三个区的单元既有自己独特的功能,又可统一调度使用。因此,前两个区未使用的单元也可作为用户RAM单元使用,使容量较小的片内RAM得以充分利用。

4.简述程序状态字PSW中各位的含义。

程序状态字PSW是一个8位寄存器,它保存指令执行结果的特征信息,为下一条指令或以后的指令的执行提供状态条件。PSW中的各位一般是在指令执行过程中形成的,但也可以根据需要采用传送指令加以改变。其各位定义如图所示。

PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 P C AC F0 RS1 RS0 OV —— ① 进位标志C(PSW.7)

在执行某些算术运算类、逻辑运算类指令时,可被硬件或软件置位或清零。它表示运算结果是否有进位或借位。如果在最高位有进位(加法时)或借位(减法时),则C = 1,否则C = 0。

② 辅助进位(或称半进位)标志位AC(PSW.6)

它表示两个8位数运算,低4位有无进(借)位的状况。当低4位相加(或相减)时,若D3位

第 5 页 共 29 页 m

向D4位有进位(或借位),则AC = 1,否则AC = 0。在BCD码运算的十进制调整中要用到该标志。

③ 用户自定义标志位F0(PSW.5)

用户可根据自己的需要为F0赋予一定的含义,通过软件置位或清零,并根据F0 = 1或0来决定程序的执行方式,或系统某一种工作状态。

④ 工作寄存器组选择位RS1、RS0(PSW.4、PSW.3)

可用软件置位或清零,用于选定当前使用的4个工作寄存器组中的某一组。 ⑤ 溢出标志位OV(PSW.2)

做加法或减法时由硬件置位或清零,以指示运算结果是否溢出。在带符号数加减运算中,OV = 1表示加减运算超出了累加器所能表示的数值范围(–128~+127),即产生了溢出,因此运算结果是错误的。OV = 0表示运算正确,即无溢出产生。

执行乘法指令MUL AB也会影响OV标志,当积大于255时,OV = 1,否则OV = 0;执行除法指令DIV AB也会影响OV标志,如B中所存放的除数为0,则OV = 1,否则0V = 0。

⑥ 奇偶标志位P(PSW.0)

在执行指令后,单片机根据累加器A中1的个数的奇偶自动将该标志置位或清零。若A中1的个数为奇数,则P = 1,否则P = 0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。

5.简述MCS?51单片机程序存储器的几个特殊入口地址的含义。 0000H:程序入口地址

0003H:外部中断0中断服务程序入口地址

000BH:定时器/计数器0溢出中断服务程序入口地址 0013H:外部中断1中断服务程序入口地址

001BH:定时器/计数器1溢出中断服务程序入口地址 0023H:串行口发送/接收中断服务程序入口地址

6.位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?

二者存储的数据位数不一样。位地址7FH存放一位二进制数,字节地址7FH存放8为二进制数。 位地址7FH具体在内存中字节地址为20H的最高位上。

7.试分别说明程序计数器PC和堆栈指针SP的作用。复位后PC和SP各为何值?

程序计数器PC是一个16位专用寄存器,其内容表示下一条要执行的指令的地址。复位后为0000H。

MCS?51单片机的堆栈是在片内RAM中开辟的一个专用区。堆栈指针SP是一个8位专用寄存器,用来存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指定的地址单元;出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。因此SP总是指向栈顶。复位后为07H。

8.MCS?51单片机设置4组工作寄存器,开机复位后,CPU使用的是哪组寄存器?它们的地址如何?CPU如何改变当前工作寄存器组?

第0组。字节地址为00H~07H。

第 6 页 共 29 页 m

通过PSW的RS1、RS0来改变。

工作寄存器组的选择表

PSW.4(RS1) 0 0 1 1 PSW.3(RS0) 0 1 0 1 当前使用的工作寄存器组 R0~R7 0组(00H~07H) 1组(08H~0FH) 2组(10H~17H) 3组(18H~1FH)

9.什么是时钟周期、机器周期和指令周期?当外部的振荡频率是8MHz时,8051单片机的机器周期为多少?

MCS?51单片机的时序由下面4种周期构成。 (1)振荡周期

振荡周期是指为单片机提供定时信号的振荡源的周期。 (2)状态周期(时钟周期)

两个振荡周期为一个状态周期,用S表示。两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。在状态周期的前半周期P1有效时,通常完成算术逻辑运算;在后半周期P2有效时,一般进行内部寄存器之间的传输。 (3)机器周期

CPU执行一条指令的过程可以划分为若干阶段,每一阶段完成某一项基本操作,如取指令、存储器读/写等。通常把完成一个基本操作所需要的时间称为机器周期。 (4)指令周期

指令周期是指执行一条指令所占用的全部时间,它以机器周期为单位。MCS?51系列单片机除乘法、除法指令是4机器周期指令外,其余都是单周期指令和双周期指令。若用12MHz晶体振荡器(晶振),则单周期指令和双周期指令的指令周期时间分别是1μs和2μs,乘法和除法指令为4μs。

通过上面的分析,我们可以看出,外部晶振的二分频是MCS?51单片机的内部时钟周期,6个时钟周期构成了单片机的机器周期。

如果单片机的外部晶振是8MHz,则其内部的机器周期是1.5μs。

12.已知PSW = 10H,则工作寄存器R0的地址是 10H ,R4的地址是 14H 。

第 7 页 共 29 页 m

第3章 MCS?51系列单片机指令系统

1.访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。 访问外部数据存储器: MOVXA,@DPTR MOVX@DPTR,A MOVXA,@Ri MOVX@Ri,A

访问程序存储器:

MOVCA,@A+DPTR MOVCA,@A+PC

2.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H、62H、30H、31H、DPTR及SP的内容将有何变化?

PUSH 30H PUSH31H POP DPL POP DPH

MOV 30H,#00H MOV 31H,#0FFH

(61H)=24H (62H)=10H (30H)=00H (31H)=0FFH (DPTR)=2410H (SP)=60H

3.设(A) = 40H,(R1) = 23H,(40H) = 05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?

XCH A,R1 XCHDA,@R1

(A)=25H (R1)=40H (40H)=03H

4.设(A) = 01010101B,(R5) = 10101010B,分别写出执行ANL A,R5; ORL A,R5;XRL A,R5指令后的结果。

00000000B 11111111B 11111111B

5.简述转移指令AJMP addr11,SJMP rel,LJMP addr16及JMP @A + DPTR的应用。 AJMP addr11:2K范围内的转移;SJMP rel:256字节复位内的转移;

LJMP addr16:64K范围内的转移;JMP @A + DPTR:在某一地址开始的256字节范围内的转移。 6.试用三种方法实现累加器A和寄存器B的内容交换。 (1) (2) (3)

MOV MOV MOV PUSH PUSH POP POP MOV XCH

R0,A A,B B,R0 A B A B R0,B A,R0

第 8 页 共 29 页 m

联系客服:779662525#qq.com(#替换为@)