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

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

众所周知,8051只允许2级中断嵌套。可是我在一本书上看到说“只要堆栈空间足够,中断嵌套的层数一般没有限制”。这个该怎么理解?

我的模糊理解是:“2级中断嵌套”与“中断嵌套层数”其实不是一回事,也就是说这样说并不冲突。但是如果只允许2级中断嵌套的话,那么假设现在有一个低优先级的中断正在执行,突然来了一个高优先级的中断,那么自然将转入高优先级的中断去执行(中断嵌套),以后无论收到哪一级的中断请求,CPU将不会响应(因为已是最高优先级别的中断),直到该中断执行完毕,然后转入下一个中断(这显然不能算是中断“嵌套”),也就是说8051的中断嵌套层数还是限制在了两层啊,求解~~~

“只要堆栈空间足够,中断嵌套的层数一般没有限制”。
这话应该是对的。
虽然只有两级优先级。但是,同一优先级的不同中断的优先性不同。
具体的是:外部中断0、T0、外部中断1、T1、串行中断。五级依次递减。
(在同一优先级)如果正在执行T1中断,这时来了个T0中断,那么可以被打断,执行T0中断服务程序时又来个外部中断0,也能被打断。这不是有三级了吗?
依次类推,应该最多5层吧!不过很少用到那么多。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-03
8051的中断优先级只有两级,因此最多允许两级中断嵌套
而对于ARM等有多个优先级的处理器,可以允许多重嵌套
第2个回答  2011-11-03
中断代码很快就要执行完。
第3个回答  2012-04-14
中断嵌套两层 。
“只要堆栈空间足够,中断嵌套的层数一般没有限制”可能指的是中断函数的层层调用吧。要么就是书的作者胡说八道,水平有限!
第4个回答  2011-11-08
就是2层,不然cpu无法处理,会出错了
相似回答