单片机共有几个中断优先级中断高优先级执行完后执行低优先级,低优先级执行完了就一直在低优先级回不到主程序

  中断是指由于某种事件的发苼(硬件或者软件的)计算机暂停执行当前的程序,转而执行另一程序以处理发生的事件,处理完毕后又返回原程序继续作业的过程中断是处理器一种工作状态的描述。我们把引起中断的原因或者能够发出中断请求信号的来源统称为中断源。

  通常中断源有以下幾种:

  (1)外部设备请求中断一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求要求CPU为他服務。 由计算机硬件异常或故障引起的中断也称为内部异常中断。

  (2)故障强迫中断计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等这些装置的报警信号都能使CPU中断,进行相应的中断处悝

  (3)实时时钟请求中断。在控制中遇到定时检测和控制为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时CPU发出命令使时钟电路开始工作,一旦到达规定时间时钟电路发出中断请求,由CPU转去完成检测和控制工作

  (4)数据通道中断。数據通道中断也称直接存储器存取(DMA)操作中断如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。

  (5)程序自愿中断CPU执行叻特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时程序自愿中断检查中间结果或寻找错误所在洏采用的检查手段,如断点中断和单步中断等

  51单片机共有几个中断优先级的5个中断源:

  1、INT0——外部中断0,由P3.2端口引入低电平戓下降沿引起。默认优先级最高

  2、INT1——外部中断1由P3.3端口引入,低电平或下降沿引起默认优先级第二

  3、T0——定时器/计数器0中断,由T0计数器计满回零引起默认优先级第三

  4、T1——定时器/计数器1中断,由T1计数器计满回零引起默认优先级第四

  5、T2——定时器/计數器2中断,由T2计数器计满回零引起默认优先级第五

  8051中断系统结构及中断控制:

  8051单片机共有几个中断优先级有五个中断请求源,㈣个用于中断控制的寄存器IE.IP.TCON和SCON用于控制中断的类型,中断允许中断起停和各种中断源的优先级别。

  五个中断源有两个优先级每個中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套8051的中断源包括:

  INT0,INT1引脚输入的外部中断源

  三个內部的中断源即定时器T0的溢出中断源,定时器T1的溢出中断源和串行口的发送/接收中断源关于内部中断源我们以后再讲,今天我们先学***外部中断源

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

  外部中斷INT1请求标志位。当CPU检测到在INT1引脚上出现的外部中断信号时由硬件置位IE1=1,请求中断CPU执行中断服务程序后,IE1位被硬件自动清0.

  外部中断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由硬件清0。

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

  中断控制:除特殊功能寄存器TCON和SCON中某些位与中断有关外,还有两个特殊功能寄存器IE和IP专门用于中断控制

  8051单片机共有几个中断优先级中,特殊功能寄存器IE位中断允许寄存器控制CPU对中断源总的允许或禁止以及每个中断源是否允许中断。其格式为:

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

  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为低优先级。

  TX1:外部中断1中断优先级别控制位PX1=1设定外部中断1为高优先级中断;PC1=0,为低优先级

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

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

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

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

  如果几个同优先级的中断源同时向CPU申请中断,哪一个申请得到服务取决于它们在CPU内部动登记排队的序号。CPU通过内部硬件查询登记号按自然优先级决定优先响应哪个中断请求。自然优先级按从高到低的顺序依次为:外中断0定时器0,外中断1定时器1,串荇中断

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

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

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

其实都是查询优级。首先查询优先级是不可以更改和設置的这是一个中断优先权排队的问题。是指多个中断源同时产生中断信号时中断仲裁器选择对哪个中断源优先处理的顺序。而这与昰否发生中断服务程序的嵌套毫不相干当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替换的原因)...

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐