欢迎来到天天文库
浏览记录
ID:35432919
大小:84.81 KB
页数:4页
时间:2019-03-24
《红外遥控单片机_电子电路_工程科技_专业资料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、红外遥控单片机用户码:OOFF键位码如下//C程序#includesbitIRIN=P3八2;sbitLED=P2A1;unsignedcharlrValue[6];〃用来存放读取到的红外值unsignedcharTime;//・・声明全局函数•・〃voidlrlnit();voidDelayMs(unsignedint);voidmain(){lrlnit();while(l){unsignedchara;unsignedcharb;〃高位〃低位unsignedcharkey;lrValue[4]=lrValue[2]
2、»4;lrValue[5]=lrValue[2]&OxOf;DelayMs(70);a=lrValue[41;b=lrValue[5];key=a*16+b;switch(key)〃位选,选择点亮的数码管,{case0x45:LED=0;break;case0x46:LED=1;break;//case(2)://LSA=0;LSB=l;LSC=0;break;//case⑶://LSA=1;LSB=1;LSC=O;break;//case(4)://LSA=0;LSB=0;LSC=l;break;//case(5)://LSA=1;LS
3、B=O;LSC=1;break;//case(6)://LSA=O;LSB=1;LSC=1;break;//case(7)://LSA=1;LSB=1;LSC=1;break;}}}voidDelayMs(unsignedintx)/A).14ms误差Ousunsignedchari;while(x—)for(i=0;i<13;i++){}*******************************************************************************函数名*函数功能*输入*输出:lrlnit(
4、):初始化红外线接收:无:无*******************************************************************************ITO“;〃下降沿触发EXO=1;//打开中断0允许EA=1;〃打开总中断*******************************************************************************函数名:Readlr()*函数功能:读取红外数值的中断函数*输入:无*输出:无voidReadlr()interrupt0{u
5、nsignedcharj,k;unsignedinterr;Time=0;DelayMs(70);if(IRIN==O)〃确认是否真的接收到正确的信号err=lOOO;/A000*10us=10ms,超过说明接收到错误的信号/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/while((IRIN==0)&&(err>0))〃等待前面9ms的低电平过去{DelayMs(l);err-;}if(IRIN==l)〃如果正确等到9ms低电平{err=500;while((IRIN==l)&&(err
6、>O))〃等待4.5ms的起始高电平过去{DelayMs(l);err-;for(k=0;k<4;k++)〃共有4组数据for(j=0;j<8;j++)〃接收一组数据err=60;while((IRIN==O)&&(叭>0))〃等待信号前面的560us低电平过去{DelayMs(l);err-;}err=500;while((IRIN==l)&&(err>0))〃计算高电平的时间长度。{DelayMs(l);/A).14msTime++;err-;if(Time>30){EXO=1;return;}}lrValue[k]»=l;//k表示
7、第几组数据if(Time>=8)〃如果高电平出现大于565us,那么是1{lrValue[k]
8、=0x80;}Time=0;〃用完时间要重新赋值}}}if(lrValue[2]!=~lrValue[3]){return;
此文档下载收益归作者所有