OpenEdv-开源电子网

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

pic单片机软件解码2262的C语言程序,请各位高手看是什么问题 ,波形不对

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-10-31
在线时间
0 小时
发表于 2012-11-9 11:50:42 | 显示全部楼层 |阅读模式

 
请各位高手看看这段代码有什么问题,应该怎么解决

void delay( uchar x) 
{
    while(--x);           //延时
}

void delay_15us(uint x) 
{
 while(x) x--;            //延时
}

void  rece_2272(void)         //遥控接收
{
 static volatile  bit  a,a1;//用于检测遥控信号
 uchar i,h;
 uint data,mygod;
 for(i=172;i;i--)           //等待高电平
     { if(!Remote_Receive) i=172;
       else delay_15us(15);
     }
 data=0;
 for(i=0;i<12;i++)            //找同步码
 {
  for(h=40;h;h--)
  {
   if(!Remote_Receive) break;
   else delay_15us(15);
  }
  if(h)                  //读码值
  {
   while(Remote_Receive)
   {
    mygod++;
    if(mygod==50000) break;
   }
   mygod=0;
   while(!Remote_Receive)
   {
    mygod++;
    if(mygod==50000) break;
   }
   mygod=0;
   delay_15us(180); 
   a=Remote_Receive;
//   while(Remote_Receive);
//   while(!Remote_Receive);
   while(Remote_Receive)
   {
    mygod++;
    if(mygod==50000) break;
   }
   mygod=0;
   while(!Remote_Receive)
   {
    mygod++;
    if(mygod==50000) break;
   }
   mygod=0;
   delay_15us(180); 
   a1=Remote_Receive;
   if(a||a1) data|=0x01;
   data<<=1;
  }
 }

 for(h=170;h;h--)           //找同步码
     {
  if(!Remote_Receive)
  break;
  else
  delay_15us(15);
     }
 if(h)
    {
  for(i=40;i;i--)
  {
   if(!Remote_Receive)
   i=40;
   else
   delay_15us(15);
  }
        data>>=1;
        key_un.y1=~data;                                                                                
     }
 else
 {
   key_un.y1=0;
 }
     delay(250);
}

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 06:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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