找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1385|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機紅外接收高速解碼問題

[復(fù)制鏈接]
回帖獎勵 30 黑幣 回復(fù)本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:546224 發(fā)表于 2019-9-25 16:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 kiki900330 于 2019-9-25 16:17 編輯

/*****紅外接收中斷*****/                        

使用24MHz晶振,單片機STC8A4KS2A12

條件:
1;100ms為1幀的紅外脈沖,1幀總共有5個脈沖,1個脈沖持續(xù)20uS,用下降沿捕獲
2;第1個下降沿與第2個下降沿之間寬度記為a,第2個下降沿與第3個下降沿之間寬度記為b,第3個下降沿與第4個
     下降沿之間寬度記為c,現(xiàn)在要求只判斷a與b之間的關(guān)系
3;任何時候,a<=b,a=50uS,并且b最大不超過100uS,b=50uS到b=100uS兩者之間變化

問題:
如下,我不知道程序哪里出問題了,LED指示燈沒有變化(示波器測量到只有一種狀態(tài))

判斷程序:
void PCA_Isr() interrupt 7
{
        if(CF)
        {
                CF=0;
                cnt++;        //PCA計時溢出次數(shù)+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的關(guān)系
                            {
                                    LED=0;
                             }
                             else
                             {
                                     LED=1;
                              }break;
                    case 4:count1=count0=a=b=0;break;      //每一幀接收完成后,所有中間變量初始化
                    default:break;
           }
           a++;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表