新手提问:51外部中断0的优先级不是默认比1高么,为什么这个程序里当外部中断1执行时中断0的请求不能响应

#include<reg52.h>
#include<intrins.h>

void delay (unsigned int x)
{
unsigned int a,b;
for(a=200;a>0;a--)
for(b=x;b>0;b--);
}

void ZD0() interrupt 0
{

P0=0x55;
delay(10000);
P0=0xfe;
}

void ZD1() interrupt 2
{

P0=0xaa;
delay(10000);
P0=0xfe;
}

void main()
{
EA=1;
EX0=1;
IT0=0;

EX1=1;
IT1=0;
P0=0xfe;

while(1)
{
P0=_crol_(P0,1);
delay(1000);
}

}

你说的优先级高低是同级内部的优先级,如果不设置寄存器IP,其实它们都是低优先级,同级是不会中断嵌套的,只是内部有个优先级高低,当同级有多个中断产生时,CPU在响应内部优先级高的;

如果你要实现外部中断1嵌套中断0,必须设置IP.0(PX0)=1;
温馨提示:答案为网友推荐,仅供参考
相似回答