找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于51单片机红外接收高速解码问题

[复制链接]
回帖奖励 30 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:546224 发表于 2019-9-25 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kiki900330 于 2019-9-25 16:17 编辑

/*****红外接收中断*****/                        

使用24MHz晶振,单片机STC8A4KS2A12

条件:
1;100ms为1帧的红外脉冲,1帧总共有5个脉冲,1个脉冲持续20uS,用下降沿捕获
2;第1个下降沿与第2个下降沿之间宽度记为a,第2个下降沿与第3个下降沿之间宽度记为b,第3个下降沿与第4个
     下降沿之间宽度记为c,现在要求只判断a与b之间的关系
3;任何时候,a<=b,a=50uS,并且b最大不超过100uS,b=50uS到b=100uS两者之间变化

问题:
如下,我不知道程序哪里出问题了,LED指示灯没有变化(示波器测量到只有一种状态)

判断程序:
void PCA_Isr() interrupt 7
{
        if(CF)
        {
                CF=0;
                cnt++;        //PCA计时溢出次数+1
         }
          if(CCF1)
         {
                 CCF1=0;
                 count0=count1;      //备份上一次的捕获值
                 ((unsigned char*)&count1)[3]=CCAP0L;
                 ((unsigned char*)&count1)[2]=CCAP0H;
                 ((unsigned char*)&count1)[1]=cnt;
                 ((unsigned char*)&count1)[0]=0;  
          }
          switch(a)
          {
                  case 2:if(count1>count0+count0/2)           //判断a和b的关系
                            {
                                    LED=0;
                             }
                             else
                             {
                                     LED=1;
                              }break;
                    case 4:count1=count0=a=b=0;break;      //每一帧接收完成后,所有中间变量初始化
                    default:break;
           }
           a++;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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