winnie 发表于 2009-4-25 15:22:36

一个HT6221码的接收程序

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/***************************************************************************************************************************
公司名称:
模块名称:rf.c
功    能HT6221码接收模块         芯片型号:HT6221
说    明:6221码的动态接收
程序设计:FANZENGYONG      
设计时间:2003.11.22      
版 本 号: 20031122
**************************************************************************************************************************/
#ifdef   HT6221
#defineRF_CODE_HEAD_HIGH55                                    //6221头码宽度上限为55
#defineRF_CODE_HEAD_LOW   48                                    //6221头码宽度上限为48
#defineRF_CODE_1          6                                     //6221码"1"宽度为6
#defineRF_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_value    //存放码的值
unsigned char key_value;                                       //按键的值
bit         flag_rf_start;                                  //遥控码的第一个电平跳变
bit         flag_rf_head;                                 //引导码接收到标志
bit         flag_key;                                       //键按下标志
#defineUCHAR    unsignedchar
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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|=0b10000000;
                               else rf_code_value&=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;//6221的第三个码存放键值
                                     //bitdata0=rf_code_value;   //6221的低8位地址码
                                     //bitdata1=rf_code_value;   //6221的高8位地址码
                                     //bitdata=rf_code_value;    //6221的第三位数据码的反码
                                     //flag_key=1;
                                    }
                                 }
                               elserf_code_value=rf_code_value>>1;   //循环右移
                         ///////////////////////////////////////////////////////////////////////////////
                              }
/////////////////////////////////////////////////////////////////////////////
                        }
/////////////////////////////////////////////////////////////////////////////                        
                      }
页: [1]
查看完整版本: 一个HT6221码的接收程序