第05章思考题和习题解答

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档