红外摇控HS5104解码程序.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
红外摇控HS5104解码程序 现在市面上,风扇摇控器都用HS5104作编码芯片,关键是以低格占据市场。用过HS5104的朋友都知道,它的工作电压比较高,在低电压3V以下工作时,经常会出错,很多朋友都说HS5104的接收程序不稳定。其实,大多数是HS5104工作不稳定引起的,只要你接收程序合理,多接收几次作比较,码宽的变动变化率允许大一点(我的程序允许码宽变动在百分之三十),然后再保证HS5104的工作电压在3V以上,那肯定是没问题的。 下面一段程序,之所以接收程序会那么复杂,是针对HS5104不稳定而设计的。它放在中断里进行,希望能给使用合泰C开发的朋友提供参考,或者下载后稍作修改便可实现功能调试。 //***********红外摇控 ht48r05A-1 HS5104 //***********Make in QUSUN at 2008-01-18 //**********LCSOME********************** #include HT48R06A-1.h #pragma vector isr_4 @ 0x4 #pragma vector isr_8 @ 0x8 #define uchar unsigned char #define ulint unsigned long int #pragma rambank0 unsigned char rf_addr1; unsigned char rf_addr2;//12位地址码 unsigned char rf_addr1_old;// unsigned char rf_addr2_old; unsigned char rf_cont;//接收次数,判断长按 unsigned char rf_bitsum;//接收到的数据位的计数器 unsigned char rf_0_sum;//接收到0的个数计数器 unsigned char rf_mksum;//码宽计数器 uchar time_s;//秒计数器 uchar time_ms;//毫秒计数器 uchar time_us;//微秒计数器 //* bit rf_sta;//起始位有效标志1=有效 bit rf_bdata;//前一个接收检测电平 bit rf_ture;//接收成功标志1=有效 bit rf_6ms ;//6毫秒低电平指示,1有效 #define rf_in _pc1 //接收数据输入端 #define rf_1_sum rf_0_sum #define SPEAKER _pb2 //*********************************************** void isr_4() {//外部中断子程序 ........................ }//外部中断子程序 //********************************************** void isr_8(){//计数器0中断子程序 if(!rf_sta)//如果起始位无效 {//00 rf_1_sum++; if(rf_1_sum100)rf_cont=0;//如果释放按键则清计数器 if(!rf_6ms){//1 如果未满足6毫秒电平 if(!rf_in){rf_1_sum=0;}//如果接收到的是低电平,则清0计数 if(rf_1_sum40){//2 rf_6ms=1;//置6毫秒高电平有效 }//2 }//1 else //如果已满足6毫秒电平,则等待起始位 {//003 if(!rf_in)//一收到有低电平,则判为有开始 { rf_addr1=0; rf_6ms=0;

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档