OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 59|回复: 0

红外最新通用程序,增加了低电平时间判断

[复制链接]

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2021-7-31
在线时间
36 小时
发表于 前天 10:36 | 显示全部楼层 |阅读模式
废话不多说,直接上源码
  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.    }
  76. }
复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-9 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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