首页 理论教育 了解中断系统:单片机开发入门与典型设计实例

了解中断系统:单片机开发入门与典型设计实例

时间:2023-10-23 理论教育 版权反馈
【摘要】:图4-1 中断响应过程2.单片机中断组成原理单片机中断系统的结构如图4-2所示,5个中断分别有5个中断源,并提供2个中断优先级控制,能够实现两级中断服务程序的嵌套。IE1为外部中断1的中断请求标志位。TR0和TR1分别是T0和T1的控制位,与中断无关。

了解中断系统:单片机开发入门与典型设计实例

1.中断的基本概念

在计算机系统运行过程中,当CPU正在处理某个事件时,外部或者内部发生的某个事件请求,要求CPU迅速去处理,于是CPU会暂时中断当前的工作,转到运行请求的事件中。处理完请求的事件后,再返回到原来被中止的地方继续原来的工作,这个过程称为中断。中断流程如图4-1所示。

如果单片机没有中断控制系统,那么无论是否有内部事件或外部事件发生,CPU都必须去查询,这样CPU的大量时间就会浪费在查询是否有内部事件或者外部事件的操作上。采用中断技术完全消除了CPU在查询方式中的等待现象,大大提高了单片机的工作效率和实时性。由于中断方式的优点极为明显,因此单片机的硬件结构中都带有中断系统。

978-7-111-43463-4-Chapter04-1.jpg

图4-1 中断响应过程

2.单片机中断组成原理

单片机中断系统的结构如图4-2所示,5个中断分别有5个中断源,并提供2个中断优先级控制,能够实现两级中断服务程序的嵌套。单片机的中断系统通过4个相关的特殊功能寄存器TCON、SCON、IE和IP来进行管理,因此用户可以用软件对每个中断的开和关以及优先级进行控制。

定时器控制寄存器TCON用于设定外部中断的中断请求信号的有效形式,同时用于保存定时/计数器T0和T1的中断请求标志位。串行接口控制寄存器SCON用于保存串行接口(SIO)的发送中断标志和接收中断标志。中断控制寄存器IE用于设定各个中断源的开放或关闭。各个中断源的优先级可以由中断优先级寄存器IP中的相应位来确定,同一优先级中的各中断源同时请求中断时,由中断系统的内部查询逻辑来确定响应的顺序。

978-7-111-43463-4-Chapter04-2.jpg

图4-28 051单片机中断系统的结构

(1)中断源

单片机5个中断源都有自己的标志位,包括外部中断978-7-111-43463-4-Chapter04-3.jpg(P3.2)引脚接收的外部中断请求;外部中断INT1(P3.3)引脚接收的外部中断请求;定时器/计数器0(T0)溢出中断请求;定时器/计数器1(T0)溢出中断请求;串行接口完成一帧数据发送或接收中断请求源TI或RI。

其中978-7-111-43463-4-Chapter04-4.jpg一般称为外部中断,T0、T1和串行接口(SIO的TI和RI)则称为内部中断。在有中断请求时,由相应的中断标志位保存其中断请求信号,分别存放在特殊功能寄存器TCON和SCON中。增强型的MCS-51系列单片机,则比MCS-51系列单片机多一个中断源T2。

(2)中断优先级

单片机的中断系统具有两级优先级控制,系统在处理时遵循中断级别优先原则,多个同级的中断源同时产生中断请求时,系统按照默认的顺序先后予以响应,5个中断默认优先级见表4-1。中断优先级从中断号0~4依次降低,即中断号为0的中断优先级最高,中断号为4的中断优先级最低。

表4-1 单片机的中断

978-7-111-43463-4-Chapter04-5.jpg

(3)中断系统使用的多功能寄存器

要使用8051单片机的中断功能,必须掌握4个相关的特殊功能寄存器中特定位的意义及其使用方法。下面分别介绍4个特殊功能寄存器对中断的具体管理方法。

1)TCON。定时器控制寄存器TCON是定时器/计数器T0和T1的控制寄存器,也用来锁存T0和T1的溢出中断请求TF0、TF1标志及外部中断请求源标志IE0、IE1。TCON的字节地址88H,既支持字节操作,又支持位操作。位地址的范围是88H~8FH,每一个位单元都可以用位操作指令直接处理。其格式如下:

978-7-111-43463-4-Chapter04-6.jpg

IT0为外部中断0(INT0)触发方式控制位,用于设定INT0中断请求信号的有效方式。如果将IT0设定为1,则外部中断0为边沿(脉冲下降沿)触发方式,CPU在每个机器周期的S5P2采样978-7-111-43463-4-Chapter04-7.jpg的输入信号(即单片机的P3.2脚)。如果在一个机器周期中采样到电平,在下一个机器周期中采样到低电平,则硬件自动将IE0置为“1”,向CPU请求中断;如果IT0为0,则外部中断0为电平触发方式。此时系统如果检测到978-7-111-43463-4-Chapter04-8.jpg端输入低电平,则置位IE0。采用电平触发时,输入到978-7-111-43463-4-Chapter04-9.jpg端的外部中断信号必须保持低电平,直至该中断信号被检测到。同时在中断返回前必须变为高电平,否则会再次产生中断。概括地说,IT0=1时,978-7-111-43463-4-Chapter04-10.jpg的中断请求信号是脉冲后沿(负脉冲)有效,即P3.2从1变为0时系统认为INT0有中断请求;IT0=0时,INT0的中断请求信号是低电平有效,即P3.2保持为0时系统认为978-7-111-43463-4-Chapter04-11.jpg有中断请求。

IE0为外部中断0的中断请求标志位。如果IT0置1,则当P3.2上的电平由1变为0时,由硬件置位IE0,向CPU申请中断。如果CPU响应该中断,在转向中断服务时,由硬件将IE0复位。

可见,IT0用于设定978-7-111-43463-4-Chapter04-12.jpg中断请求的信号形式。设定了IT0后,如果INT0产生了有效的中断请求信号(P3.2出现脉冲下降沿或低电平),则由中断系统的硬件电路自动将IE0置位。单片机系统在工作过程的每一个机器周期的特定时刻(即S5P2),通过检测978-7-111-43463-4-Chapter04-13.jpg的中断请求标志位IE0是1还是0来确定978-7-111-43463-4-Chapter04-14.jpg是否有中断请求,而不是通过检测P3.2上的中断请求信号来确定978-7-111-43463-4-Chapter04-15.jpg的中断请求。IT0=1时表示有中断请求,IT0=0时则没有中断请求。INT1的情况类似,不再重复说明。

IT1为外部中断1978-7-111-43463-4-Chapter04-16.jpg的触发方式控制位。其意义与IT0相同。

IE1为外部中断1的中断请求标志位。其意义与IE0相同。(www.xing528.com)

TF0为定时器/计数器T0的溢出中断请求标志位。当T0开始计数后,从初值开始加1计数,在计满产生溢出时,由硬件使置位TF0,向CPU请求中断,CPU响应中断时,硬件自动将TF0清零。如果采用软件查询方式,则需要由软件将TF0清零。因此,系统是通过检查TF0的状态来确定T0是否有中断请求。TF0=1表示T0有中断请求,TF0=0时则没有中断请求。

TF1为定时器/计数器T1的溢出中断请求标志位,其作用与TF0相同。

TR0和TR1分别是T0和T1的控制位,与中断无关。它们将在定时器/计数器应用内容中介绍。

2)SCON。SCON为串行通信控制寄存器,主要用于设置串行接口的工作方式,同时也用于保存串行接口的接收中断和发送中断标志。其字节地址是98H,既支持字节操作,又支持位操作。位地址的范围是98H~9FH。8位中只有最低的两位与中断有关,其格式如下:

978-7-111-43463-4-Chapter04-17.jpg

RI为串行接口的接收中断标志位。8051单片机的串行通信共有4中工作方式。在串行通信的方式0中,每当接收到第8位数据时,由硬件置位RI。在其他工作方式中,若SM2=0,在接收到停止位的中间时置位RI;若SM2=1,仅当接收到的第9位数据RB8为1时,并且在接收到停止位的中间时置位RI,表示串行接口已经完成一帧数据的接收,向CPU申请中断,准备接收下一帧数据。但当CPU转到串行中断服务程序时,不复位RI,必须由用户在程序中用软件来清零RI。简单地说,串行接口在接收完一帧数据时自动将RI置位,向CPU申请中断。

TI为串行通信的发送中断标志位。在方式0中,每当发送完8位数据时由硬件置位。在其他方式中,在发送到停止位开始时置位TI,表示串行接口已经完成一帧数据的发送,向CPU申请中断,准备发送下一帧数据。要发送的数据一旦写入串行接口的数据缓冲器SBUF,单片机的硬件电路就立即启动发送器进行发送。CPU响应中断时并不清零TI,同样要在程序中用软件来清零。

3)IE。8051单片机的CPU对中断源的开放或屏蔽(即关闭),是由片内的中断允许寄存器IE(也称为中断控制寄存器或中断屏蔽寄存器)控制的。IE的字节地址是A8H,既支持字节操作,又支持位操作。位地址的范围是A8H~AFH。8位中有6位与中断有关,剩下的两位没有定义。其格式如下:

978-7-111-43463-4-Chapter04-18.jpg

EA为CPU的中断开放标志。EA=0时,CPU屏蔽所有的中断请求,此时即使有中断请求,系统也不会去响应;EA=1时,CPU开放中断,但每个中断源的中断请求是允许还是被禁止,还需由各自的控制位确定。

ES为串行接口的中断控制位。ES=1,允许串行通信中断;ES=0,禁止串行通信中断。

ET1:定时器/计数器1的溢出中断控制位。ET1=1,T1的中断开放,ET1=0,T1的中断被关闭。

EX1为外部中断1的中断控制位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1的中断。

ET0为定时器/计数器T0的溢出中断控制位。ET0=1时允许T0中断;ET0=0,禁止T0中断。

EX0为外部中断0的中断控制位。EX0=1,允许外部中断0的中断;EX0=0,禁止外部0的中断。

可见,EA=0时,所有的中断都被屏蔽,此时IE低5位的状态没有任何作用。EA=1时,可以通过对IE低5位的设置来开放或关闭相应的中断。单片机复位后,IE寄存器被清零,所有的中断都被屏蔽。IE寄存器中各个位的状态支持位寻址,用户根据要求对相应位赋值,而实现相应的中断源允许中断或禁止中断,当然也可以采用字节操作来实现。

例如,若要求开放外部中断978-7-111-43463-4-Chapter04-19.jpg,关闭内部中断,则需EA=1,EX0=1。

4)中断优先级控制寄存器IP。8051单片机的中断系统有两个中断优先级。对于每一个中断请求源都可编程为高优先级中断或低优先级中断,实现两级中断嵌套。中断优先级是由片内的中断优先级寄存器IP控制的。IP的字节地址是B8H,既支持字节操作,又支持位操作。位地址的范围是B8H~BFH。8位中有5位与中断有关,剩下的3位没有定义。其格式如下:

978-7-111-43463-4-Chapter04-20.jpg

PS为串行接口的中断优先级控制位。PS=1时,串行接口被定义为高优先级中断源;PS=0时,串行接口被定义为低优先级中断源。

PT1为定时器/计数器T1的中断优先级控制位。PT1=1,T1被定义为高优先级中断源;PT1=0,T1被定义为低优先级中断源。

PX1为外部中断1(INT1)的优先级控制位。PX=1,外部中断1被定义为高优先级中断源;PX0=0,外部中断1被定义为低优先级中断源。

PT0为定时器/计数器T0的中断优先级控制位。其功能与PT1相同。

PX0为外部中断0(INT0)的优先级控制位。其功能与PX1相同。

中断优先级控制寄存器IP的各位都由用户置位或复位,可用位操作指令或字节操作指令更新IP的内容,以改变各中断源的中断优先级,单片机复位后IP全为0,各个中断源均为低优先级中断。

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

我要反馈