1、第 1 页 共 29 页 m 单片机原理及应用 (第 3 版) 习题参考答案 姜志海 黄玉清 刘连鑫 编著 电子工业出版社 目录 第 1 章 概述 . 2 第 2 章 MCS51 系列单片机硬件结构 . 4 第 3 章 MCS51 系列单片机指令系统 . 8 第 4 章 MCS51 系列单片机汇编语言程序设计 . 11 第 5 章 MCS51 系列单片机硬件资源的应用 . 16 第 6 章 MCS51 系列单片机并行扩展接口技术 . 20 第 7 章 MCS51 系列单片机串行总线扩展技术 . 25 第 8 章 单片机应用系统设计 . 27 第 2 页 共 29 页 m 第 1 章 概述 1简
2、述微型计算机的结构及各部分的作用 微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。 运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。 通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元 CPU( Central Process Unit)。 2微处理器、微型计算机、微型计算机系统有什么联系与区别
3、? 微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。它具有解释指令、执行指令和与外界交换数据的能力。其内部包括三部分:运算器、控制器、内部寄存器阵列(工作寄存器组)。 微型计算机由 CPU、存储器、输入 /输出( I/O)接口电路构成,各部分芯片之间通过总线( Bus)连接。 以微型计算机为主体,配上外部输入 /输出设备、电源、系统软件一起构成应用 系统,称为微型计算机系统。 3简述在微型计算机中的地址总线、数据总线和控制总线的作用。 所谓总线,就是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。计算机元件级总线包括地址总线
4、 AB( Address Bus)、数据总线 DB( Data Bus)、控制总线 CB( Control Bus)三种。 ( 1)地址总线:地址总线是 CPU 用来向存储器或 I/O 接口传送地址信息的,是三态单向总线。地址总线的宽度决定了 CPU 可直接寻址的内存容量。通过地址总线确定要操作的存储单元或 I/O 接口的地址。 ( 2)数据 总线:数据总线是 CPU 与存储器及外设交换数据的通路,是三态双向总线。 ( 3)控制总线:控制总线是用来传输控制信号的,传送方向依据具体控制信号而定,如 CPU 向存储器或 I/O 接口电路输出读信号、写信号、地址有效信号,而 I/O 接口部件向 CP
5、U 输入复位信号、中断请求信号等。 4微型计算机是以 CPU 为核心,配上 ( 存储器 ) 、 ( 输入 /输出接口 ) 和系统总线组成的计算机。 5在计算机内部,一切信息的存取、处理和传递的形式是( C )。 A ASCII 码 B BCD 码 C二进制 D十六进制 6 0 9 的 ASCII码是( C )。 A 0 9 B 30 39 C 30H 39H D 40H 49H 第 3 页 共 29 页 m 7假设某 CPU 含有 16 根地址线, 8 根数据线,则该 CPU的最大寻址能力是多少 KB? 64KB 8简述单片机的定义、特点、应用领域和发展方向。 定义: 它采用一定的工艺手段将
6、CPU、存储器和 I/O 口集成在一个芯片上。 特点: 单片机 CPU 的抗干扰性强,工作温度范围宽,而通用微机 CPU 一般要求在室温下工作,抗干扰能力较弱。 单片机 CPU 可靠性强,在工业控制中,任 何差错都有可能造成极其严重的后果。 单片机 CPU 控制功能往往很强,数值计算能力较差,而通用微机 CPU 具有很强的数值运算能力,但控制能力相对较弱,将通用微机用于工业控制时,一般需要增加一些专用的接口电路。 单片机 CPU 指令系统比通用微机系统简单。 单片机 CPU 更新换代速度比通用微机处理器慢得多。 应用领域: 单片机在智能仪表中的应用 单片机在机电一体化中的应用 单片机在实时控制
7、中的应用 在军工领域的应用 单片机在分布式多机系统中的应用 在民用电子产品中的应用 发展趋势 : CPU 的改进 存储器的发展 片内 I/O 口的改进 一般单片机都有较多的并行口,以满足外围设备、芯片扩展的需要,并配以串行口,以满足对多机通信功能的要求。 提高并行口的驱动能力。这样可减少外围驱动芯片。有的单片机直接输出大电流和高电压,以便能直接驱动 LED 和 VFD(荧光显示器)等。 增加 I/O 口的逻辑控制功能。中、高档单片机的位处理系统能够对 I/O 口线进行位寻址及位操作,这加强了 I/O 口线控制的灵活性。 特殊的串行接口功能。为单片机构成网络系统提供更便利的条件。 外围电路内装化
8、 低功耗与工作电压范围加宽 低噪声与高可靠性技术 ISP 及 IAP 第 4 页 共 29 页 m 第 2 章 MCS51系列单片机硬件结构 1 MCS51 系列单片机内部有哪些主要的逻辑部件? MCS51 单片机是在一块芯片上集成了 CPU、 RAM、 ROM、定时器 /计数器和多种 I/O 功能部件,具有了一台微型计算机的基本结构,主要包括下列部件: 一个 8 位的 CPU、一个布尔处理机、一个片内振荡器、 128B 的片内数据存储器、 4KB 的片内程序存储器( 8031 无)、外部数据存储器和程序存储器的寻址范围为 64KB、 21 个字节的专用寄存器、4 个 8 位并行 I/O 接口
9、、一个全双工的 串行口、 2 个 16 位的定时器 /计数器、 5 个中断源、 2 个中断优先级、 111 条指令、片内采用单总线结构。 2 MCS51 单片机设有 4个 8 位并行端口,实际应用中 8 位数据信息由哪个端口传送? 16 位地址线怎样形成? P3 口有何功能? 8 位数据信息由 P0 口传送。 P2 口形成地址大高 8 位, P0 口结果锁存器形成地址的低 8 位。 P3 口除具有一般的输入 /输出功能,还具有第 2 功能: P3.0 RXD 串行口输入端 P3.1 TXD 串行口输出端 P3.2 INT0 外部中断 0 请求输入端,低电平有效 P3.3 INT1 外部中断 1
10、 请求输入端,低电平有效 P3.4 T0 定时器 /计数器 0计数脉冲输入端 P3.5 T1 定时器 /计数器 1计数脉冲输入端 P3.6 WR 外部数据存储器及 I/O 接口写选通信号输出端,低电平有效 P3.7 RD 外部数据存储器及 I/O 接口读选通信号输出端,低电平有效 3 MCS51 单 片机内部 RAM 区的功能结构如何分配? 4 组工作寄存器使用时如何选择?位寻址区域的字节范围是多少? MCS51 单片机片内 RAM 共有 128B,字节范围为 00H 7FH,可分为工作寄存器区、位寻址区、数据缓冲区共 3 个区域。 ( 1)工作寄存器区 00H 1FH 单元为工作寄存器区。工
11、作寄存器也称通用寄存器,用于临时寄存 8 位信息。工作寄存器分成 4 组,每组都是 8 个寄存器,用 R0 R7 来表示。程序中每次只用一组,其余各组不工作。使用哪一组寄存器工作,由程序状态字 PSW 中的 PSW.3( RS0)和 PSW.4( RS1)两位来选择 ,其对应关系如表所示。 该区域当不被用做工工作寄存器组的选择表 PSW.4(RS1) PSW.3(RS0) 当前使用的工作寄存器组 R0 R7 0 0 0 组( 00H 07H) 0 1 1 组( 08H 0FH) 1 0 2 组( 10H 17H) 1 1 3 组( 18H 1FH) 第 5 页 共 29 页 m 作寄存器时,可
12、以作为一般的 RAM 区使用。 ( 2)位寻址区 20H 2FH 单元是位寻址区。这 16 个单元(共计 16 8 = 128 位)的每一位都赋予了一个位地址,位地址范围为 00H 7FH。位地址区的每一位都可当做软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存入位寻址区内。 00H07H 08H0FH 10H17H 18H1FH 0组 工作寄存器区 1组 2组 3组 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 07 06 05 04 03 02 01 00 位 寻 址 区 0F 0E
13、 0D 0C 0B 0A 09 08 17 16 15 14 13 12 11 10 1F 1E 1D 1C 1B 1A 19 18 27 26 25 24 23 22 21 20 2F 2E 2D 2C 2B 2A 29 28 37 36 35 34 33 32 31 30 3F 3E 3D 3C 3B 3A 39 38 47 46 45 44 43 42 41 40 4F 4E 4D 4C 4B 4A 49 48 57 56 55 54 53 52 51 50 5F 5E 5D 5C 5B 5A 59 58 67 66 65 64 63 62 61 60 6F 6E 6D 6C 6B 6A
14、 69 68 77 76 75 74 73 72 71 70 7F 7E 7D 7C 7B 7A 79 78 30H7FH 数据缓冲区 该区域 当不被用做位寻址区时,可以作为一般的 RAM 区使用。 ( 3)数据缓冲区 30H 7FH 是数据缓冲区,即用户 RAM,共 80 个单元。 由于工作寄存器区、位寻址区、数据缓冲区统一编址,使用同样的指令访问,这三个区的单元既有自己独特的功能,又可统一调度使用。因此,前两个区未使用的单元也可作为用户 RAM 单元使用,使容量较小的片内 RAM 得以充分利用。 4简述程序状态字 PSW 中各位的含义。 程序状态字 PSW 是一个 8 位寄存器,它保存指令
15、执行结果的特征信息,为下一条指令或以后的指令的执行提供状态条件。 PSW 中的各位一般是在指 令执行过程中形成的,但也可以根据需要采用传送指令加以改变。其各位定义如图所示。 PS W .7 C AC F0 RS1 RS0 OV P PS W .6 PS W .5 PS W .4 PS W .3 PS W .2 PS W .1 PS W .0 进位标志 C( PSW.7) 在执行某些算术运算类、逻辑运算类指令时,可被硬件或软件置位或清零。它表示运算结果是否有进位或借位。如果在最高位有进位(加法时)或借位(减法时),则 C = 1,否则 C = 0。 辅助进位(或称半进位)标志位 AC( PSW.
16、6) 它表示两个 8 位数运算,低 4 位有无进(借)位的状况。当低 4 位相加(或相减)时,若 D3 位第 6 页 共 29 页 m 向 D4 位有进位(或借位),则 AC = 1,否则 AC = 0。在 BCD 码运算的十进制调整中要用到该标志。 用户自定义标志位 F0( PSW.5) 用户可根据自己的需要为 F0 赋予一定的含义,通过软件置位或清零,并根据 F0 = 1 或 0 来决定程序的执行方式,或系统某一种工作状态。 工作寄存器组选择位 RS1、 RS0( PSW.4、 PSW.3) 可用软件置位或清零,用于选定当前使用的 4 个工作寄存器组中的某一组。 溢出标志位 OV( PSW
17、.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 中
18、 1 的个数为奇数,则 P = 1,否则 P = 0。该标志对串行通信的数据传输非常有用 ,通过奇偶校验可检验传输的可靠性。 5简述 MCS51单片机程序存储器的几个特殊入口地址的含义。 0000H:程序入口地址 0003H:外部中断 0 中断服务程序入口地址 000BH:定时器 /计数器 0 溢出中断服务程序入口地址 0013H:外部中断 1 中断服务程序入口地址 001BH:定时器 /计数器 1 溢出中断服务程序入口地址 0023H:串行口发送 /接收中断服务程序入口地址 6位地址 7FH 与字节地址 7FH 有何区别?位地址 7FH 具体在内存中的什么位置? 二者存储的数据位数不一样。
19、位地址 7FH 存放一位二进制数, 字节 地址 7FH 存放 8 为二进制数。 位地址 7FH 具体在内存中 字节地址为 20H 的最高位上。 7试分别说明程序计数器 PC 和堆栈指针 SP的作用。复位后 PC 和 SP 各为何值? 程序计数器 PC 是一个 16 位专用寄存器,其内容表示下一条要执行的指令的地址。复位后为0000H。 MCS51 单片机的堆栈是在片内 RAM 中开辟的一个专用区。堆栈指针 SP 是一个 8 位专用寄存器,用来存放栈顶的地址。进栈时, SP 自动加 1,将数据压入 SP 所指定的地址单元;出栈时,将 SP 所指示的地址单元中的数据弹出,然后 SP 自动减 1。因
20、此 SP 总是指向栈顶。复位 后为 07H。 8 MCS51 单片机设置 4 组工作寄存器,开机复位后, CPU 使用的是哪组寄存器?它们的地址如何? CPU 如何改变当前工作寄存器组? 第 0 组。字节地址为 00H 07H。 第 7 页 共 29 页 m 通过 PSW 的 RS1、 RS0 来改变。 9什么是时钟周期、机器周期和指令周期?当外部的振荡频率是 8MHz 时, 8051 单片机的机器周期为多少? MCS51 单片机的时序由下面 4 种周期构成。 ( 1)振荡周期 振荡周期是指为单片机提供定时信号的振荡源的周期。 ( 2)状态周期(时钟周期) 两个振荡周期为一个状态周期,用 S
21、表 示。两个振荡周期作为两个节拍分别称为节拍 P1 和节拍P2。在状态周期的前半周期 P1 有效时,通常完成算术逻辑运算;在后半周期 P2 有效时,一般进行内部寄存器之间的传输。 ( 3)机器周期 CPU 执行一条指令的过程可以划分为若干阶段,每一阶段完成某一项基本操作,如取指令、存储器读 /写等。通常把完成一个基本操作所需要的时间称为机器周期。 ( 4)指令周期 指令周期是指执行一条指令所占用的全部时间,它以机器周期为单位。 MCS51 系列单片机除乘法、除法指令是 4 机器周期指令外,其余都是单周期指令和双周期指令。若用 12MHz 晶 体振荡器(晶振),则单周期指令和双周期指令的指令周期
22、时间分别是 1s 和 2s ,乘法和除法指令为 4s 。 通过上面的分析,我们可以看出,外部晶振的二分频是 MCS51 单片机的内部时钟周期, 6 个时钟周期构成了单片机的机器周期。 如果单片机的外部晶振是 8MHz,则其内部的机器周期是 1.5s 。 12已知 PSW = 10H,则工作寄存器 R0 的地址是 10H , R4的地址是 14H 。 工作寄存器组的选择表 PSW.4(RS1) PSW.3(RS0) 当前使用的工作寄存器组 R0 R7 0 0 0 组( 00H 07H) 0 1 1 组( 08H 0FH) 1 0 2 组( 10H 17H) 1 1 3 组( 18H 1FH) 第
23、 8 页 共 29 页 m 第 3 章 MCS51系列单片机指令系统 1访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。 访问外部数据存储 器: MOVXA,DPTR MOVXDPTR,A MOVXA,Ri MOVXRi,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 30
24、H, #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 指令后的结果 。
25、 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) MOV R0, A MOV A,B MOV B,R0 (2) PUSH A PUSH B POP A POP B (3) MOV
26、 R0, B XCH A,R0 第 9 页 共 29 页 m MOV B,R0 7写出实现下列要求的指令或程序片段。 ( 1)将内部 RAM20H 单元内容与累加器 A内容相加,结果存放在 20H 单元中。 ( 2)将内部 RAM30H 单元内容与内部 RAM31H 单元内容相加,结果存放到内部 RAM31H 单元中。 ( 3)将内部 RAM20H 单元内容传送到外部 RAM2000H 单元中。 ( 4)使内部 RAM20H 单元的 D7 和 D3位清零,其他位保持不变。 ( 5)使内部 RAM20H 单元的 D7 和 D3位置 1, D5 位清零,其他位保持不变。 ( 6)使内部 RAM20
27、H 单元的 D7 和 D3位置 1, D5 位取反,其他位保持不变。 (1) ADD A,20H MOV 20H,A (2) MOV A,30H ADD A,31H MOV 31H,A (3) MOV A,20H MOV DPTR,#2000H MOVX DPTR,A (4) CLR 03H CLR 07H 或 : ANL 20H,#01110111B (5) SETB 03H SETB 07H CLR 05H 或 : ORL 20H,#10001000B ANL 20H,#11011111B (6) SETB 03H SETB 07H CPL 05H 或 : ORL 20H,#1000100
28、0B XRL 20H,#00100000B 8 试分析下列程序段执行后 , (A) =?, (30H) =? MOV 30H, #0A4H MOV A, #0D6H MOV R0, #30H MOV R2, #5EH ANL A, R2 ORL A, R0 SWAP A CPL A XRL A, #0FEH ORL 30H, A (A)=6EH (30H)=0EFH 9 设片内 RAM(30H) = 0EH, 执行下面的程序后 , (A)=?, 指出该程序完成的功能。 MOV R0, #30H 第 10 页 共 29 页 m MOV A, R0 RL A MOV B, A RL A RL A ADD A, B =8CH 功能:将 30H 中的内容 *10 操作,结果在累加器 A 中。