SC6122红外线解码程序(原创).docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
SC6122红外线解码程序(原创)

SC6122红外线解码程序(原创)/*-------------------------------------------------------------------------------- ? 遥控器解码处理程序 此程序非延时读取红外码,所以占用资源少! 算法:测两个下降沿的的时间,作判断 0?? 1?,遇到引导码,计数清0 接收完32位码后,遇到重复码则不在进入0或1的判断,避免第二次按键按键出错 ? 注意:红外接收管接收到的波形与SC6122 PDF文件里的波形不同,为翻转了的波形,所以,处理时为:9MS低电平,4.5MS高电平引导码,其他的0 \1也相应翻转. ---------------------------------------------------------------------------------*/ #i ncludereg51.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long? extern show(uchar showdata); volatile ulong IRcode=0? //32位的键代码 volatile uint customcode=0x0000;????? //16位用户码 volatile uint time_us=0x0000;????? //两个下降沿之间的时间? volatile uchar timeH,timeL;? //保存TH1 TL的值 uchar Lcustomcode=0x00;????? //低8用户码 uchar Hcustomcode=0x00;???? //高8 uchar datacode=0x00;??? //8位键数据码 uchar Rdatacode=0x00;????? //8位键数据反码? sbit power=P1^7;? //电源开关 bit NewIRcode=0;? //指示当处理完了32位码后,就有了新的遥控码 bit DataRight=0;?? //为1时读取数据正确 //------------------------------------------------------------------------------ void init()?? {? ? TMOD=0x11; //定时器0,工作方式1 ;? 定时器1,工作方式1 ? TCON=0x01; //外中断0下降沿触发,(包括TR1=0,TR0=0) ? TH0=0x3c;? //初始化定时器0,定时50ms ? TL0=0xb0; ? TH1=0x00;? //初始化定时器1 ? TL1=0x00;??? ? EA=1;??? //开全中断 ? ET0=1;?? //开放T0中断 ? ET1=1;????? //开放T1中断 ? EX0=1;?? //开放INT0 ? } //-------------------------------------interrupt0------------------------------------- void IR_ISR() interrupt 0 using 1?//遥控器中断处理函数 {?? ? static uchar cn=0;?? ? ? TR1=0;? ? timeH=TH1; ? timeL=TL1; ? TH1=0; ? TL1=0; ? TR1=1; ? ? time_us=(unsigned int)timeH; ? time_us=time_us8; ? time_us=time_us|timeL; ? if(time_us13300time_us13700) {cn=1;IRcode=0;}? //遇到引导码,就把cn清0,IRcode清0? ?? ? if(cn34) ? { ? if(time_us1000time_us1300) //0? ????????? {IRcode=IRcode|0 if(cn33) IRcode=IRcode1;} ? else if(time_us2000time_us2450) //1? ????????? {IRcode=IRcode|0if(cn33) IRcode=IRcode1;} ? } ??? ? else if(time_us11000time_us11500) {IRcode=IRcode;}; //遇到重复码 ???? ??????????????????????? ?? cn++; ? if(cn==34)

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档