51编程C51红外遥控解码程序适用于NEC编码格式的遥控器
《51编程C51红外遥控解码程序适用于NEC编码格式的遥控器》由会员分享,可在线阅读,更多相关《51编程C51红外遥控解码程序适用于NEC编码格式的遥控器(4页珍藏版)》请在装配图网上搜索。
1、C51编程:C51红外遥控解码程序,适用于NEC编码格式的遥控器ltisn这是小可之前写的,一直都在用.应用于NEC编码的遥控器接收解码,可靠性很高.特点介绍:简单易用,有重复按键识别功能.占用资源少,不需要定时器.欢迎各位提出不足之处,感谢.MSN:ltisn2008欢迎交流#includeAT892051.H/遥控器地址码#defineIR_SYSCODE0x00unsignedcharir_data;bitir_flag;unsignedcharir_repeat;voidir_init(void)IE=0x00;EA=1;IT1=1;EX1=1;/*EnableExternalInte
2、rrupt1INT1*/ir_flag=0;/*Initializeir_flag,Receivesuccessmark.*/ir_repeat=0;/*Initializeir_repeat,Repearmark.*/ir_data=0;voidir_svr(void)interrupt2/*dataIR0:syscode01:syscode12:data3:datanegation4:0x00end-mark*/unsignedchardataIR4;unsignedcharwidth;unsignedchari=0;EX1=0;/*DisableINT1*/width=0x00;/*常规
3、状态下INT1为高电平,由高电平跳变为低电平时(即下降沿)产生中断*/引导信号:9ms低电平while(!INT1)/*计算引导电平的宽度*/delay_100us();width+;if(width80)/*8ms=80*100us如果不到8ms视为干扰信号*/EX1=1;/*iflow-levelshortthan9ms,thenresetreceiver*/return;/计算4.5ms低电平宽度width=0x00;while(INT1)/*Waitforbootsignal4.5mshigh-level*/delay_100us();width+;/*notewidth*/*判断是否
4、是重复信号2.5ms*/if(width2)ir_flag=1;ir_repeat=0;EX1=1;return;ir_repeat=0;/*Receivenew_press*/4.5ms新键码引导电平if(width40)/*4ms=40*100us如果不到4ms视为错误信号,放弃接收*/EX1=1;return;/至此,引导码已校验,以下接收地址码和数据码,一共32位while(i+32)/*receive32bits*/while(!INT1);/*Waitfor0.5625mslow-levelpassed*/width=0x00;while(INT1)/*Waitfordatasig
5、nalhigh-level11680us;0560us*/delay_100us();width+;/*notehigh-levelwidth*/ir_data0x08)/*identify1or0*/ir_data|=0x01;if(i=8)/*noteIR_receivedata*/dataIR0=ir_data;if(i=16)dataIR1=ir_data;if(i=24)dataIR2=ir_data;if(i=32)dataIR3=ir_data;if(dataIR2!=dataIR3)/纠错较验EX1=1;return;/判断地址码是否正确if(dataIR0!=IR_SYSCO
6、DE)return;ir_data=dataIR2;ir_flag=1;/*receivesuccessfulflag*/EX1=1;voidpolling_ir(void)if(!ir_flag)/ifnokeypress,directreturn.return;elseir_flag=0;/功能处理if(INT0)P1=ir_data;/displaykey_codetoP1withBCDelsekey_process(ir_data);/executespecialfunction/延时100us/crystalfrequence:12MTosc=1us/DJNZ指令双字节两周期耗时2*Tosc=2*1us=2us/delaytime=2us*48=96usvoiddelay_100us(void)unsignedchari=48;while(-i); 通常来说不用定时器可以,但是最好配置一个计数器,主要用来做带宽处理,方便与由于硬件造成速率偏差的校正 不好:所有的ir处理在中断处理! 有更好的方法:每次中断,读Time值,得到一位数据的值:leadcode或repeatcode或数据!这样,系统反映速度快!ltisn的方法有个问题:一次ir解收,可能要100来ms,在这段时间不能做其他事!如果你的系统有led,当有ir时,你的led闪的很厉害!
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。