C51单片机高效入门(第2版)
上QQ阅读APP看书,第一时间看更新

2.5 MCS-51单片机中断系统

什么是中断?对初学者来说,中断这个概念比较抽象,其实单片机的处理系统与人的一般思维有着许多相似之处,在日常生活和工作中有很多类似的情况。假如你正在写文章,这时候手机响了,你在文稿上做个记号,然后与对方通电话,通话完毕,继续写你的文章。这就是生活中的“中断”的现象,就是正常的工作过程被突然发生的事件打断了。

2.5.1 单片机中断

对于单片机中的中央处理器处理事情也和我们写文章、接电话一样,单片机中CPU只有一个,但在同一时间内可能会面临着处理很多任务的情况,如运行主程序、数据的输入和输出、定时/计数时间已到、可能还有一些外部的更重要的中断请求要先处理。此时也得像人的思维一样停下某一样(或几样)工作先去完成一些紧急任务的中断方法。

仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。首先,什么导致引起中断,生活中很多事件可以引起中断:有人按门铃了,电话铃响了,你的闹钟响了……等等诸如此类的事件,我们把可以引起中断的事件称之为中断源,单片机中也有一些可以引起中断的事件。

所以,中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。这样类似的处理方法上升到计算机理论,就是一个资源面对多项任务的处理方式,由于资源有限,面对多项任务同时要处理时,就会出现资源竞争的现象。中断技术就是为了解决资源竞争的一个可行的方法,采用中断技术可使多项任务共享一个资源,所以有些文献也称中断技术是一种资源共享技术。

2.5.2 中断的必要性

为什么要设置中断?设中断有什么优点和功能?采用了中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时,它也提高了计算机处理故障与应变的能力。

2.5.3 中断源

中断源是指能发出中断请求,引起中断的装置或事件。中断源主要有以下几种:

外设:如A/D转换器、打印机、键盘等。

故障源:如电源掉电、运算溢出、存储器损坏等。

定时器定时到预定的时间所发出的中断请求。

2.5.4 中断优先级

单片机系统的中断源一般不止一个,若在同一时刻有两个中断源同时向CPU请求中断,那怎么办?51单片机将5个中断源划分为两个中断优先级:高优先级和低优先级。中断优先级越高,则响应优先权就越高。当CPU正在执行中断服务程序时,又有中断优先级更高的中断申请产生,这时CPU就会暂停当前的中断服务转而处理高级中断申请,待高级中断处理程序完毕再返回原中断程序断点处继续执行,这一过程称为中断嵌套。

在默认情况下单片机系统本身也将所有中断源按优先权先后排列,若同一时间同时请求中断的两个中断源不属于同一优先级,则CPU先响应优先级高的中断源,等优先级高的中断响应完了之后再响应另一中断。

2.5.5 中断响应过程

CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。

1.保护现场

中断是在执行其他任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原来的程序时,知道原来的程序在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。

如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会使程序运行紊乱,程序跑飞,自然使单片机不能正常工作。

在汇编语言中一般用如下语句保护现场:

PUSH ACC

PUSH PSW

PUSH DPH

PUSH DPL

而在C语言中程序会自动保护现场。在使用中不用对现场进行人为保护和恢复。

2.中断服务程序

既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。

3.中断返回

执行完中断服务程序后,必然要返回,中断返回就是程序从中断服务程序转回到原工作程序上来。同时,中断服务程序完成后,就需把保存的现场内容从堆栈中弹出,恢复寄存器和存储单元的原有内容,这就是现场恢复。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。在汇编语言中典型的中断返回语句如下(恢复现场的语句与保护现场的语句遵循后进先出规则):

POP DPL恢复现场

POP DPH

POP PSW

POP ACC

RETI返回