直接上源码
HWV4.0.rar
(871.83 KB, 下载次数: 0)
- void decode(void) //无线接收码解码
- {
- if(wx_wait_cal==0)
- {
- SignalCnt++ ; //记录一位数据周期时间
- if(RFIN)
- {
- if((High_low==1)&&( Low_high==0)==1)
- {
- Low_time=0;
- Low_time=SignalCnt;
- }
- Low_high=1;//上升沿触发
- }
- else //引脚为低电平时
- {
- if(High_low==0)
- {
- SignalCnt=0;
- High_low=1;//下降沿第一次触发
- }
- if((High_low==1) &&( Low_high==1)==1) //下降沿第二次触发 一个数据周期
- {
- if((SignalCnt<=150)&&(SignalCnt>=120)==1) //9+4.5=13.5ms属于引导码 9+2.25=11.25ms属于重复码
- {
- if(( Low_time<=95)&&( Low_time>=85)==1)
- {
- wx_bit =0;
- }
- Low_high=0;
- High_low=0;
- SignalCnt=0;
- }
- else if((SignalCnt<=25)&&(SignalCnt>=20)==1) // 高电平 2.25ms=22.5
- {
- if(( Low_time<=7)&&( Low_time>=3)==1)
- {
- Signal_DataTemp >>= 1; /* 右移一位 */
- Signal_DataTemp |= 0x80000000; /* 接收到1 */
- }
- wx_bit ++;
- Low_high=0;
- High_low=0;
- SignalCnt=0;
- }
- else if((SignalCnt<=14)&&(SignalCnt>=7)==1) // 低电平1.12ms=11.2
- {
- if(( Low_time<=7)&&( Low_time>=3)==1)
- {
- Signal_DataTemp >>= 1; /* 右移一位 */
- Signal_DataTemp &= ~(0x80000000); /* 接收到0 */
- }
- wx_bit ++;
- Low_high=0;
- High_low=0;
- SignalCnt=0;
- }
- else
- {
- Low_high=0;
- High_low=0;
- wx_bit=0;
- Signal_DataTemp=0;
- wx_wait_cal=0;
- }
- if(wx_bit==32)
- {
- wx_wait_cal=1;
- Low_high=0;
- High_low=0;
- wx_bit=0;
- }
- }
- }
- }
复制代码
|