首页 理论教育 中断的基本概念及应用

中断的基本概念及应用

时间:2023-06-22 理论教育 版权反馈
【摘要】:中断系统的应用大大提高了计算机效率。这种程序在执行过程中被打断的情况称为中断。引起中断的原因,中断申请的来源称为中断源。对非屏蔽中断,用户不能通过软件加以禁止,一旦有中断申请,CPU必须予以响应。允许中断称中断开放,不允许中断称中断屏蔽。

中断的基本概念及应用

中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率

1.中断的概念及功能

生活中,我们常常会碰到这样的情况,一个事件在进行过程中被打断,需先行处理另一个事件。例如,在看书时,手机铃响了,我们应放下书接听,完成谈话,挂断后才能继续看书。“看书”过程被“接听手机”这一事件“中断”。单片机系统在运行过程中也有这种现象,即正常的工作过程被外部设备或事件中断。

计算机在执行程序的过程中,由CPU以外的服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行,转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中被打断的情况称为中断。中断处理过程如图3.1所示。

图3.1 中断处理过程

中断之后所执行的处理程序称为中断服务程序或中断处理子程序。原来正常运行的程序称为主程序。主程序被断开的位置(或地址)称为断点。引起中断的原因,中断申请的来源称为中断源。中断源要求服务的请求称为中断请求(或中断申请)。

调用中断服务程序的过程类似于调用子程序,其区别在于,调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定。因为中断的发生取决于申请中断的外部事件,无法事先在程序中安排指令,中断服务程序的处理过程是由硬件自动完成的。

由于单片机是单任务系统,在某一时刻只能执行一个任务,而中断系统使得单片机能够应付多个事件的发生。中断系统具有以下功能:

(1)分时操作。中断可以解决CPU与外设之间速度不一致的矛盾,使快速CPU和慢速外设同时工作。CPU在启动外设工作后,继续执行主程序,当外设完成某一任务时,发出中断申请,CPU中断主程序,转而执行外设相应的中断服务程序,中断处理完之后,CPU恢复执行主程序。这样,CPU无须一直监视外设的工作状态,可以与多个外设并行工作,从而大大提高CPU的工作效率。

(2)实时处理。在实时控制中,现场的各种数据和信息处于随时变化的状态。当这些外部条件产生变化时,可根据要求随时发出中断申请,请求CPU及时处理,避免了长时间等待,从而实现实时处理。

(3)故障处理。针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。

2.单片机中断系统及管理

MCS-51单片机的中断系统,共有5个中断源,2个中断优先级,4个相关特殊功能寄存器,其内部结构如图3.2所示。

图3.2 MCS-51单片机中断系统内部结构

1)中断源

MCS-51有5个中断源,2个外部中断(INT0、INT1),2个定时器溢出中断(T0溢出、T1溢出)和1个串行口中断,各中断源对应的中断服务程序入口地址及中断信号产生的条件见表3.2。

表3.2 中断入口地址及中断信号产生

2)中断控制寄存器

与中断控制相关的特殊功能寄存器包括TCON、SCON、IE及IP。

(1)TCON(Timer Control)定时器/计数器控制寄存器。TCON用于锁存外部中断请求标志以及定时器/计数器控制,其位格式定义见表3.3。

表3.3 TCON位格式定义

TF1:定时器T1溢出中断标志位。当定时器T1计满溢出(定时器T1从全1变为全0)时,硬件使T1置1,向CPU发出中断请求,表明定时时间到,申请进行中断处理。CPU响应中断后,由硬件(或软件)对TF1清0。

TR1:定时器T1运行控制位,由软件置位或清0。TR1置1时,定时器T1启动;TR1清0时,定时器T0停止。

TF0:定时器T0溢出中断标志位,功能与TF1类似。

TR0:定时器T0运行控制位,功能与TR1类似。

IE1:外部中断1请求标志位。当img引脚上中断请求信号有效时,则IE1由硬件置1,向CPU申请中断。

IT1:外部中断1触发方式控制位。当IT1=0时,img电平触发方式,CPU每个机器周期对P3.3脚的输入电平进行采样,若采样为低电平,则IE1置1,发出中断请求;若采样为高电平,则认为无中断请求,IE1清0。在此工作方式下,中断响应后,无论硬件还是软件均不能自动对IE1清0,故中断返回前必须撤销P3.3脚上的低电平,否则会再次响应中断,造成错误处理。当IT1=1时,img为边沿触发方式,CPU对P3.3脚信号采样为下降沿信号时,认为中断请求信号有效,则IE1置1,发出中断请求。在边沿触发工作方式下,当外部中断1的请求被CPU响应后,IE1将由硬件自动清0,无须软件清0。

IE0:外部中断0请求标志位,功能与IE1类似。

IT0:外部中断0触发方式控制位,功能与IT1类似。

(2)SCON(Serial Control)串行口控制寄存器。SCON位格式定义见表3.4。

表3.4 SCON位格式定义

TI:串行口发送中断标志位。当串行口发送完一个字符后,由硬件对TI置1,产生中断请求。当CPU响应中断后,必须由软件对TI清0。

RI:串行口接收中断标志位。当串行口接收完一个字符后,由硬件对RI置1。RI同样是由软件清0。

(3)IE(Interrupt Enable)中断允许控制寄存器。计算机中断系统有两种不同类型的中断:一类称为非屏蔽中断,另一类称为可屏蔽中断。对非屏蔽中断,用户不能通过软件加以禁止,一旦有中断申请,CPU必须予以响应。对可屏蔽中断,用户则可以通过软件来控制是否允许某个中断源的中断。允许中断称中断开放,不允许中断称中断屏蔽。

MCS-51系列单片机的5个中断源都是可屏蔽中断,各中断源的开放与禁止由中断允许控制寄存器IE控制。

IE寄存器位格式定义见表3.5。

表3.5 IE寄存器位格式定义

EA:CPU中断允许控制位。EA相当于控制所有中断源开放与屏蔽的总开关,当EA=1时,开放所有中断,各中断源的允许与禁止可通过相应的中断允许位单独加以控制;当EA=0时,禁止所有中断。

ES:串行口中断允许位。当ES=1时,允许串行口中断;当ES=0时,禁止串行口中断。

ET1:定时器T1中断允许位。当ET1=1时,允许T1中断;当ET1=0时,禁止T1中断。

EX1:外部中断1img中断允许位。当EX1=1时,允许外部中断1中断;当EX1=0时,禁止外部中断1中断。

ET0:定时器T0中断允许位。当ET0=1时,允许T0中断;当ET0=0时,禁止T0中断。

EX0:外部中断0img中断允许位。当EX0=1时,允许外部中断0中断;当EX0=0时,禁止外部中断0中断。

8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断。因此,在使用中断前必须用指令设定EA和相应中断源允许位为1,中断源才能开放。

例如,只允许定时器T1中断,则开放中断的指令为

SETB EA ;EA置1

SETB ET1 ;ET1置1

或用一条字节指令:

MOV IE,#88H ;EA置1,ET1置1

(4)IP(Interrupt Priority)中断优先级控制寄存器。MCS-51单片机有高、低两个中断优先级。由于CPU同一时间只能响应一个中断请求,因此,当两个或者两个以上中断源同时发出中断申请时,需要根据中断源的优先级别,按高级优先的原则顺序响应。中断优先级控制寄存器IP用于设置各中断源优先级,IP的各位均可由软件置1或清0,1表示高优先级,0表示低优先级。IP位格式定义见表3.6。

表3.6 IP位格式定义

ES:串行口中断优先级控制位。(www.xing528.com)

ET1:定时器T1中断优先级控制位。

EX1:外部中断1中断优先级控制位。

ET0:定时器T0中断优先级控制位。

EX0:外部中断0中断优先级控制位。

系统复位后,IP低5位全部0,所有中断源均设定为低优先级中断。可通过指令设定中断源为高优先级或低优先级中断。

3)中断优先级控制

MCS-51的中断系统只有两个优先级,如果几个同一优先级的中断源同时向CPU申请中断,则CPU通过内部硬件查询逻辑,按自然优先级顺序确定先响应哪个中断请求。自然优先级由硬件形成,顺序见表3.7。

表3.7 MCS-51中断源自然优先级顺序

中断优先响应有以下三条原则:

(1)高优先级的中断请求可以打断正在执行的低优先级中断。

(2)同级或低优先级的中断请求不能打断正在执行的中断。

(3)两个以上同级中断源同时向CPU申请中断时,CPU按自然优先级顺序确定先响应哪一个中断。

在实际应用中,将IP寄存器和自然优先级结合使用,就可以自由控制各中断源的响应顺序。

4)中断嵌套

当CPU正在执行某个中断服务程序时,若有更高优先级的中断源发出中断请求,则CPU会中断当前中断服务程序,并保留程序断点,转而响应高级中断,待高级中断处理结束以后,再返回被中断的中断服务程序,如图3.3所示,这个过程称为中断嵌套。

由图3.3可知,子程序嵌套和中断嵌套有类似之处,但是,子程序嵌套是在程序中事先安排好的,而中断嵌套却是随机发生的。

3.中断处理过程

单片机中断处理过程可分为中断响应、中断响应过程和中断返回三个阶段。中断处理过程如图3.4所示。

1)中断响应

CPU响应中断必须满足以下条件:

图3.3 中断嵌套示意图

图3.4 中断处理过程

(1)有中断源向CPU发出中断申请,且CPU中断控制和申请中断的中断源控制均处于开放状态。

(2)无同级或更高级的中断正在服务。

(3)CPU已执行完当前指令。

(4)CPU正在执行的不是RETI中断返回指令或访问IE和IP的指令。

2)中断响应过程

中断响应过程包括断点保护和中断服务程序的入口地址跳转。首先,中断系统通过硬件自动生成长调用指令(LCALL),将断点地址压入堆栈保护,然后将对应的中断入口地址装入程序计数器PC(由硬件自动执行),跳转到该中断入口地址,执行相应的中断服务程序。需要注意的是,单片机响应中断后只保护断点而不保护现场信息(累加器A、状态寄存器PSW和其他寄存器数据),也不能清除串行口中断标志TI和RI,因此,在中断服务程序编写的过程中,需要增加相关指令予以处理。

各中断源的中断入口地址之间只相隔8个字节,无法容纳一般的中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,将中断服务程序转至用户指定的其他空间。

例如:采用外部中断0中断,其中断入口地址为0003H,中断服务程序名为INT0,指令形式为

ORG 0003H ;外部中断0入口

AJMFP TEST ;转向中断服务程序

……

TEST: ;外部中断0中断服务程序

……

RETI ;中断返回

中断服务程序从中断入口地址开始执行,到返回指令RETI为止,一般包括保护现场和完成中断源请求的服务两部分内容。保护现场,即将累加器A、状态寄存器PSW或其他一些主程序和中断服务程序都会用到的寄存器数据,压入堆栈予以保护,防止因使用冲突造成数据丢失,导致程序混乱。执行完中断处理程序后,在中断返回前再弹出堆栈,恢复现场。

中断服务程序编写还需注意以下几点:

(1)若要在执行当前中断程序时禁止其他更高优先级中断,需先用软件关闭CPU中断,或用软件禁止相应高优先级的中断,在中断返回前再开放中断。

(2)在保护和恢复现场时,为不使现场数据遭到破坏或造成混乱,一般在此时CPU不再响应新的中断请求。因此,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断。同样,在恢复现场前也应先关中断,恢复之后再开中断。

(3)中断服务程序中用到的寄存器需要保护,中断服务程序不与主程序共用累加器和任何寄存器,无须保护现场。

3)中断返回

中断返回是指中断服务完后,计算机返回原来断点的位置,继续执行原来的程序。中断返回由中断返回指令RETI来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,并通知中断系统已完成中断处理,并同时清除优先级状态触发器

中断源发出中断请求后,相应的中断请求标志位被置1。CPU响应中断请求后,在中断返回前,应删除该中断请求标志,否则会再次响应该中断,进入死循环。MCS-51各中断源中断请求标志方法如下:

(1)对于定时器/计数器T0、T1溢出中断,CPU响应中断后立即由硬件自动清除其中断标志位TF0或TF1,无须采取其他措施。

(2)对于外部中断0、外部中断1,若采用边沿触发方式,CPU 响应中断后由硬件自动清除其中断标志位IE0或IE1。

(3)对于外部中断0、外部中断1,若采用电平方式,CPU在响应中断后,硬件不会自动清除其中断请求标志位IE0或IE1,同时,也不能用软件将其清除,所以,在CPU响应中断后,应立即撤除INT0或INT1引脚上的低电平。否则会引起重复中断。一般通过硬件和软件相结合才能撤除,如图3.5所示。外部中断请求信号加在D触发器的CLK端。把D端接地,当外部中断请求的正脉冲信号出现在CLK端时,Q端输出0,INT0或INT1为低,外部中断向单片机发出中断请求。利用P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务程序中采用两条指令来撤销外部中断请求。

ANL P1,#0FEH ;P1.0为低电平

ORL P1,#01H ;P1.0为高电平

(4)对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在串行口中断服务程序中用软件将其清除。

图3.5 撤销外部中断请求电路

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈