单片机原理及应用课后习题参考答案.docx
《单片机原理及应用课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课后习题参考答案.docx(35页珍藏版)》请在冰点文库上搜索。
![单片机原理及应用课后习题参考答案.docx](https://file1.bingdoc.com/fileroot1/2023-8/13/784516e8-a38a-4721-8901-cc420ea36f52/784516e8-a38a-4721-8901-cc420ea36f521.gif)
单片机原理及应用课后习题参考答案
第1章单片机概述
1.答:
微处理器、微处理机和CPU它们都是中央处理器的不同称谓,而微计算机、单片机它们都是指一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。
2.答:
微控制器,嵌入式控制器
3.答:
CPU、存储器、I/O口
4.略
5.答:
单片机根据其基本操作处理的位数可分为如下几种类型:
4位机、8位机、16位机、32位机。
6.答:
8031、8051和8071。
它们的差别是在片内程序存储器上。
8031片内无程序存储器,8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。
7.答:
“MCS”是Intel公司生产的单片机的系列符号,MCS-51系列单片机是指Intel公司生的产品:
8031、8051和8071。
而80C51系列单片机是指世界各个厂家生产的所有的与MCS-51系列单片机中的8051的内核结构、指令系统兼容的单片机。
8.答:
C
9.答:
B
10.略
第2章MCS-51单片机的硬件结构
1.答:
89C51单片机的片内都集成了如下功能部件:
(1)1个微处理器(CPU);
(2)128个数据存储器(RAM)单元;(3)4KFlash程序存储器;(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);(5)1个全双工串行口;(6)2个16位定时器/计数器;(7)一个中断系统,5个中断源,2个优先级;(8)21个特殊功能寄存器(SFR)。
2.答:
当
脚为高电平时,单片机读片内程序存储器(4K字节Flash),但在PC值超过0FFFH(即超出4K字节地址范围)时,将自动转向读外部程序存储器内的程序;当
脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4K字节Flash程序存储器不起作用。
3.答:
1个机器周期等于12个时钟振荡周期。
4.答:
2µs
5.答:
64K程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表:
表5个中断源的中断入口地址
入口地址
中断源
0003H
外部中断0(
)
000BH
定时器0(T0)
0013H
外部中断1(
)
001BH
定时器1(T1)
0023H
串行口
6.答:
26H。
7.答:
P标志位的值为0。
8.答:
(A)错;(B)错;(C)对;(D)对。
9.答:
04H;00H;0组。
10.答:
CPU完成一个基本操作所需要的时间称为机器周期;89C51的一个机器周期包括12个时钟周期,分为6个状态:
S1~S6。
每个状态又分为两拍:
P1和P2。
因此,一个机器周期中的12个时钟周期表示为:
S1P1、S1P2、S2P1、S2P2、…、S6P2;1µs
11.答:
(A)对;(B)对;(C)错;(D)对。
12.答:
字节地址00H-1FH的单元可作为工作寄存器区,字节地址为20H-2FH的单元可进行位寻址。
13.答:
低;程序。
14.答:
三部分
(1)工作寄存器区,为编程提供方便;
(2)位寻址区,可进行位操作,也可进行字节操作;(3)数据缓冲区,可作为数据缓冲和堆栈。
15.答:
(A)对;(B)错;(C)错。
16.答:
(C)。
17.答:
PC;PC。
18.答:
见表2-5(29页)。
19.答:
64K字节。
20.答:
按下复位按钮。
21.答:
(A)对;(B)对;(C)错;(D)错。
22.答:
可通过观察ALE引脚,因为单片机正常工作时,ALE脚输出时钟频率为振荡周期的1/6。
。
第3章MCS-51的指令系统
1.答:
(1)错
(2)错(3)对(4)错(5)错(6)错(7)错(8)对(9)错(10)对(11)对(12)错。
2.答:
(A)对(B)对(C)错。
3.答:
A,PC,DPTR。
4.答:
7种寻址方式,特点见教材中的相关内容
5.答:
5类。
6.答:
只能使用直接寻址方式?
7.答:
操作码,操作数,操作码,。
8.答:
1031H。
9.答:
程序,数据。
10.答:
地址。
11.答:
A的内容与B的内容互换。
12.答:
(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(PC)=5030H
13.答:
(A)ANLA,#87H
(B)ANLA,#0C3H
(C)ORLA,#0CH
14.答:
(A)=0CBH。
15.答:
(A)=00H,(R3)=0AAH。
16.答:
(DPH)=3CH,(DPL)=5FH,(SP)=50H
17.答:
(SP)=62H,(61H)=30H,(62H)=70H。
18.答:
MOVR7,A
PUSHA
MOVA,B
MOVX@DPTR,A
第4章MCS-51汇编语言程序设计
1.答:
略
2.答:
伪指令只是控制汇编程序如何进行汇编。
“伪”的含义是并没有相应的机器代码生成。
3.答:
“手工汇编”是指采用人工查表的方法将助记符翻译成机器代码;“机器汇编”是指采用专用的汇编程序自动将助记符翻译成机器代码;“交叉汇编”是指助记符翻译成机器代码的工作是在某台机器上进行,而机器代码的运行是在另一台机器上运行;“反汇编”是将机器代码翻译成助记符。
4.答:
略
5.答:
略
6.答:
参考程序如下:
MOVA,45H
ANLA,#0FH
ORLA,#0FH
MOV45H,A
7.答:
A=80H,SP=40H,(41H)=50H,(42H)=80H,PC=8050H
8.答:
15348µs,分析:
((2+2)×255+1+2)×15+1+2=15348µs
9.答:
0CBH
10.答:
参考程序如下:
START:
MOVR0,#30H
MOVR2,#20H
LOOP:
MOVA,@R0
CJNEA,#0AAH,NEXT
MOV51H,#01H
LJMPEXIT
NEXT:
INCR0
DJNZR2,LOOP
MOV51H,#00H
EXIT:
RET
11.答:
参考程序如下:
START:
MOV41H,#0
MOVR0,#20H
MOVR2,#20H
LOOP:
MOVA,@R0
JNZNEXT
INC41H
NEXT:
INCR0
DJNZR2,LOOP
RET
12.答:
(1)SP=SP+1=61H(61H)=PC的低字节=03H
SP=SP+1=62H(62H)=PC的高字节=20H
(2)PC=3456H
(3)可以,因为2003H与3456H在同一个2KB区内。
(4)从2003H开始的2K字节范围内。
第5章MCS-51的中断系统
1.答:
略
2.答:
略
3.答:
略
4.答:
0013H
5.答:
A、B、C
6.答:
略
7.答:
D
8.答:
PC、PC、程序存储器
9.答:
参考程序如下:
SETBIT1
SETBEX1
SETBEA
10.答:
D
11.答:
略
12.答:
A、C、D
13.答:
RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。
除了这一点两条指令不同外,其它操作都相同。
14.某系统有三个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到底为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。
试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。
14.答:
参见电路如图5-10,参考程序如下:
ORG0000H
LJMPMAIN
ORG0013H
LJMPINT_EX1
ORG0030H
MAIN:
CLRIT0;采用电平触发,低电平有效中断
SETBEX1;允许外部中断1
SETBEA
;插入一段用户程序
;以下为外部中断1服务子程序
INT_EX1:
JBP1.2,NEXT1;判断是不是3号中断
LJMPINT_IR3;跳转到1号中断处理程序
NEXT1:
JBP1.1,NEXT2;判断是不是2号中断
LJMPINT_IR2;跳转到2号中断处理程序
NEXT2:
LJMPINT_IR1;跳转到1号中断处理程序
ORG1000H
INT_IR3:
插入相应中断处理程序
RETI;中断3返回
ORG1100H
INT_IR2:
插入相应中断处理程序
RETI;中断2返回
ORG1200H
INT_IR1:
插入相应中断处理程序
RETI;中断1返回
第6章MCS-51的定时器/计数器
1.答:
因为机器周期
,
所以定时器/计数器工作方式0下,其最大定时时间为
;
同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。
2.答:
定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定时初值有关。
3.答:
由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4.答:
定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。
除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。
编写程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
MOVTMOD,#06H;定时器/计数器T0为计数方式2
MOVTL0,#156;计数100个脉冲的初值赋值
MOVTH0,#156
SETBGATE;打开计数门
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
CLRF0;设置下一轮为定时方式的标志位
WAIT:
AJMPWAIT
IT0P:
CLREA;关中断
JBF0,COUNT;F0=1,转计数方式设置
MOVTMOD,#00H;定时器/计数器T0为定时方式0
MOVTH0,#0FEH;定时1ms初值赋值
MOVTL0,#0CH
SETBEA
RETI
COUNT:
MOVTMOD,#06H
MOVTL0,#156
SETBEA
RETI
5.答:
定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
6.答:
根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:
1,则高低电平的时间分别为363.63μs和36.37μs。
如果系统采用6MHz晶振的话,
,因此高低电平输出取整,则约为364μs和36μs。
编写程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
MOVTMOD,#02H;定时器/计数器T0为定时方式2
MOVTL0,#4AH;定时364μs初值赋值
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
SETBP1.0
WAIT:
AJMPWAIT
IT0P:
CLREA
CLRP1.0;关中断
MOVR0,#9
DLY:
DJNZR0,DLY;延时26μs
MOVTL0,#4AH;定时364μs初值赋值
SETBP1.0
SETBEA
RETI
7.答:
方法一,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。
这种方式的定时时间为两个定时器定时时间的和。
方法二,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接INT0产生),另一个定时器工作在计数方式。
这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。
8.答:
由T1(P3.5)口控制定时器T1的启动和关闭。
9.答:
采用方式1定时工作方式。
最大脉冲宽度为131.072ms。
10.答:
将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。
编写程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
JNBP1.0,MAIN
MOVTMOD,#05H;定时器/计数器T0为计数方式1
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
WAIT:
JBP1.2,WAIT
CLREA
CLRTR0
MOVR1,TH0
MOVR0,TL0
AJMP$
IT0P:
INCR2
RETI
11.答:
THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。
但在读THX、TLX的值时,应该先读THX值,后读TLX,再读THX。
若两次读得THX相同,则可确定读得的内容正确。
若前后两次读得的THX有变化,再重复上述过程。
12.答:
(1)对;
(2)错;(3)错;(4)错
第7章MCS-51的串行口
1.答:
串行数据传送的主要优点是硬件接口简单,数据传输线少(2个),传输距离较远。
2.答:
以方式1为例。
发送:
数据位由TXD端输出,发送1帧信息为10位,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送。
发送开始时,内部发送控制信号/SEND变为有效,将起始位想TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。
8位数据位全部完毕后,置1中断标志位TI,然后/SEND信号失效。
接收:
当检测到起始位的负跳变时,则开始接收。
接受时,定时控制信号有2种,一种是位检测器采样脉冲,它的频率是RX时钟的16倍。
也就是在1位数据期间,有16个采样脉冲,以波特率的16倍的速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。
3.答:
方式1
4.答:
串行口有3种工作方式:
方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率,
方式1的波特率=2SMOD/32×定时器T1的溢出率
方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定时器T1的溢出率
5.答:
起始位01000000校验位停止位
6.判断下列说法是否正确:
(A)对;(B)对;(C)错;(D)对;(E)对
7.答:
应使用(C)MOV指令
8.答:
因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了重装参数的操作。
已知时钟频率、通讯波特率,根据公式:
,计算出初值。
9.答:
(3)。
10.答:
相等。
11.答:
初值计算:
查阅P148表7-2可得,FAH
ANLTMOD,#0F0H控制字
ORLTMOD,#20H
MOVTH1,#0FAH
MOVTL1,#0FAH
MOVSCON,#40H
12.简述利用串行口进行多机通讯的原理。
解答:
参考教材146页。
13.答:
略
14.答:
略
15.答:
串口每秒钟传送的字符为:
1800/60=30个字符/秒
所以波特率为:
30个字符/秒×10位/个字符=300b/s
16.答:
串行口的方式0为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个MCS-51之间的串行通信。
该方式以fosc/12的固定波特率从低为位到高位发送或接受数据。
第8章MCS-51单片机扩展存储器的设计
1.答:
程序,数据。
2.答:
本题主要考察了对外部存储器的读、写操作,读者只要记住正确使用MOVX指令就可以了。
编程思路:
首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。
ORG0000H
MAIN:
MOVDPTR,#2001H;设置数据指针的初值
MOVXA,@DPTR;读取2001H的值
SWAPA
ANLA,#0F0H;屏蔽掉低四位
MOV30H,A;保存A
INCDPTR;指针指向下一个
MOVXA,@DPTR;读取2002H的值
ANLA,#0FH;屏蔽掉高四位
ORLA,30H;进行拼装
MOVX@DPTR,A;保存到2002H
END
3.答:
80H。
4.答:
本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。
ORG0000H
MAIN:
MOVA,#0;送预置数给A
MOVR0,#0FFH;设置循环次数
MOVDPTR,#4000H;设置数据指针的初值
LOOP:
MOVX@DPTR,A;当前单元清零
INCDPTR;指向下一个单元
DJNZR0,LOOP;是否结束
END
5.答:
因为控制信号线的不同:
外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为
和
。
外扩RAM的读、写控制引脚分别与单片机的
和
引脚相连。
外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为
,该引脚与89C51单片机的
相连。
外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE和WE。
外扩RAM的读、写控制引脚分别与MCS-51的RD和WR引脚相连。
外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51单片机的PSEN相连。
6.答:
(3),(4)。
7.答:
片选。
8.答:
图中采用了译码法。
4片地址分别为0000H-3FFFH、4000H-7FFFH、8000H-BFFFH、C000H-FFFFH。
9.答:
16KB。
10.答:
程序,数据。
11.答:
2KB,14。
12.答:
9FFFH。
由上题总结得出,32KBRAM存储器的大小为0000H-7FFFH,所以只要在后面加上2000H即得到正确答案。
13.答:
(1)电路图如下图所示。
(2)2764的地址为C000H-DFFFH;
第一片6116的地址为A000H-A7FFH;
第二片6116的地址为6000H-67FFH;
事实上,由于采用的是线选法,导致了地址不连续,地址空间利用不充分。
建议在实际工作中要具体情况具体分析。
在两种地址分配中选一种较好的来应用。
14.答:
(1)2864为8KB的存储器,如果首地址为8000H,则其末地址为9FFFH,理由参考第12题;
(2)电路图如下所示:
(3)电路图如下所示:
第9章MCS-51扩展I/O接口的设计
1.答:
I/O端口简称I/O口,常指I/O接口电路中具有端口地址的寄存器或缓冲器。
I/O接口是指单片机与外设间的I/O接口芯片。
I/O接口功能:
一.实现和不同外设的速度匹配;二.输出数据缓存;三.输入数据三态缓冲。
2.答:
一.独立编址方式:
独立编址方式就是I/O地址空间和存储器地址空间分开编址。
独立编址的优点是I/O地址空间和存储器地址空间相互独立,界限分明。
但是,却需要设置一套专门的读写I/O的指令和控制信号。
二.统一编址方式:
这种编址方式是把I/O端口的寄存器与数据存储器单元同等对待,统一进行编址。
统一编址的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强大。
MCS-51单片机使用的是I/O和外部数据存储器RAM统一编址的方式。
3.答:
一、同步传送方式:
同步传送又称为有条件传送。
当外设速度可与单片机速度相比拟时,常常采用同步传送方式,最典型的同步传送就是单片机和外部数据存储器之间的数据传送。
二、查询传送方式:
查询传送方式又称为有条件传送,也称异步传送。
单片机通过查询得知外设准备好后,再进行数据传送。
异步传送的优点是通用性好,硬件连线和查询程序十分简单,但是效率不高。
为了提高单片机的工作效率,通常采用中断方式。
三、中断传送方式:
中断传送方式是利用MCS-51本身的中断功能和I/O接口的中断功能来实现I./O数据的传送。
单片机只有在外设准备好后,发出数据传送请求,才中断主程序,而进入与外设进行数据传送的中断服务程序,进行数据的传送。
中断服务完成后又返回主程序继续执行。
因此,采用中断方式可以大大提高单片机的工作效率。
4.答:
本题主要考察对8255A的C口的操作。
其方式控制字的高位为0时,低四位对C口进行置位。
由题目我们得到了方式控制字的地址为7FFFH。
ORG0000H
MAIN:
MOVDPTR,#7FFFH;控制字寄存器地址送DPTR
MOVA,#0EH;将PC7置0
MOVX@DPTR,A
MOVA,#09H;将PC4置1
MOVX@DPTR,A
END
5.答:
8255A通过它们的最高位来进行判断,最高位为1时,这时8255A认为这是方式控制字,否则认为是C口按位置位/复位控制字
6.答:
当外设输入一个数据并送到PA7-PA0上时,输入设备自动在选通输入线STBA*向8255A发送一个低电平选通信号。
8255A收到选通信号后:
首先把PA7-PA0上输入的数据存入A口的输入数据缓冲/锁存器;然后使输入缓冲器输出线IBFA变成高电平,以通知输入设备,8255A的A口已收到它送来的输入数据。
8255A检测到联络线STBA*由低电平变成了高电平、IBFA为1状态和中断允许触发器INTEA为1时,使输出线INTRA(PC3)变成高电平,向8031发出中断请求。
(INTEA的状态可由用户通过对PC4的置位/复位来控制。
8031相应中断后,可以通过中断服务程序从A口的