微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 中断嵌套问题

中断嵌套问题

时间:10-02 整理:3721RD 点击:
我最近在学习51单片机,始终不理解中断嵌套问题,比如写一个外部中断0的函数和一个定时器中断0的函数,要想实现中断嵌套是在外部中断0的函数里面调用定时器中断0的函数吗?但是中断函数不是不用调用吗?还是直接在外部中断0函数里面直接写定时器中断0 的函数。求大神赐教。

这个问题我来,首先51单片机的中断有很多种,定时器啊,外部中断啊AD中断啊什么的,他们的触发方式都不是太一样。而你说的中断嵌套的含义实质上指的是,当你执行一个中断程序的过程中,进入另一个程序,这样的流程实际上是涉及中断的优先级的,也即是说,如果在进入中断程序A中时,如果B中断的优先级更高,则会去执行B,反之,就不执行B。你说的嵌套属于第一种情况

首先,你还不怎么理解中断这个概念,先别急着去想中断嵌套。80C51同级的中断优先级外部中断0比定时器0要高,如过你不设定中断优先级,外部中断0和定时器0同时发生中断时,外部中断先响应。中断的产生要先设定中断源,中断一但发生,如果使能了中断允许总控制位和相关外设中断允许位,工作相关寄存器和PC要入栈,然后PC跳到相关中断入口地址执行服务函数,中断入口地址是硬件的,在汇编中会明确写出入口地址。回到你的问题,如果你设定定时器0的优先级比外部中断0要高,假设现正在执行外部中断0过程中,突然定时器0溢出发生中断,由于定时器0的优先级比外部中断0的要高,所以正在执行的中断函数被请求中断,相关寄存器要被推入栈中,注意栈的大小,不要发生栈溢出,否则后果不堪设想。PC跳转到定时器0的服务函数执行,执行完后再回到外部中断0继续执行服务函数。实现两级中断嵌套。中断的嵌套并没有存在调用函数

谢谢大神,赐教啊

建议看看单片机的汇编,对理解有很大的好处

这个问题有点2啊

中断嵌套涉及到中断优先级的问题,首先单片机自身有个自然优先级,这个优先级是说当所有中断同时到来时先执行哪个(一般这种情况很少),其次就是你说的中断嵌套的问题,默认是中断执行期间,cpu是不接受其他中断的,但你设置中断优先级后,强制在cpu执行中断时可以接收更高优先级中断,也就是高优先级中断打断了低优先级中断,这样实现嵌套,建议可以看看中断向量这个概念

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top