中断系统与保护现场:单片机中断处理的关键要点

下面我们看看8051中断系统结构及中断控制:8051单片机中,特殊功能寄存器IE位中断允许寄存器,控制CPU对中断源总的允许或禁止以及每个中断源是否允许中断。8051单片机具有两个中断优先级,每个中断源可编程为高优先级中断或低优先级中断,并可实现二级中断嵌套。

当CPU正在处理一个中断请求时,如果有另一个优先级更高的中断请求出现,CPU会暂时停止处理前一个中断,转而处理优先级更高的中断请求,处理完成后再继续执行原来的中断处理程序,这个过程称为中断嵌套,这样的中断系统称为多级中断系统。

由于外部异步事件对CPU程序的中断具有随机性,因此,当CPU转而执行中断服务程序时,除了硬件自动将断电地址,也就是16位PC程序计数器的值压入堆栈外,还要注意保护好相关的工作寄存器、累加器、标志位等信息,这个过程通常叫做保护现场。当执行完中断服务程序后,再将原来的工作寄存器、累加器、标志位等内容恢复过来,这个过程叫做恢复现场;最后执行中断返回指令,自动弹出断电PC,返回主程序,继续执行被中断的程序。

我们先来看一下8051的中断体系结构及中断控制:

8051单片机有5个中断请求源,有4个中断控制寄存器IE.IP.TCON和SCON,分别用来控制各类中断源的中断类型、中断允许、中断启停、优先级等。

5个中断源有两种优先级,每个中断源都可以编程设置为高优先级或低优先级中断,可以实现两级中断服务程序的嵌套。8051的中断源包括:由INT0、INT1引脚输入的外部中断源;3个内部中断源,分别是定时器T0的溢出中断源、定时器T1的溢出中断源和串口的发送/接收中断源。

从INT0、INT1引脚输入的两个外部中断源及其触发方式控制位锁存于特殊功能寄存器TCON的低四位,格式如下:

IE1,即TCON.3:外部中断INT1请求标志。当CPU在INT1引脚上检测到外部中断信号时,硬件设置IE1=1,请求中断。CPU执行完中断服务程序后,IE1位被硬件自动清0。

IT1,即TCON.2:外部中断INT1请求类型、触发方式控制位,由软件设置其为1或者清0,来控制外部中断1的触发类型。

IT1=0,外部中断1设置为电平触发方式,当引脚INT1输入低电平时,IE1置位,请求中断。CPU在每个机器周期的S5P2期间对INT1的输入电平进行采样,当采样到低电平时,设置IE1=1。当采用电平触发方式时,输入到引脚INT1的外部中断源必须保持有效电平,直到CPU响应程序为止。同时,在执行中断服务程序之前,必须撤销外部中断源的有效电平,否则会产生另一个中断。

IT1=1,外部中断1设置为边沿触发方式,CPU每个机器周期采样INT1引脚的电平。如果连续两次采样中,一个周期INT1引脚采样为高电平,下一个周期INT1引脚采样为低电平,则硬件自动将INE1清0。由于每个机器周期采样一次外部中断输入电平,因此外部中断源输入的高低电平时间必须维持12个振荡周期以上,才能保证CPU检测到负跳变信号,也就是下降沿。

IEO,即TCON.1:外部中断请求标志。当IE0=1时,外部中断0向CPU请求中断。当CPU响应外部中断时,IE0被硬件清零。

ITO,即TCON.0:外部中断0触发方式控制位。当IT0=0时,外部中断0设置为边沿触发方式。当IT0=1时,外部中断0设置为边沿电平触发方式。其功能与IT1类似。

中断控制:除了特殊功能寄存器TCON、SCON中有一些与中断相关的位外,还有两个特殊功能寄存器IE、IP专门用于中断控制。

允许中断 IE:

在8051单片机中,特殊功能寄存器IE为中断允许寄存器,控制CPU总体上是否允许或禁止中断源,以及各个中断源是否允许中断。其格式为:

EA:中断允许位。EA=1时,CPU允许中断;EA=0时,CPU禁止所有中断请求。

ES:串口中断使能位。ES=1时,串口中断使能;ES=0时,串口中断禁止。

EX1:T0溢出中断使能位。ET0=1,使能T0中断;ET0=0,禁止T0中断。

EX0:外部中断使能位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。

8051系统复位后,IE中的所有位都被清除为0,即所有中断都被禁止。

中断优先级设置寄存器IP。8051单片机具有两个中断优先级。每个中断源都可以编程为高优先级中断或低优先级中断,并可实现两级中断嵌套。高优先级中断源可以中断正在执行的低优先级中断服务程序。

相同或更低优先级的中断源不能打断正在执行的中断程序。为此,在8051中断系统中,内部有两个优先级状态触发器,指示CPU正在执行高优先级还是低优先级的中断服务程序,从而分别屏蔽所有中断请求和同级别的其他中断源请求。

特殊功能寄存器IP是中断优先级寄存器。

各个中断源优先级的控制位可以由用户通过软件设置,格式如下:

PS:串口中断优先级控制位。PS=1设置串口为高优先级中断;PS=0设置串口为低优先级中断。

PT1:T1中断优先级控制位。PT1=1时,设置定时器T1为高优先级中断;PT=0时,设置定时器T1为低优先级中断。

TX1:外部中断1中断优先级控制位。PX1=1设置外部中断1为高优先级中断;PC1=0设置其为低优先级中断。

PT1:T1中断优先级控制位。PT1=1时,设置定时器T1为高优先级中断;PT1=0时,设置定时器T1为低优先级中断。

PT0:T0中断优先级控制位。PT1=1时,设置定时器T0为高优先级中断;PT0=0时,设置定时器T0为低优先级中断。

PX0:外部中断优先级控制位。PX0=1,设置INT1为高优先级。PX0=0,设置为低优先级。

8051复位后,IP的低五位全部清除为0,将所有中断源设置为低优先级中断。

如果多个相同优先级的中断源同时向 CPU 请求中断,那么哪个中断源能够得到服务取决于它们在 CPU 中注册的顺序。CPU 通过内部硬件查询注册号,并根据自然优先级决定先响应哪个中断请求。自然优先级从高到低的顺序为:外部中断 0、定时器 0、外部中断 1、定时器 1、串行中断。

单片机

粉丝提问:自学还是报班?培训机构对软件学习有用吗?

2024-5-31 21:00:30

单片机

职业教育创新发展,高职高专院校就业率与本科院校平分秋色

2024-5-31 22:00:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索