新聞中心

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

SAA3010紅外遙控接收的C程序源代碼

作者: 時(shí)間:2011-05-05 來(lái)源:網(wǎng)絡(luò) 收藏

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í)計(jì)數(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; //遙控?cái)?shù)據(jù)有效
}
else if(ykbnum==14) //遙控碼最后一位為1,不用補(bǔ)
{
ykcode=ykcodetemp;
ykdelay=3;
EX0=0; //暫停
ykok=1; //遙控?cái)?shù)據(jù)有效
}
else EX0=1; //ykbnum不為13,14接收無(wú)效,繼續(xù)接收
ykbnum=0;
ykcodetemp=0;
}
}

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


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉