51单片机外部中断0为何不能打断外部中断1???

复位之后两个中断都可以进去,但是进入其中一个另外一个无法打断,为何????

呵呵,前面几位网友,回答都是错的。

网友说:

  外部中断0优先级高于外部中断1

  同优先级情况下,外部中断0还是会比的外部中断1更优先;

都是不对的。

你没有设置中断短优先级,那么,它们,就都是低级的。

要想嵌套,必须有高、低两个级别。

同样的优先级,是不能出现中断嵌套的。

只有高级的,才能中断低级的。




温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-19
同优先级的情况下,外部中断0可以打断外部中断1,而外部中断1不可以打断外部中断0;
因为同优先级情况下,外部中断0还是会比的外部中断1更优先;

好像不能在中断里有while循环(记得网上有人说过,具体为什么忘记了)
可以定义一个全局变量,比如 char a=2;
把中断0里的内容改成一句就行,改成 a=0;
把中断1里的内容改成一句就行,改成 a=1;
然后在主函数里的while里写一个判断

if (a!=1&&a!=2)
waterfall_light4();
else

waterfall_light3();追问

我就很懵逼为啥不能中断while

第2个回答  2019-10-19
1. 外部中断0优先级高于外部中断1
2. 中断里面不要放While(1)
3. 你程序里面只是初始化了两个中断,至于你干了什么动作,没人知道,当你触发中断0时,中断1肯定是执行不了的,中断0优先级高追问

我触发外部中断1的时候,外部中断1不是应该可以触发吗?

我触发外部中断1的时候,外部中断0不是应该可以触发吗?

但是我中断1触发的时候,中断0不能中断外部中断1的while

追答

触发中断1时,只要没有触发中断0,中断1就会正常触发

本回答被网友采纳
第3个回答  2019-10-19
你进入中断服务程序以后会将中断给关闭了,你试试在int1的中断服务程序里面打开中断并是能int0看看行不行。
相似回答