第05章思考题和习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章思考题和习题解答
5.1 什么叫中断源?8031单片机有几个外部中断源?几个内部中断源?
答:引起中断的原因,或能发出中断请求的来源,称为中断源。MCS-51单片机有5个中断源,其中外部中断0(INT0)和外部中断1(INT1)是外部中断源,定时器∕计数器0(T0)、定时器∕计数器1(T1)和串行口的中断是内部中断源。
5.2 8031单片机5个中断源的中断程序入口地址分别是多少?8031响应中断的最短时间是多少?
答:8031单片机5个中断源的中断入口地址是固定的,如下所列:
中断源中断入口地址
外中断0 0003H
定时器0 000BH
外中断1 0013H
定时器1 001BH
串口中断0023H
8031在响应中断过程中,对中断请求标志位的查询需要1个机器周期;子程序调用指令LCALL 以转到相应的中断服务程序入口需要2个机器周期,因此外部中断响应的最短时间为3个机器周期。
5.3 说明什么情况下可在中断入口地址开始直接编写中断服务程序,而不需要跳转。
答:由于MCS-51单片机各中断源入口地址之间只相隔8个字节,因此,当中断服务程序不超过8个字节时,就可以在中断入口地址开始直接编写中断服务程序,而不需要跳转。
5.4 试写出设定INT0和定时器0的中断请求为高优先级和允许它们中断的程序。如果INT0和定时器0同时有中断请求时,试问MCS-51先响应哪个中断请求?为什么?
答:可用字节操作指令对IE和IP进行设置:
MOV IE,#83H ;同时置位EA、ET0和EX0
MOV IP,#03H ;置位PX0和PT0
也可用位操作指令进行设置,此处从略。
因为本题中外中断0和定时器0同为高优先级,当它们同时发中断请求时,系统则按硬件设定的自然优先级顺序响应中断,因此MCS-51先响应外中断0的中断请求。
5.5 MCS-51单片机外部中断申请有几种方式?为什么外部中断一般不用电平触发方式?
答:MCS-51单片机外部中断请求申请信号可以是低电平触发方式,也可以是负脉冲触发方式。对于采用负脉冲触发方式的外部中断请求标志位IE0或IE1的清“0”是由单片机硬件自动完成的,用
户无需参与。对低电平触发方式的外部中断请求信号,需要外加电路并配合指令,在中断响应后将INT0、INT1 引脚电平从低电平强制为高电平,从而将INT0、INT1引脚的低电平中断请求信号撤除,可见低电平方式的外部中断请求信号的撤除比较麻烦,因此一般应尽可能采用负脉冲触发方式申请中断。
5.6 某单片机系统用于检测压力、温度,另外还需要用定时器0作定时控制。如果压力超限和温度超限的报警信号分别由INT0、INT1输入,中断优先权排列顺序依次为压力超限❼温度超限❼定时控制,试确定特殊功能寄存器IE 和IP 的内容。
答:要使外部中断0、外部中断1和定时器0的中断可用,应将中断允许寄存器IE 中的EX0、ET0、EX1置“1” ,另外还要将中断总允许EA 置“1”。本题在考虑优先级设置时,可将压力超限和温度超限的报警信号设为高优先级,将定时控制设为低优先级,即把中断优先级寄存器IP 中的PX0和PX1置“1”,从而在发生压力超限或温度超限时可中断低级的定时控制,实现异常报警的优先处理。
5.7 设外部中断1为低电平触发方式,高优先级,试编写中断初始化程序。 答:该中断初始化程序可用两种方法编写。 解法一:用位操作指令:
CLR IT1
;低电平触发中断请求
SETB EX1 ;外中断1开中断 SETB EA ;开中断允许总控制位
SETB PX1
;外中断1高优先级
解法二:用字节指令也可对IE 和IP 进行设置:
MOV IE ,#84H ;同时置位EA 和EX1 ORL IP ,#04H ;置位PX1
5.8 已知8031单片机晶振频率是12MHz ,定时器T1最长定时时间是多少?如果8031单片机晶振频率是6MHz ,定时器T1最长定时时间又是多少?
答:为实现最长的定时时间,定时/计数器应选工作方式1。
① 当晶振频率为12MHz 时,机器周期为1µs ,当初值=0时达到最大定时:
定时时间为:M T )-16
(2t ⨯=初值=(216 - 0)× 1µs = 65536µs = 65.536ms
② 当晶振频率为6MHz 时,机器周期为2µs ,当初值=0时达到最大定时:
定时时间为:M T )-16
(2t ⨯=初值=(216 - 0)× 2µs = 131072µs = 131.072ms
5.9 已知单片机晶振频率为6MHz ,要求使用T1定时50ms ,工作在方式1,允许中断,试计算初值并编写初始化程序。
答:① 计算定时器T1的初值
已知晶振频率为6MHz ,则机器周期为12/fosc =2µs
使用T1定时功能,工作在方式1,定时时间为50ms ,则T1的初值为:
所以T1的初值为:TH1=9EH ,TL1=58H 。
② 定时/计数器方式寄存器TMOD 的设置
要求用T1定时、工作在方式1、软启动,所以TMOD 寄存器应按如下设置:
所以TMOD=10H 。
③ 允许T1中断,中断允许寄存器IE 设置如下:
④ T1的初始化程序如下: MOV TMOD, #10H ;置定时器1工作方式1 MOV TH1, #9EH ;送初值
MOV TL1,
#58H
MOV IE, #88H ;开中断
SETB
TR1
;启动定时器
5.10 定时器T0用于计数控制,工作在方式2,要求每计数35次产生一个中断,试计算初值并编写初始化程序。
答:① 计算T0的初值:
初值X = 28-35 = 221 = DDH 因此,TL0的初值为DDH ,重装初值寄存器TH0=DDH 。
② 定时/计数器方式寄存器TMOD 的设置:
要求用T0计数、工作在方式2、软启动,所以TMOD 寄存器应按如下设置:
所以TMOD=06H 。
③ 当T0计数到时向CPU 申请中断,所以T0应开中断,中断允许寄存器IE 设置如下:
H E us
ms
X 58940536250216==-
=EA
ES ET1EX1ET0IE =
EX0
= 88H