找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 43|回复: 0
打印 上一主题 下一主题
收起左侧

增加了低电平时间判断

[复制链接]
跳转到指定楼层
楼主
ID:921822 发表于 2025-8-7 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
直接上源码 HWV4.0.rar (871.83 KB, 下载次数: 0)
  1. void decode(void) //无线接收码解码
  2. {
  3. if(wx_wait_cal==0)
  4. {
  5.    SignalCnt++ ; //记录一位数据周期时间  
  6.     if(RFIN)   
  7.       {
  8.        if((High_low==1)&&( Low_high==0)==1)
  9.        {
  10.             Low_time=0;
  11.             Low_time=SignalCnt;
  12.        }
  13.         Low_high=1;//上升沿触发
  14.       }
  15.     else  //引脚为低电平时
  16.       {  
  17.        if(High_low==0)
  18.         {
  19.          SignalCnt=0;  
  20.           High_low=1;//下降沿第一次触发  
  21.         }
  22.          if((High_low==1) &&( Low_high==1)==1) //下降沿第二次触发 一个数据周期
  23.         {
  24.             if((SignalCnt<=150)&&(SignalCnt>=120)==1)  //9+4.5=13.5ms属于引导码  9+2.25=11.25ms属于重复码
  25.             {
  26.                if(( Low_time<=95)&&( Low_time>=85)==1)
  27.                {
  28.                wx_bit =0;
  29.                }
  30.                Low_high=0;
  31.                High_low=0;
  32.                SignalCnt=0;  

  33.             }
  34.          else if((SignalCnt<=25)&&(SignalCnt>=20)==1)   // 高电平 2.25ms=22.5
  35.             {
  36.              if(( Low_time<=7)&&( Low_time>=3)==1)
  37.                {
  38.                Signal_DataTemp >>= 1;            /* 右移一位 */
  39.                Signal_DataTemp |= 0x80000000;    /* 接收到1 */
  40.                }
  41.                wx_bit ++;
  42.                Low_high=0;
  43.                High_low=0;
  44.                SignalCnt=0;  
  45.             }
  46.         else  if((SignalCnt<=14)&&(SignalCnt>=7)==1) // 低电平1.12ms=11.2
  47.             {
  48.              if(( Low_time<=7)&&( Low_time>=3)==1)
  49.                {
  50.                Signal_DataTemp  >>= 1;            /* 右移一位 */
  51.                Signal_DataTemp  &= ~(0x80000000); /* 接收到0 */
  52.                }
  53.                wx_bit ++;
  54.                Low_high=0;
  55.                High_low=0;
  56.                SignalCnt=0;  
  57.             }
  58.          else  
  59.           {
  60.           Low_high=0;
  61.           High_low=0;
  62.           wx_bit=0;
  63.           Signal_DataTemp=0;
  64.           wx_wait_cal=0;
  65.           }
  66.           if(wx_bit==32)
  67.            {
  68.              wx_wait_cal=1;
  69.              Low_high=0;
  70.              High_low=0;
  71.              wx_bit=0;
  72.             }
  73.         }
  74.      }
  75.    }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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