1,51单片机硬件支持的最大中断嵌套深度是几级

程序调用的嵌套多少层都可以,因为程序是顺序执行的,只要你有调用,就会进去,执行完就出来,说简单点就是按顺序执行的一条条语句,这也与单片机无关,是c语言的性质。一般只有中断才有嵌套的限制。

51单片机硬件支持的最大中断嵌套深度是几级

2,51单片机c语言中断嵌套的困惑

“只要堆栈空间足够,中断嵌套的层数一般没有限制”。这话应该是对的。虽然只有两级优先级。但是,同一优先级的不同中断的优先性不同。具体的是:外部中断0、T0、外部中断1、T1、串行中断。五级依次递减。(在同一优先级)如果正在执行T1中断,这时来了个T0中断,那么可以被打断,执行T0中断服务程序时又来个外部中断0,也能被打断。这不是有三级了吗?依次类推,应该最多5层吧!不过很少用到那么多。

51单片机c语言中断嵌套的困惑

3,C语言51单片机中断嵌套问题

对于这个,要这么看:假设中断A是优先级高的中断,中断B是优先级低的中断如果在正常执行的过程中,发生中断A,那么,中断A执行完成后,会返回正常程序;如果在正常执行过程中,发生中断B,又在中断B处理过程中发生中断A,那么,中断A执行完成后,一定要返回的是中断B,这是由硬件决定的,不是软件决定的,所以,软件没有任何指令可以让中断A执行完成后直接跳过还没有执行完的中断B而直接回到主程序,因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断B,但是因为你原来的中断B还没有执行完,所以,仍然要把没执行完的部分执行下去,才能返回到正常程序.对于ARM系列的可以,对于51来说,是不行的,因为51软件指令不允许修改PC寄存器的值

C语言51单片机中断嵌套问题


文章TAG:51中断嵌套能嵌多少层中断  中断嵌套  多少  
下一篇