英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4016|回复: 0
打印 上一主题 下一主题

一个HT6221码的接收程序

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-25 15:22:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/***************************************************************************************************************************
公司名称:
模块名称:rf.c
功    能  HT6221码接收模块           芯片型号:HT6221
说    明:6221码的动态接收
程序设计:FANZENGYONG      
设计时间:2003.11.22        
版 本 号: 20031122
**************************************************************************************************************************/
#ifdef   HT6221
#define  RF_CODE_HEAD_HIGH  55                                    //6221头码宽度上限为55
#define  RF_CODE_HEAD_LOW   48                                    //6221头码宽度上限为48
#define  RF_CODE_1          6                                     //6221码"1"宽度为6
#define  RF_CODE_NUMBER     4                                    //6221码的个数为4
//#else
#endif
unsigned char rf_code_time;                                      //码宽度的时间
unsigned char rf_loop;                                           //一个数据码的移位次数
unsigned char rf_code_count;                                    //码的个数
unsigned char rf_code_value[RF_CODE_NUMBER];//*rf_code_value    //存放码的值
unsigned char key_value;                                       //按键的值
bit           flag_rf_start;                                  //遥控码的第一个电平跳变
bit           flag_rf_head;                                   //引导码接收到标志
bit           flag_key;                                       //键按下标志
#define  UCHAR    unsigned  char
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rf()
                      {//UCHAR countrf;
                       //rf_code_time=TMR0;  
                       //TMR0=0;
                       //CCP1IF=0;   //ccp电平中断
/////////////////////////////////////////////////////////////////////////////
                       if(flag_rf_start==0)
                         {flag_rf_start=1; return;}
                       else{
/////////////////////////////////////////////////////////////////////////////
                         if(flag_rf_head==0)
                            {/*if((rf_code_time>40)&&(rf_code_time<48))  //按键按住不松的处理
                               {flag_rf_start=flag_rf_head=0;
                                if(key_value==0x0c||key_value==0x17||key_value==0)
                                  {countrf+=1;
                                   if(countrf>=3)
                                     {countrf=0;
                                      flag_key=1;   //按键按住不松的处理
                                     }
                                  }
                                 else countrf=0;
                               }*/                 //按键按住不松的处理
                             //else{countrf=0;
                                  if((rf_code_time>=RF_CODE_HEAD_LOW)&&(rf_code_time<RF_CODE_HEAD_HIGH))<RF_CODE_HEAD_HIGH))

                                  flag_rf_head=1;
                                  return;
                                 //}
                             
                            }
///////////////////////////////////////////////////////////////////////////
                          else{if(rf_code_time>RF_CODE_1)
                               rf_code_value[rf_code_count]|=0b10000000;
                               else rf_code_value[rf_code_count]&=0b01111111;
                               rf_loop+=1;
                         ///////////////////////////////////////////////////////////////////////////////
                               if(rf_loop>=8)
                                 {rf_loop=0;
                                  rf_code_count+=1;
                                  if(rf_code_count>=RF_CODE_NUMBER)
                                    {flag_rf_start=flag_rf_head=0;
                                     rf_code_count=0;
                                     //key_value=rf_code_value[2];  //6221的第三个码存放键值
                                     //bitdata0=rf_code_value[0];   //6221的低8位地址码
                                     //bitdata1=rf_code_value[1];   //6221的高8位地址码
                                     //bitdata=rf_code_value[3];    //6221的第三位数据码的反码
                                     //flag_key=1;
                                    }
                                 }
                               else  rf_code_value[rf_code_count]=rf_code_value[rf_code_count]>>1;   //循环右移
                         ///////////////////////////////////////////////////////////////////////////////
                              }
/////////////////////////////////////////////////////////////////////////////
                        }
/////////////////////////////////////////////////////////////////////////////                        
                      }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 08:55 , Processed in 0.050701 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表