当前位置:首页 > 单片机 > 单片机
[导读]说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。在说到中断之前,我先来定义一下优先级,明白了什么是优

说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。

在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂。

中断的优先级有两个:查询优先级和执行优先级。

什么是查询优级呢?我们从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,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

关于中断嵌套。可以这样说,当一个中断正在执行的时候,如果事先设置了中断优先级寄存器IP,那么当一个更高优先级的中断到来的时候会发生中断嵌套,如果没有设置则不会发生任何嵌套;如果有同一个优先级的中断触发,它并不是在“不断的申请”,而是将它相应的中断标志位置即IE寄存器的某位置位,当CPU执行完当前中断之后,按照查询优先级重新去查询各个中断标志位,进入相应中断。

要记住,没有设置IP时,单片机会按照查询优先级(或都说逻辑优先级)来排队进入服务。如果要想让某个中断优先响应, 则要设置IP,更改执行优先级(或者说物理优先级)。要注意的是,当设置了IP后,当低执行优先级中断在运行时,如果有高执行优先级的中断产生,则会嵌套调用进入高执行优先级的中断。如果你是用C语言写的程序,并在中断服务时 using 了寄存组,要注意,两个不同执行优先级的中断服务程序不要 using 同一组寄存器。

看两个问题,如下:

1 在各个中断都是低优先级的时候,如果定时器0的溢出进入中断。在这个中断处理的过程中,外部中断0也被触发了,那么是不是要发生中断嵌套?

2 如果定时器0发生中断的时候,进入中断处理程序,这个时候外部中断1条件触发条件满足了。因为定时器0自然优先级比外部中断1高,那么定时器0的中断处理程序继续执行。假设定时器中断处理程序执行的过程中,外部中断1的触发。条件消失了,那么等定时器0的中断处理完后,程序还是会进入外部中断1处理程序吗?

答案1:在IP事先设置了外部中断0的优先级的情况下,CUP会中止定时器0的中断服务,进入外部中断0服务程序,执行完以后再回到定时器0中断服务程序。否则不会。

答案2:肯定会进入中断的;外部中断1的触发条件满足后会置位外部1的中断标志,即使后来外部中断1的触发条件消失了,也不会清除已置位的中断标志,所以等定时器0的中断处理完后,程序判断外部中断的中断标志为1后依然会进入外部中断1处理程序的,只有在外部中断1处理程序中执行reti指令才会硬件清除外部中断1的中断标志(这也正是为什么中断返回使用reti指令而不可以用ret替换的原因)...

扩展阅读:单片机中断处理过程:中断响应 中断处理 中断返回详解

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机

在嵌入式系统开发中,单片机是不可或缺的重要组成部分。其中,STM32单片机和51单片机是两种常见的单片机芯片。本文将对比分析这两种单片机的区别,并探讨STM32单片机的优势。

关键字: stm32单片 51单片机

51单片机是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了许多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基...

关键字: 51单片机 串行通信

51单片机是一种常见的微控制器,它具有串行通信接口(Serial Communication Interface,SCI)。通过串口通信接口,51单片机可以与其他设备或系统进行串行通信,实现数据传输和控制。

关键字: 51单片机 串口通信

Pic单片机和51单片机是两种应用广泛的微控制器,它们各自具有不同的特点和优势,选择哪种单片机取决于具体应用需求。下面将对Pic单片机和51单片机进行详细的介绍和对比。

关键字: PIC单片机 51单片机 单片机

随着电子信息技术的快速发展,串行通信在各种应用中得到了广泛的应用。其中,51单片机作为一种常见的嵌入式系统,具有低功耗、高性能、易于编程等特点,常用于各种自动化控制、数据采集等系统中。而PC机具有强大的数据处理能力和丰富...

关键字: 51单片机 PC机 串行通信

51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。

关键字: 51单片机 串口通信 半双工

步进电机是一种无刷电机,可将电脉冲转换为机械旋转。顾名思义,它根据输入脉冲逐步旋转,是现代数字程序控制系统中的主要执行元件。

关键字: 51单片机 步进电机 无刷电机

1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。

关键字: 51单片机 工作原理 电路
关闭
关闭