|
void Timer0IrqHandler(void) interrupt 1 //定時器0,采用11.0592M晶振。采用定時器方式2,TL0=246重復(fù)給到TH0
{
time++;
}
void IR_INT0()interrupt 0 //外部中斷,也是紅外接收頭
{
EX0=0; //關(guān)閉外部中斷
text=5;
if(IRIN==0)//外部中斷腳,也是紅外接收口
{
TL0=246;
time=0;
TR0=1; //打開T0定時器開始計算低電平時間
while(!IRIN&&(time<1100));//9毫秒低電平
TR0=0; //關(guān)閉T0
if(time<700||(time>1000)) //判斷低電平時間跟9毫秒誤差是否太大,太大則不往后執(zhí)行
{
return; //現(xiàn)在開發(fā)板測試到這里,程序就執(zhí)行到return,怎么確定當(dāng)前time值是多少
}
}
if(IRIN==1)
{
TL0=246;
time=0;
TR0=1;
while(IRIN&&(time<550));
TR0=0;
if(time<300||(time>550))
{
return;
}
}
irok=1;//全局變量標志位,為1是紅外起始碼正確
EX0=1; //打開外部中斷
} |
|