新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于C语言的SAA3010红外遥控接收的源代码

基于C语言的SAA3010红外遥控接收的源代码

作者:时间:2012-08-03来源:网络收藏

本文引用地址:http://www.eepw.com.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 //使用定时计数器1
{
if(ykdelay){ykdelay--;EX0=0;} //ykdelay不为0暂停
else
{
if(ykbnum==13) //码最后一位为0,补0
{
ykcode=ykcodetemp*=2;
ykdelay=3;
EX0=0; //暂停
ykok=1; //遥控数据有效
}
else if(ykbnum==14) //遥控码最后一位为1,不用补
{
ykcode=ykcodetemp;
ykdelay=3;
EX0=0; //暂停
ykok=1; //遥控数据有效
}
else EX0=1; //ykbnum不为13,14接收无效,继续接收
ykbnum=0;
ykcodetemp=0;
}
}

/*
// 测试主函数内容
main()
{
YkInit();
led_test(); //4LED测试函数
for(;1;) //主程序
{
if (YkTest())
led_showhh(YkGetcode());
led_delay(10);
}
}

红外遥控器相关文章:红外遥控器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭