永发信息网

51单片机,如果中断函数比较长,执行到一半又触发了这个中断,程序会停止从头执行,还是执行结束后响应中

答案:3  悬赏:50  手机版
解决时间 2021-03-23 12:55
  • 提问者网友:欲望失宠
  • 2021-03-22 16:09
51单片机,如果中断函数比较长,执行到一半又触发了这个中断,程序会停止从头执行,还是执行结束后响应中
最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-03-22 16:55
51单片机中,中断分高低两个优先级,高优先级的中断能打断低优先级的中断。

但同级中断是不能打断同级中断的!无论该中断函数有多长,在执行到一半这个中断又发生了,还是要等到该中断函数执行完毕,并再执行了一条主程序指令后才会再次进入该中断。

不过,若楼主恰好在这个低优先级中断服务程序中修改了该中断为高优先级,那么如果该中断函数比较长,执行到一半又触发了这个中断,则该中断函数就会被重新从头开始执行(中断嵌套)。这是因为除串口中断以外的其他中断,在 CPU 响应该中断,程序转入该中断函数前就已经将该中断的中断标志清零了。

另外,51的串口中断比较特别,因为需要软件清除串口中断标志,所以只要在未清串口中断标志前,是不会发生上述这样的中断嵌套的。
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-03-22 19:02
会重新执行中断函数 执行完以后再接着刚才的一半执行
  • 2楼网友:轻雾山林
  • 2021-03-22 18:32
如果同一个中断触发的话,会在你中断退出后马上又进入中断。如果退出中断时清除了标志的话,就当什么都没发生。
不会把你正在执行的中断程序给中断了。除非是另外一个更高优先级的中断被触发。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯