当前位置:文档之家› 单片机课后习题答案(《单片机应用技术》C语言版)

单片机课后习题答案(《单片机应用技术》C语言版)

习题1答案1.1 单项选择题(1) A (2)C (3)A (4) A (5)A(6) A (7)C (8)C (9) D (10)C1.2 填空题(1)硬件系统、软件系统(2)时钟、复位(3)XTAL1、XTAL2、RST、(4)片内数据存储器、片内程序存储器、片外数据存储器、片外程序存储器(5)时钟电路(6)程序存储器(7)工作寄存器组、位寻址区、用户RAM区(8)1us、2us(9)上电复位电路、按键复位电路(10)2、高1.3答:单片微型计算机是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU (Central Processing Unit)、随机存取存储器RAM(Random Access Memory)、只读存储器ROM(Read-only Memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时器/计数器等都制作在一块集成芯片上,构成一个完整的微型计算机,可以实现微型计算机的基本功能。

单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现一种或多种功能的实用系统。

单片机应用系统是由硬件和软件组成的,硬件是应用系统的基础,软件则是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。

1.4答:1.5答:片内RAM低128单元的配置如下:单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作;在内部RAM低128单元中,通用寄存器占去了32个单元,位寻址区占去了16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH。

片内RAM高128单元安排有21个特殊功能寄存器,其他空闲单元用户不能使用。

1.6答:有21个可寻址的特殊功能寄存器,它们不连续地分布在片内RAM的高128单元中,尽管其中还有许多空闲地址,但用户不能使用。

另外还有一个不可寻址的特殊功能寄存器,即程序计数器PC,它不占据RAM单元,在物理上是独立的。

在可寻址的21个特殊功能寄存器中,有11个寄存器不仅可以字节寻址,也可以进行位寻址。

1.7答:程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。

其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则由软件方法设定。

PSW的位状态可以用专门指令进行测试,也可以用指令读出。

PSW的各位定义下表所示。

PSW位定义存放算术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位,则CY由硬件置“1”,否则被清“0”;二是在位操作中,作累加位使用。

位传送、位与位或等位操作,操作位之一固定是进位标志位。

·AC(PSW.6):辅助进位标志位。

在进行加或减运算中,若低4位向高4位进位或借位,AC由硬件置“1”,否则被清“0”。

在BCD码调整中也要用到AC位状态。

·F0(PSW.5):用户标志位。

这是一个供用户定义的标志位,需要利用软件方法置位或复位,用来控制程序的转向。

·RS1和RS0(PSW.4,PSW.3):工作寄存器组选择位。

它们被用于选择CPU当前使用的通用寄存器组。

通用寄存器共有4组,其对应关系如下表所示。

工作寄存器组选择这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。

但当单片机上电或复位后,RS1 RS0=00。

·OV(PSW.2):溢出标志位。

在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128 ~+127),即产生了溢出,因此运算结果是错误的;OV=0表示运算正确,即无溢出产生。

在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘积只在A中。

在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。

·F1(PSW.1):保留未使用。

·P(PSW.0):奇偶标志位。

P标志位表明累加器A中内容的奇偶性,如果A中有奇数个“1”,则P置“1”,否则置“0”。

凡是改变累加器A中内容的指令均会影响P标志位。

此标志位对串行通信中的数据传输有重要的意义。

在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

1.8答:0003H~002AH这40个单元被均匀地分为5段,作为5个中断源的中断地址区。

其中:0003H~000AH 外部中断0中断地址区000BH~0012H 定时器/计数器0中断地址区0013H~001AH 外部中断1中断地址区001BH~0022H 定时器/计数器1中断地址区0023H~002AH 串行中断地址区中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。

因此在中断地址区中理应存放中断服务程序。

但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。

1.9答:当需要扩展存储器时,低8位地址A7~A0和8位数据D7~D0由P0口分时传送,高8位地址A15~A8由P2口传送。

因此,只有在没有扩展片外存储器的系统中,P0口和P2口的每一位才可作为双向I/O 端口使用。

1.10答:单片机晶振电路一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2MHz~12 MHz。

如果晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就越快。

MCS-51在通常应用情况下,使用振荡频率为的6MHz或12MHz的晶振,如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.059MHz的晶振。

1.11答:规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。

当振荡脉冲频率为12 MHz时, 一个机器周期为1µs;当振荡脉冲频率为6 MHz时,一个机器周期为2 µs。

1.12答:(a)上电复位电路(b)按键复位电路单片机常见的复位电路图(a)为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。

只要保证RST为高电平的时间大于两个机器周期,便能正常复位。

图(b)为按键复位电路。

该电路除具有上电复位功能外,若要复位,只需按图(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RST端产生一个复位高电平。

习题2答案2.1 单项选择题(1)C (2)A (3)B (4)A (5)D2.2答:单片机开发过程所用的设备与软件称为单片机开发系统或开发工具。

单片机开发系统包括计算机、单片机在线仿真器、开发工具软件、编程器等。

连接方法如下图所示。

单片机开发系统连接方法示意图2.3答:单片机应用系统的开发过程如下:设计电路图→制作电路板→程序设计→硬软件联调→程序下载→产品测试2.4答:1.在线仿真功能在线仿真器(In Circuit Emulator,简称ICE)是由一系列硬件构成的设备,它能仿真用户系统中的单片机,并能模拟用户系统的ROM、RAM和I/O口。

因此,在线仿真状态下,用户系统的运行环境和脱机运行的环境完全“逼真”。

2.调试功能1)运行控制功能开发系统应能使用户有效地控制目标程序的运行,以便检查程序运行的结果,对存在的硬件故障和软件错误进行定位。

2)单片机状态查看修改功能当CPU停止执行程序运行后,开发系统允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参数。

任务2中图2.13给出了在Medwin调试环境下查看单片机内部资源的菜单。

3.程序编译功能1) 程序设计语言单片机程序设计语言包括机器语言、汇编语言和高级语言。

机器语言是单片机唯一能够识别的语言。

汇编语言具有使用灵活、实时性好的特点。

目前,在实际项目开发中较少使用汇编语言。

高级语言通用性好,且具有较好的可读性和可移植性,是目前单片机编程语言的主流。

2) 程序编译单片机开发系统能够提供源程序的编辑、编译和下载功能以及工程管理功能。

4.程序固化功能编程器是完成这种任务的专用设备,它也是单片机开发系统的重要组成部分。

习题3 答案3.1 单项选择题(1) A (2) A (3) C (4)C (5)A(6) B (7) D (8) D (9)A (10)A(11)B (12)C (13)D (14)D (15)C3.2 填空题(1)P3口(2)字节,位(3)主函数main()(4)sbit FLAG=P3^1;(5)sfr(6)顺序结构、选择结构和循环结构(7)表达式加上分号“;”(8)if,switch(9)do-while,while(10)无限次(11)10000(12)unsigned char(13)变量在MCS-51硬件系统中所使用的存储区域(14)'\0'(15)程序存储器ROM中3.3 上机操作题(1)//xiti3_3_1.c——第三章习题3.3上机操作题(1)#include <reg51.h>void delay(unsigned char i); //延时函数声明void main() //主函数{while(1){P1=0x55; //按状态1的方式点亮8个LEDdelay(200); //延时P1=0xaa; //按状态2的方式点亮8个LEDdelay(200); //延时}}void delay(unsigned char i) //延时函数参见任务1程序ex1_1.c(2)//xiti3_3_2.c——第三章习题3.3上机操作题(2)#include <reg51.h> //包含头文件REG51.Hvoid delay(unsigned char i); //延时函数声明void main() //主函数{unsigned char i,l,r;while(1){l=0x10; // 高4位灯的位置初值为00010000Br=0x08; // 低4位灯的位置初值为00001000Bfor(i=0;i<4;i++){P1=~(l|r); // 循环点亮灯l<<=1; // 高4位灯的位置移动r>>=1; // 低4位灯的位置移动delay(200); //延时}}}void delay(unsigned char i) //延时函数参见任务1程序ex1_1.c(3)//xiti3_3_3.c——第三章习题3.3上机操作题(3)#include <reg51.h> //包含头文件REG51.Hvoid delay(unsigned char i); //延时函数声明void main() //主函数{unsigned char i;unsigned char display[]={0x89, 0xff,0x86, 0xff,0xc7, 0xff,0xc7, 0xff,0xc0, 0xff};while(1){for(i=0;i<10;i++){P1=display[i]; //显示字送P1口delay(200); //延时}}}void delay(unsigned char i) //延时函数参见任务1程序ex1_1.c习题4 答案4.1 单项选择题(1)B (2)A (3)C (4)A (5)A(6)B (7)A (8)A (9)D (10)A(11)C (12)C (13)A (14)D4.2 填空题(1)①定时器T0 ②定时器T1 ③定时器方式寄存器TMOD ④定时器控制寄存器TCON(2)GATE=0(3)TMOD=0x05(4)选择定时器T0/T1的工作方式(5)控制定时器的启动、停止,标志定时器的溢出和中断情况。

相关主题