首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

中断优先级的疑惑解决办法

2012-05-06 
中断优先级的疑惑我写的程序现象是 :定时器1中断led2闪烁的很快,定时器0中断led1每秒闪烁正常,led2先闪烁。

中断优先级的疑惑

我写的程序现象是 :定时器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。当然了现在的芯片还有分可抢占优先级和不可抢占优先级

热点排行