一个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]