练习与思考题8
1. 什么叫中断?计算机采用中断有什么好处?
答:外部发生的某一件事件使CPU暂停正在执行的程序,转而执行与该事件相对应的程序,执行完此程序后再返回到原来被暂停的地方,继续执行原来的程序,这样一个过程就被称为中断。 中断的好处:
(1)可以提高CPU的工作效率。 (2)可以提高实时数据的处理时效。 (3)实现实时控制。
2.什么叫中断源?AT89S51有哪些中断源?各有什么特点?
答:引起中断的原因称为中断源。AT89S51中断系统共有5个中断请求源:(1)外部中断请求0,中断请求标志为IE0。(2)外部中断请求1,中断请求标志为IE1。(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。(5)串行口中断请求,中断请求标志为TI或RI。特点:2个外部中断源,3个内部中断源。
3. 什么叫中断系统?中断系统的功能是什么?
答:实现中断处理功能的软硬件系统称为中断系统。 中断系统的功能是:
(1).对同时提出中断请求的多中断源进行优先级判断 (2).实现中断嵌套 (3).自动响应中断 (4).实现中断并返回
4.中断嵌套及中断优先级的含义是什么?
答:当CPU正在处理一个中断源请求时(执行相应的中断服务程序),发生了另外一个优先级
比它更高的中断源请求,CPU暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断源服务程序,这样的过程称为中断嵌套。
一个CPU通常可以与多个中断源相连,由于中断产生的随机性,可能出现两个或两个以
上中断源同时请求中断的情况,这就要求设计者必须根据轻重缓急给每个中断源赋予一个中断优先级。这样,当多个中断源同时向CPU请求中断时,CPU就可以率先响应中断优先权高的中断请求,而把中断优先权低的中断请求暂时搁置起来,等到处理完优先权高的中断请求后再来响应优先权低的中断。这就是中断优先级的含义。
5.AT89S51的6个中断标志位代号是什么?它们在什么情况下被置位和复位?
答:(1)外部中断0中断请求标志为IE0。(2)外部中断1中断请求标志位为IE1。(3)定时器/计数器T0溢出中断请求标志位为TF0。(4)定时器/计数器T1溢出中断请求标志位为TF1。(5)串行口发送中断请求标志位为TI。(6)串行口接收中断请求标志位为RI。
各标志位因有相应的中断请求而置位,前四个标志位因相应的中断请求被响应而复位,而后两个标志位则是在中断服务程序里通过软件复位。
6.中断允许寄存器IE各位的定义是什么?请写出允许T1定时器溢出中断的指令。
答:IE中各位的定义如下: (1)EA:中断允许总控制位
150
单片微机原理及应用
EA = 0:CPU屏蔽所有的中断请求(CPU关中断)。 EA = 1:CPU开放所有中断(CPU开中断)。 (2)ES:串行口中断允许位 ES = 0:禁止串行口中断。 ES = 1:允许串行口中断。
(3)ET1:定时器/计数器T1的溢出中断允许位 ET1 = 0:禁止T1溢出中断。 ET1 = 1:允许T1溢出中断。 (4)EX1:外部中断1中断允许位 EX1 = 0:禁止外部中断1中断。 EX1 = 1:允许外部中断1中断。
(5)ET0:定时器/计数器T0的溢出中断允许位 ET0 = 0:禁止T0溢出中断。 ET0 = 1:允许T0溢出中断。 (6)EX0:外部中断0中断允许位。 EX0 = 0:禁止外部中断0中断。 EX0 = 1:允许外部中断0中断。
允许T1定时器溢出中断的指令为:MOV IE,#88H或用位操作指令:SETB EA和
SETB ET1 7.试写出设定INT0和INT1上的中断请求为高优先级和允许它们中断的程序。此时,若INT0和INT1引脚上同时有中断请求信号输入,试问AT89S51先响应哪个引脚上的中断请求?为什么? 答:
程序为: 用位操作指令: SETB PX0 SETB PX1 SETB EA SETB EX0 SETB EX1
用字节操作指令: MOV IE,#85H MOV IP,#05H
若INT0 和INT1 引脚上同时有中断请求信号输入,则AT89S51先响应INT0引脚上的中断请求,因为在同一级别的中断源查询顺序中,INT0排在INT1之前。 8.AT89S51响应中断是有条件的,请说出这些条件。中断响应的全过程如何? 答:响应中断的条件: (1) 有中断源发出中断请求
(2) 中断中允许位EA=1.即CPU开中断
(3) 申请中断的中断源的中断允许位为1,即中断没有被屏蔽 (4) 无同级或更高级中断正在服务
第8章 AT89S51单片机的中断系统
(5) 当前指令周期已经结束
151
(6) 若现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完毕
AT89S51单片机的中断响应全过程:
CPU在每个机器周期S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。一旦响应中断,AT89S51首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令,把当前的PC值压入堆栈,以保护断点,再将相应的中断服务的入口地址送入PC,于是CPU接着从中断服务程序的入口处开始执行。对于有些中断源,CPU在响应中断后会自动清除中断标志。
9.AT89S51响应中断的时间是否是固定的?为什么?
答:AT89S51响应中断的时间不是固定的。由于CPU不是在任何情况下对中断请求都予以响应的;此外,在不同的情况下CPU对中断响应的时间也是不同的。下面以外部中断INT0为例,说明中断响应的时间。
在每个机器周期的S5P2期间, INT0端的中断请求信号被记录到TCON的IE0位,CPU在下一个机器周期才会查询这些值。这时如果满足中断响应的条件,下一条要执行的指令将是一条硬件长调用指令“LCALL”,使程序转入中断矢量入口。调用本身要用2个机器周期,这样,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需要3个机器周期,这是最短的响应时间。
如果遇到中断受阻的情况,这中断响应时间会更长一些。例如,当一个同级或更高级的中断服务程序正在进行,则附加的等待时间取决于正在进行的中断服务程序:如果正在执行的一条指令还没有进行到最后一个机器周期,附加的等待时间为1~3个机器周期;如果正在执行的是RETI指令或者访问IE或IP的指令,则附加的等待时间在5个机器周期内。若系统中只有一个中断源,则响应时间为3~8个机器周期。
10.AT89S51中,哪些中断可以随着中断被响应而自动撤除?哪些中断需要用户来撤除?撤除的方法是什么?
答:下降沿触发方式下的外部中断0和外部中断1,以及定时器/计数器T0和T1的溢出中断请求,可以随着中断被响应而自动撤除。串行口中断请求需要用户来撤除,撤除的方法是用指令将相应中断请求标位清零。另外,对于电平沿触发方式下的外部中断0和外部中断1的中断请求信号通常也需要用户通过软件来撤除。
11.试写出INT1为下降沿触发方式的中断初始化程序。
答:
ORG 0000H
AJMP MAIN
ORG 0013H
AJMP PINT1 ORG 0100H MAIN: SETB IT1 SETB EX1
SETB EA
152
HERE: AJMP HERE PINT1: RETI
单片微机原理及应用
END
12.中断响应过程中,为什么通常要保护现场?如何保护?
答:由于在执行中断服务程序时需要使用CPU的某些寄存器来进行运算、传送、保存中间结果,这样一来,就使得断点处的这些寄存器的原值被改变,中断返回后,继续执行主程序时就会产生错误。因此,在正式执行中断服务程序之前必须采取保护措施,将断点处的有关寄存器的值送入堆栈保护,具体保护哪些寄存器的内容,应根据具体情况而定。 13.AT89S51提供了哪些中断源?各中断源对应的中断入口地址是多少?
答:AT89S51提供的中断源及各中断源对应的中断入口地址如下表所示:
表8-2 中断入口地址
中断源 外部中断0 定时/计数器T0 外部中断1 定时/计数器T1 串行口中断 入口地址 0003H 000BH 0013H 001BH 0023H
14.AT89S51对各种中断提出的中断请求如何进行控制?
答:AT89S51对各种中断提出的中断请求进行中断允许及优先级的控制,具体是通过对IE、IP两个特殊功能寄存器的设置来实现。
15.子程序和中断服务程序有何异同?子程序返回指令RET和中断返回指令RETI能相互替代吗?
答:子程序和中断服务程序的相同处:都是被调用的一段程序,执行完后都能返回原调用处。不同处在于:(1)子程序调用是预先安排好的,而中断调用是随机发生的;(2)调用子程序,是为主程序服务的,而中断服务程序与主程序的程序可以毫无关系;(3)子程序是由主程序中安排的调用指令给出目标地址,而中断调用是通过隐指令获得中断服务程序的入口地址
子程序返回指令RET和中断返回指令RETI不能相互替代,虽然RET和RETI指令都有返回原调用处的功能,但是RETI还具有清除中断响应时被置1的内部中断优先级寄存器的优先级状态的功能。
16.AT89S51单片机各中断标志是如何产生的?又如何清除?
答:当单片机检测到INT0或INT1上有中断请求信号时,就将相应的中断标志位IE0或IE1置为“1”。当定时器/计数器T0或T1置为“1”。当CPU响应此四个中断中的任何一个后,相应的中断标志位由硬件自动清除,如果中断是禁止的,这些标志位也可通过软件清除。串行口完成一次发送或接收后就将相应的中断请求标志位TI或RI置“1”,这两个标志位需要用软件给与清除。
17.AT89S51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请
求的响应?
答:在一个单一中断的系统里,AT89S51单片机响应外部中断的典型时间是在3~8个机器
周期之间。
当AT89S51正在处理同级或更高优先级的中断时,则将推迟对此外部中断请求的响应。
第8章 AT89S51单片机的中断系统
153
18.AT89S51单片机响应中断后,产生硬件长调用指令LCALL,执行指令的过程包括:首先把( PC )的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送( PC ),使程序执行转向( 程序存储器 )中的中断地址区。 19.AT89S51扩展外部中断源的常用方法有哪些? 答:1) 借用定时器作为外部中断使用。
2)采用中断和查询相结合的方法扩充外部中断源。 20.写出定时器T0作为外部中断源的初始化程序。 答:
MOV TMOD,#06H MOV TL0,#0FFH MOV TH0,#0FFH SETB EA SETB ET0
SETB TR0
21.某系统有3个外部中断,分别为中断源1、中断源2和中断源3。当某一个中断源发出高电
平的中断请求信号时,即可使INT0引脚变低电平,从而引起CPU的中断响应。设优先级处
理顺序由高到低依次为中断源3、中断源2、中断源1,中断服务程序入口地址分别为2100H、2200H、2300H,试设计实现此功能的硬件电路,并编写主程序及中断服务程序(转至相应的入口即可)。 答:
(1) 硬件电路如图所示:
(2) 程序如下: ORG 0000H AJMP MAIN
154
单片微机原理及应用
ORG 0003H LJMP PINT0 ORG 0100H
MAIN: SETB IT0
SETB EX0 SETB EA
HERE: SJMP HERE PINT0: PUSH PSW
PUSH ACC JB P1.3,IR3
JB P1.2,IR2 JB P1.1,IR1 PINTIR: POP ACC POP PSW
RETI
IR3: LJMP IR3INT IR2: LJMP IR2INT IR1: LJMP IR1INT
LJMP PINTIR ORG 2100H
IR3INT: ??
LJMP PINTIR
ORG 2200H IR2INT: ??
LJMP PINTIR ORG 2300H IR1INT: ??
LJMP PINTIR
END