6121代碼,外部中斷0,at89s52
Void int0()中斷0 //外部中斷1服務函數,紅外解碼器。
{
靜態uchar魏;//定義靜態變量
靜態uchar pp//定義靜態變量
如果(TT & lt;56 & amp& ampTT & gt;50){ D2 = 0;TT = 0;PP = 0;魏= 0;}//Start信號壹致,標記d2為0,清除所有變量。
如果(TT & gt;11)TT = 0;
if(D2 = = 0 & amp;& ampTT & gt;=4)
{
buf[PP]& gt;& gt=1;
如果(TT & gt;5)buf[PP]| = 0x 80;//如果時間大於780us,則認為已經接收到數據1。
wei++;
如果(魏==8)
{
pp++;
魏= 0;
if(PP = = 4){ PP = 0;D2 = 1;}//當接收到4個字節時,標誌位清零。
}//D2為0時,中斷進入8次,表示接收到壹個字節的數據,字節數加1。
}
TT = 0;//每次進入中斷時清0。
}
Void timer1()中斷3 //紅外解碼時序
{
TT ++;
}