中断嵌套的中断优先级

中断嵌套的中断优先级,第1张

优先级高的中断源可以中断优先级低的中断服务程序,这就形成了中断服务程序中套着中断服务程序的情况,即形成了所谓的中断嵌套

MCU暂停现行程序而转去响应中断请求的过程称为中断响应;为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序,硬件将中断源分为若干个级别,称作中断优先级。 中断的优先级有两个:查询优先清慎级和执行优先级。

查询优先级是datasheet或书上的默认(IP寄存器不做设置,上电复位后为00H)的优先级:

外部中断0>定时/计数器0 >外部中断1 >定时/计数器1 >串行中断

或int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART

或PX0>PT0>PX1>PT1>PS>......

其实都是查询优级。首先查询优先级是不可以更改和设置的。这是一个中断优先权排队的问题,是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序。而这与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。

例如:当计数器0中断和外部中断1(按查询优先级,计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。 中断的执行优先级就是你对IP寄存器的设置了。在2个优先级的情况下,某位为1,则相应的中断源为高优先级;为0,则为低优先级。

关于中断的优先级有三条原则:

1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求;

2、正在进行的中断过程不能被新猜握的同级或低优穗正庆先级的中断请求所中断;

3、正在进行的低优先级中断服务,能被高优先级中断请求中断;

若:同一执行优先级中的中断申请不止一个时,则有一个中断优先权排队问题。同一执行优先级中断的排队,由中断系统硬件确定的自然优先级形成,优先权自高到低的顺序即:

外部中断0>定时/计数0>外部中断1>定时/计数1>串行接口

例如:设置IP =0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

8331单片机本身不直接提供多级(三级以上)的中断嵌套服务单片机,中断优先级,嵌套MCS-51系列单片机以其优越的性能价格比,在智能仪表、实时控制和机电一体化中得到广泛地应用。尽管它功能比较强,但对于某些场合需要多级(三级瞎昌凯以上)的中断嵌套,8031单片机就不能简单的实现。本人结合工作,发现只要增加几条指令就可实现三级以上的中断嵌套,使8031单片机有多中断优先级功能。(一)opl单片机中断优先级控制8031单片机芯片本身有两个中断优先级,对于每一个中断请求源,可用编程来确定高优先级中断或低优先级中断,可实现二级中断嵌套。为实现二级中断优先级,单片机中断系统有两个不可寻址的优先级状态触发器,一个指出CPU是否正在执行高优先级中断服务程序,另一个指出CPU是否正在执行低级中断服务程序。这两个触发器的“1”状态分别屏敝所有的中磨唤断源申请和同一优先级的其它中断源申请。其中断优先级控制由片内中迅碰断优先级寄存器(IP)控制!

是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在简游姿执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。

其实就是更高一级的中断的“加塞磨核”,处理器正在执行着中断,又接受了更急的另一件“拦绝急件”,转而处理更高一级的中断的行为!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12249106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存