新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于C語言的SAA3010紅外遙控接收的源代碼

基于C語言的SAA3010紅外遙控接收的源代碼

作者: 時間:2012-08-03 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/171080.htm

void intx0() interrupt 0 using 2 //使用外部中斷0,接P3.2口
{
ykbtc=TH1;TH1=0;TL1=0;TR1=1;ET1=1;
switch(ykbnum)
{
case(0):
ykbnum=1;
break;
case(1):
if(ykbtc==6)ykbnum=2;
else ykbnum=0;
break;
case(2):
if(ykbtc==6||ykbtc==9)ykbnum=3;
else ykbnum=0;
break;
case(3):
if(ykbtc==9||ykbtc==6){ykbnum=4;}
else ykbnum=0;
break;
default:
if(ykbnum7)if(ykbtc==6)ykbnum++;
else ykbnum=0;
else
{
if(ykbtc==6){if(ykcodetemp0)ykcodetemp=ykcodetemp*2+1;
else ykcodetemp=ykcodetemp*2;
ykbnum++;
}
else if(ykbtc==9){ if(ykcodetemp0){ykbnum++;ykcodetemp=ykcodetemp*2;}
else {ykbnum+=2;ykcodetemp=ykcodetemp*2;ykcodetemp=ykcodetemp*2+1;}
}
else if(ykbtc>11ykbtc15)
{ykbnum+=2;ykcodetemp=ykcodetemp*2;ykcodetemp=ykcodetemp*2+1;}
else if(ykbtc>30){EX0=1;}
else ykbnum=0;
}
}
}

void intt1() interrupt 3 using 3 //使用定時計數(shù)器1
{
if(ykdelay){ykdelay--;EX0=0;} //ykdelay不為0暫停
else
{
if(ykbnum==13) //碼最后一位為0,補(bǔ)0
{
ykcode=ykcodetemp*=2;
ykdelay=3;
EX0=0; //暫停
ykok=1; //遙控數(shù)據(jù)有效
}
else if(ykbnum==14) //遙控碼最后一位為1,不用補(bǔ)
{
ykcode=ykcodetemp;
ykdelay=3;
EX0=0; //暫停
ykok=1; //遙控數(shù)據(jù)有效
}
else EX0=1; //ykbnum不為13,14接收無效,繼續(xù)接收
ykbnum=0;
ykcodetemp=0;
}
}

/*
// 測試主函數(shù)內(nèi)容
main()
{
YkInit();
led_test(); //4LED測試函數(shù)
for(;1;) //主程序
{
if (YkTest())
led_showhh(YkGetcode());
led_delay(10);
}
}

紅外遙控器相關(guān)文章:紅外遙控器原理

上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉