单片机课后答案剖析.docx
《单片机课后答案剖析.docx》由会员分享,可在线阅读,更多相关《单片机课后答案剖析.docx(30页珍藏版)》请在冰豆网上搜索。
单片机课后答案剖析
第1章单片机技术基础
1.填空题
(1)微控制器、嵌入式微控制器。
(2)CPU、存储器和I/O接口,总线。
(3)地址总线,第二功能。
(4)外部程序存储器选通信号输出引脚,复位引脚,外部。
(5)5,0003H,000BH,0013H,001BH,0023H。
(6)地址,数据,总线复用。
(7)0000H,FFH,00H,07H。
(8)28H,D7。
(9)2,10H、17H。
(10)内,8。
(11)2。
(12)XTAL1,XTAL2。
2.选择题
(1)D
(2)B
(3)C
(4)D
(5)C
(6)B
(7)B
(8)B
(9)A
(10)B
3.简答题
(1)8051单片机内部都集成了哪些主要功能部件?
这些功能部件都有什么作用?
答:
主要集成了CPU、存储器、I/O接口、时钟振荡电路、中断系统、定时/计数器等功能部件;CPU是整个单片机的控制核心,完成数据的运算和各种控制功能,存储器用于存储数据或者程序,I/O接口主要用于数据的输入和输出,时钟振荡电路用于提供单片机工作所需要的时钟信号,中断系统用于实现单片机的中断功能,定时/计数器用于实现单片机的定时和计数功能。
(2)8051单片机内部RAM可以划分成几个区域?
各自特点和功能是什么?
答:
8051单片机内部RAM可以划分成4个区域,分别为工作寄存器组区、位寻址区、用户RAM区和特殊功能寄存器区;工作寄存器组区用于存储工作寄存器的数值,位寻址区同时支持位数据和字节数据的存储,用户RAM区用于存储单片机的各种临时数据,特殊功能寄存器区用于存放各种特殊功能寄存器的参数。
(3)何谓PC?
它属于特殊功能寄存器吗?
其主要作用是什么?
答:
PC称为程序计数器,不属于特殊功能寄存器,作用在于存储程序在存储器中的存放地址,并具有自动加1功能,保证能够连续取指令。
(4)何谓堆栈和堆栈指针?
8051单片机如何设置堆栈?
答:
堆栈是内存中设置的一段地址连续的存储区域,用于保存现场信息、断点地址等重要数据,堆栈指针是一个能永远指向堆栈顶部的指针。
单片机的堆栈可以采用系统默认(07H)的方式设置,也可以通过对堆栈指针赋值的方式来设置。
(5)程序状态字PSW的作用是什么?
包含哪些标志位?
分别作用是什么?
答:
程序状态字PSW的作用是用于反应CPU运行状态或者控制CPU运行的寄存器。
主要包含:
进位标志位CY,用于显示数据运算时最高位是否有进位(借位);辅助进位标志位AC,用于显示数据运算时低4位是否有向高4位进位(借位);溢出标志位OV,用于指示数据运算后是否溢出;奇偶标志位P用于指示运算结果中1的个数是奇数个还是偶数个;工作寄存器选择控制位RS1、RS0,用于设置工作寄存器组安排在哪个区域;用户标志位F0,留给程序设计人员存储相应标志位用。
(6)8051单片机内部有哪些区域支持位寻址?
答:
主要包含位寻址区和地址能够被8整除的特殊功能寄存器。
(7)8051单片机内部RAM和ROM容量各为多少?
外部最大能扩展多大存储空间?
答:
8051单片机内部RAM和ROM容量分别为256B和4KB,外部最大能扩展的RAM和ROM存储空间分别为64KB。
(8)8051单片机的四个I/O端口在结构上有什么特点?
分别作用是什么?
答:
8051单片机的四个I/O端口的结构特点见书1.4节,P0口可作为地址/数据复用总线,P2口可提供高8位地址总线,P3口可作为第二功能用,除此之外,4个并行口均可作为普通I/O口用。
(9)8051单片机如何复位?
主要有几种复位方法?
答:
8051单片机复位时,需要在RST引脚上输入时间大于2个机器周期宽度的高电平,结合实际应用情况,通常采用手动复位、自动复位和二者结合的方式进行复位。
(10)单片机都有哪些工作方式?
这些工作方式分别应用于哪些场合?
不同的工作方式之间是如何切换的?
答:
单片机都有复位方式、程序运行方式、掉电方式和低功耗方式等工作方式,复位方式主要用于系统上电或者程序飞车的情况下;程序运行方式是单片机最主要的工作方式,在实现检测和控制时都属于该工作方式;掉电方式是指单片机系统主电源掉电后被迫进入省电工作方式,备用电源用于维持RAM供电,保证数据不丢失;低功耗方式是单片机完成相关任务空闲后,为了降低系统功耗,主动进入省电模式。
通过设置电源控制器PCON来进入掉电和低功耗方式,通过中断等方式退出掉电和低功耗方式。
第2章指令系统和汇编语言
1.填空题(指出下列指令中源操作数的寻址方式)
(1)直接寻址
(2)立即寻址
(3)间接寻址
(4)基址加变址寻址
(5)寄存器寻址
(6)基址加变址寻址
(7)位寻址
(8)相对寻址
2.程序分析题
(1)指出下面程序段执行后的结果。
(A)=75H,(30H)=45H,(R0)=40H,(40H)=4CH。
(2)已知(A)=74H,(R0)=9BH,CY=1,写出执行指令后结果。
ADDCA,R0
(A)=10H,(CY)=1,(AC)=1,(P)=1。
(3)分析下面程序段运行结果。
MOVA,#88H(A)=88H
XRLA,#0FFH(A)=77H
ANLA,#0FH(A)=07H
ORLA,#20H(A)=27H
(4)已知片内RAM(20H)=11H,(CY)=1,分析下列程序段运行结果。
则:
(A)=12H,(CY)=1。
3.判断题(判断下列指令的正误,对的打“√”,错的打“×”。
)
(1)√
(2)×
(3)×
(4)√
(5)×
(6)×
(7)×
(8)×
(9)√
(10)×
4.编程题
(1)将内部RAM50H-60H单元内容清零。
答:
MOVR0,#50H
MOVA,#00H
MOVR7,#17
NEXT:
MOV@R0,A
INCR0
DJNZR7,NEXT
RET
(2)将内部RAM40H单元中的16进制数转换成十进制数,百位存于52H中,十位存于51H中,个位存于50H中。
答:
MOVA,40H
MOVB,#100
DIVAB
MOV52H,A
MOVA,B
MOVB,#10
DIVAB
MOV51H,A
MOV50H,B
(3)将内部RAM50H单元中的组合BCD码转换成非组合BCD码,分别存于51H(低位)和52H(高位)单元中。
答:
MOVA,50H
ANLA,#0FH
MOV51H,A
MOVA,50H
SWAPA
ANDA,#0FH
MOV52H,A
(4)将片外RAM1000H单元中的数据传送到片内RAM30H单元中。
答:
MOVDPTR,#1000H
MOVXA,@DPTR
MOV30H,A
(5)将片外ROM3000H单元中的数据传送到片外RAM1000H单元。
答:
MOVDPTR,#3000H
MOVA,#00H
MOVCA,@A+DPTR
MOVDPTR,#1000H
MOVX@DPTR,A
(6)将外部RAM2000H单元中的高2位取反,低4位清零,其余位保持不变。
答:
MOVDPTR,#2000H
MOVXA,@DPTR
MOV40H,A
ANLA,#11000000B
CPLA
MOV41H,A
MOVA,40H
ANLA,#00110000
ORLA,41H
MOVX@DPTR,A
(7)将内部RAM60H单元中数据的中间4位取反,其余位保持不变。
答:
MOVA,60H
CPLA
ANLA,#00111100
MOV61H,A
MOVA,60H
ANLA,#11000011
ORLA,61H
MOV60H,A
第3章KEILC51
1.填空题
(1)bit,sfr(sfr16),sbit。
(2)头文件中。
(3)data,bdata,程序存储器类型,xdata。
2.简答题
(1)汇编语言和C语言的各有何优缺点?
在程序设计时,选择的主要依据是什么?
答:
汇编语言的特点是:
代码执行效率高;占用存储空间少;可读性差,调试、维护困难;可移植性差。
C语言的特点是:
可读性强;编程及调试效率高;函数结构的程序,结构规范易于移植;库函数包含许多标准子程序,可直接调用,开发周期缩短;寄存器的分配、存储器的寻址以及数据类型等细节可由编译器来管理。
在程序设计时,通常汇编语言和C语言都能完成设计要求,但是对于程序执行时间要求非常精确时,通常采用汇编语言,而对于复杂计算代码设计通常选用C语言。
(2)简要说明C51与标准C的主要区别。
答:
C51是在标准C语言的基础上发展起来的,专用于51系列单片机的程序设计,其根据51系列单片机硬件特点扩展了许多相关的编译特性,C51提供了包括C编译器、宏汇编、连接器、库管理和功能强大的仿真调试器等在内的完整开发方案,是目前流行的51系列单片机开发软件。
(3)C51中如何访问8051单片机的特殊功能寄存器?
答:
C51编译器可以利用扩展的关键字sfr和sfr16对特殊功能寄存器进行访问,格式为:
sfr特殊功能寄存器名=特殊功能寄存器地址常数
(4)C51中对指定地址的内部RAM、外部RAM以及ROM的访问方法有哪些?
答:
所谓对指定地址的存储器访问是指将数据存放在指定地址的存储器中,也称为对存储器的绝对地址访问。
51系列单片机有不同的存储区,可以利用绝对地址访问头文件“absacc.h”中的函数来对不同的存储区进行访问。
如:
C51中要将60H这个数存储在地址为50H的内部RAM单元中,那么可以采用如下方法。
#include
#include
main()
{DBYTE[0x50]=0x60;
while
(1){};
}
(5)简要说明C51中断服务函数的设置方法。
答:
8051单片机C51程序结构也有固定的结构,其中断服务函数的一般结构形式为:
函数类型函数名()[interruptn][usingi],C51编译器扩展增加了关键字interrupt,使用这个关键字可以将一个函数定义成中断服务函数,其中,n为中断类型号,取值范围为n=0~4,用以区分5个中断源,C51还扩展了关键字using,i的取值范围为n=0~3,分别对应工作寄存器组的0区~3区,即指明将工作寄存器组安排在哪个区域,
(6)简要说明汇编语言和C语言混编的主要方法和步骤。
答:
C51程序中嵌入汇编程序段的常用混合编程方法,可以通过语句“#pragmaasm”和“#pragmaendasm”包含嵌入的汇编语言程序段。
程序段编译前进行相应设置,方法是:
选中C源文件,选择右键菜单“optionforfile…”,将“properties”中三个可选项的“GenerateAssemblerSRCFile”和“AssembleSRCFile”分别选中,“LinkPublicOnly”选项取消选中。
3.编程题(用C51实现)
(1)将8051单片机内部RAM50H单元中的内容加“1”。
答:
#include
#include
main()
{
while
(1)
{
DBYTE[0x50]++;
}
}
(2)将十六进制数0xB0存储于外部RAM1000H单元中。
答:
#include
#include
main()
{
XBYTE[0x1000]=0xb0;
}
(3)读取外部RAM2000H单元中的内容,取反后存储于内部RAM60H单元中。
答:
#include
#include
unsignedchardataxyz;
main()
{xyz=XBYTE[0x2000];
xyz=~xyz;
DBYTE[0X60]=xyz;
}
(4)将内部RAM40H单元中的十六进制数转换成十进制数,按照高位到低位的顺序分别存于内部RAM50H开始的单元中。
答:
#include
#include
unsignedchardataxyz;
main()
{xyz=DBYTE[0x40];
DBYTE[0x50]=xyz/100;
DBYTE[0x51]=xyz%100/10;
DBYTE[0x52]=xyz%100%10;
}
(5)读取P1口的引脚状态,将其取反后,存储于外部RAM3000H单元中。
答:
#include
#include
unsignedchardataxyz;
main()
{xyz=P1;
xyz=~xyz;
XBYTE[0x3000]=xyz;
}
第4章单片机与PROTEUS仿真
1.填空题
(1)ISIS,ARES。
(2)原理图编辑窗口,sheetsize。
(3)元件,虚拟仪器,端子。
(4)光电器件,运算放大器,TTL74Series。
(5)热点,右键。
(6)图标仿真。
2.简答题
(1)通常在哪些场合下使用网络标号?
答:
为了简化电路图,在连接线路较远或电路复杂走线比较困难时,利用网络标号代替实际走线可简化电路图;总线连接时在总线分支处必须标上相应的网络标号,才能达到各导线之间的电气连接关系和目的;层次式电路或多重式电路中各个模块电路之间的电气连接。
(2)ISIS元件库中都有哪些类型的元件库,查找元件可以通过哪些方法实现?
答:
共有28种不同类型的元件库,详见4.2.2(ISIS元件库)通常查找元器件的方法有两种,一种方法是输入元件名称后直接进行查找,该方法要求使用者能熟练记忆元件名称;另一种方法是按类进行查询。
(3)如何在ISIS中对元件进行方向的旋转或者调整?
答:
将鼠标光标指向要调整的元件,单击鼠标右键,在弹出的浮动菜单中选择
(逆时针旋转)或者
(顺时针旋)均可让R2由水平放置变成垂直放置。
如果需要还可以选择
进行水平镜像,或者
进行垂直镜像。
(4)在ISIS中如何实现图表仿真功能?
答:
在要分析的电路中设置电压或者电流探针;选择图表仿真的类型,可以有模拟、数字和音频等多种类型可供选择,选择好图表仿真类型后,在原理图中拖动生成仿真波形的图表框;给绘制的图表框选择要分析探测点;添加好对应的探针后,可以通过右键弹出的浮动菜单选择SimulateTtaces选项生成仿真波形。
3.操作题
(1)在Proteus中随意绘制一个模拟电路,在不同的位置点处添加电压和电流探针,实现电压电流检测功能。
答:
略。
(2)在Proteus中利用555定时器设计一个多谐振荡器,输出频率为1Hz的方波。
答:
略。
(3)在Proteus中利用8051单片机设计一个电子钟电路,编制对应程序,要求能够显示时、分、秒信息。
答:
略。
(4)在Proteus中利用8051单片机设计一个外部事件脉冲计数器,要求显示个数范围为0~200,假设脉冲频率不高于1KHz,并以虚拟计数器进行计数校验。
答:
略。
(5)在Proteus中利用8051单片机设计一个PWM信号发生器,要求占空比可调,并用虚拟示波器观察波形。
答:
略。
第5章单片机中断系统
1.填空题
(1)5,2,外部中断0、定时/计数器0、外部中断1、定时、计数器1、串行口。
(2)0003H,001BH。
(3)电平触发和边沿触发,IT0、IT1。
(4)当优先级寄存器IP=00010100B时,外部中断1,定时/计数器1。
(5)PC,断点地址,PC。
(6)堆栈,PC。
2.选择题
(1)D。
(2)D。
(3)A。
(4)D。
3.简答题
(1)为什么8051在很多时候不能立即响应中断?
通常中断响应时间范围是多少?
答:
因为CPU从采样到确认中断申请有效需1个机器周期,然后执行1个硬件调用子程序后转入中断服务程序需要2个机器周期,因此从产生中断请求到运行中断服务程序至快也需要3个机器周期,所以说不能立即响应。
一个单级的中断系统,通常响应的时间在3-8个机器周期之间。
(2)单片机正在执行RETI指令时能否立即响应中断?
为什么?
答:
不能,则要在该指令后再运行一条指令才响应,通常需要4-5个机器周期。
(3)外部中断1的控制主要涉及到哪几个寄存器?
分别作用是什么?
答:
TCON、IE和IP,作用分别是设置触发方式、是否允许中断和中断优先级设置。
(4)什么是中断系统的断点?
中断服务子程序的现场保护需要保护哪些信息?
答:
所谓断点就是CPU响应中断后下一条指令的地址,也称为断点地址;现场保护时主要需要保护中断子程序中被使用的寄存器和存储单元等。
(5)外部中断触发方式有哪几种?
它们的区别是什么?
答:
外部中断触发方式主要由电平触发和边沿触发方式两种;区别有是否把中断请求置位标志寄存器,中断请求的检测方式,和中断响应后中断标志是否清除等几个方面。
(6)外部中断采用电平触发方式时,为什么触发信号持续时间不能过短和过长?
答:
电平触发方式时,如果触发信号持续时间过短,CPU有可能检测不到触发信号;如果触发时间过长,CPU响应中断后,有可能再次触发中断请求。
(7)哪些中断请求标志位可自动清除?
哪些需要手动清除?
为什么?
答:
外部中断、定时/计数器中断等中断源的中断请求标志位可以自动清除;但是串行口中断的标志位需要手动清除,因为串行口接收和发送数据中断使用用一个中断向量,如果系统自动清除,用户将无法判断是接收中断还是发送中断。
4.综合题
(1)为8051单片机设计一套支持8个外部中断源的中断控制系统,给出对应的硬件电路,并编写相应的控制程序。
答:
电路图如下所示,相应的控制程序如下:
ORG0000H
AJMPSTRAT
ORG0003H
AJMPWB0
START:
SETBEX0
SETBIT0
SETBEA
AJMP$
WB0:
MOVA,P1
JNBACC.7,IRQ8
JNBACC.6,IRQ7
…………
NEXT:
NOP
RETI
IRQ8:
……
LJMPNEXT
END
(2)根据图5-5所示的电路图,请编写程序实现“按键1次点亮1个LED,按键2次点亮2个LED,….按键8次点亮所有LED,按键9次关闭所有LED”的功能。
答:
程序略,参见正文5.5节。
第6章定时/计数器
1.填空题
(1)内部振荡周期的12分频(机器周期);外部,加法。
(2)T0,1,0,1。
(3)方式0、1、2,方式1。
2.简答题
(1)8051单片机定时/计数器都有哪些工作方式,分别有何特点?
答:
方式0:
13位的工作方式,不能自动重装入初值;
方式1:
16位的工作方式,不能自动重装入初值,定时时间最长;
方式2:
8位的工作方式,可自动重装入初值,定时最为精确;
方式3:
8位的工作方式,可自动重装入初值,定时最为精确,只用T0具有该方式。
(2)简述8051单片机定时/计数器的基本工作原理。
答:
两个定时/计数器的工作原理基本一致,以下以T0工作在16位的工作方式下为例来说明定时/计数器的工作原理。
16位工作方式下,TH0和TL0组成了16位的定时计数器,当两个寄存器初值均为“0”时,如果启动T0工作后,T0会对特定的脉冲信号进行计数工作,计数的本质就是每来一个计数脉冲计数器自动加1。
当低8位TL0由“0”计至最大值255时,再来一个计数脉冲,TL0会自动清“0”,同时往高8位TH0进位;依此类推,直到高8位也清“0”,此时称为T0溢出。
T0溢出后会自动置“1”溢出标志位,CPU会定期检查溢出标志位是否为“1”来判断是否溢出。
(3)8051单片机定时/计数器定时和计数模式的主要区别?
答:
两种模式的主要区别在于计数器的计数脉冲不同,一个是内部时钟信号(机器周期大小),另一个是外部输入的脉冲信号。
(4)给出8051单片机初值计算公式,说明各参数含义。
答:
定时模式公式:
,计数模式公式:
,
其中:
N为定时/计数器初值;n为选用的工作方式下计数器位数(方式0:
13,方式1:
16,方式2:
8);t为需要的定时时间(为了统一,单位为
);TCY为一个机器周期时间;X为需要计数的次数。
(5)使用定时/计数器时,为什么要让计数器在给定初值基础上计数,而不直接从“0”开始计数?
答:
如果是从初值为0的基础上计数的,想要知道定时时间是否到了,需要不断的判断计数次数,检测和控制程序相对比较麻烦。
如果计数是在初值的基础上计数,那么就可以查询溢出标志位是否为“1”来判断定时时间是否到了,当然也可采用中断方式直接申请中断。
(6)通常T0在什么情况下才选用工作方式3?
答:
通常在定时/计数器1用作波特率发生器时,为了弥补定时/计数器个数的减少,把T0设置在工作方式3,变成两个独立的8位定时/计数器。
(7)什么叫做脉宽调制(PWM),常用的调制方法有哪些?
答:
PWM调制技术方法主要有定频调宽、定宽调频和调频调宽三种,定频调宽是保持脉冲信号的周期不变,通过控制高电平时间的方法来调节占空比;定宽调频是保持高电平的时间不变,改变脉冲周期(频率)的方法来实现的;调频调宽方法是同时改变脉冲信号的周期和高电平时间。
(8)若
为12MHz,利用8051单片机定时/计数器对外部脉冲计数时,对脉冲信号频率有何要求?
答:
采样计数脉冲过程是在2个机器周期中进行的,因此外部输入的脉冲频率不能高于晶振频率的1/24,如晶振频率为12MHz,要求输入信号的频率低于0.5MHz。
3.综合题(本大题中晶振频率均为12MHz)
(1)利用T0实现100
的定时,计算出不同工作方式下的初值,给出计算过程。
答:
只给出方式2下的初值计算过程,其他相同。
=28-100/1=256-100=156=9CH
(2)利用8051单片机T0产生频率为38KHz的方波信号,编制相关程序,并在Proteus中利用示波器观察信号。
答:
频率为38KHz,可知其周期为1/38K=26
,所以定时时间为13
。
根据计算公式可知:
N=256-13=F3H。
设利用P1.0引脚产生方波,具体汇编语言程序如下:
ORG0000H
AJMPSTART
ORG000BH
AJMPDS0
START:
MOVTMOD,#02H
MOVTL0,#F3H
SETBET0
SETBEA
SETBTR0
AJMP$
DS0:
CPLP1.0
RETI
END
(3)编写程序实现方波信号的频率测量,要求频率测量范围为100Hz~100KHz。
ORG0000H
AJMPSTART
ORG0003H
AJMPWB0
START:
MOVTMOD,#01H