中断优先级的疑惑
我写的程序现象是 :定时器1中断led2闪烁的很快,定时器0中断led1每秒闪烁正常,led2先闪烁。定时器0的优先级高,应该是定时器0先闪烁,定时器1再闪烁,求指教
#include <AT89X52.H>
sbit led1=P0^0;
sbit led2=P0^7;
int count=0;
int num=0,k=0;
void int1() interrupt 1
{
TH0=0XED; //装定时器初值实现5ms定时
TL0=0XFF;
count++;
if(count==200)
{
led1=~led1;
count=0;
}
}
void int3() interrupt 3
{
TH1=0XED;
TL1=0XFF; //装定时器初值实现5ms定时
num++;
if(num==200)
{
led2=~led2;
// buz=~buz;
num=0;
k++;
}
if(k==100) //把led2关掉
{ET1=0;}
}
void main()
{
TMOD=0X01; //定时器工作在模式1下
TH0=0XED; //装定时器初值实现5ms定时
TL0=0XFF;
TH1=0XED;
TL1=0XFF;
TR1=1;
TR0=1;
EA=1;
ET0=1;
ET1=1;
led1=1;
led2=1;
while(1)
{ }
}
[解决办法]
把TMOD=0X11,你懂的!
[解决办法]
注意优先级是,谁有优先的权力,而不是说一定谁先谁后。就是说A优先级高 可以自B运行的时候中断B。当然了现在的芯片还有分可抢占优先级和不可抢占优先级