欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1524|回復: 3
打印 上一主題 下一主題
收起左側(cè)

誠信求教,avr單片機紅外遙控長按鍵的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:226556 發(fā)表于 2019-3-31 10:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用的是ATMEGA8a,單次按鍵沒有問題,但自己搞了幾天處理連發(fā)碼都沒搞出來,誠信請教如何判斷是連發(fā)碼?

  1. uchar IR_buf[4]={0x00,0x00,0x00,0x00};  //IR_buf[0]、IR_buf[1]為用戶碼低位、用戶碼高位接收緩沖區(qū)
  2.                                                               // IR_buf[2]、IR_buf[3]為鍵數(shù)據(jù)碼和鍵數(shù)據(jù)碼反碼接收緩沖區(qū)

  3. /********us延時程序,延時時間0.14ms(140us*)*******/
  4. void Delayus(uint x)
  5. {
  6.          char i, j;
  7.         for(i=0;i<x;i++)
  8.       {for(j=0;j<210;j++);}
  9. }

  10. interrupt [EXT_INT0] void ext_int0_isr(void)
  11. {
  12.    uchar i,j,sum=0;  
  13.    GICR |=(0<<INT0);
  14.    Delayus(20);                                //延時20*0.14MS  ,2.8MS
  15.    for(i = 0;i < 14;i++)
  16.       {
  17.          Delayus(1);
  18.          if(IRIN)                            //9MS內(nèi)有高電平,則判斷為干擾,退出處理程序
  19.          {
  20.            GICR |=(1<<INT0);
  21.                   return;                                    //返回
  22.          }
  23.       }

  24.    while(!(IRIN));                          //等待9ms低電平過去

  25.    for(i=0;i<4;i++)           
  26.     {
  27.       for(j=0;j<8;j++)         
  28.       {
  29.          while(IRIN);                         //等待4.5ms高電平過去
  30.          while(!(IRIN));                 //等待變高電平
  31.          while(IRIN)                          //計算高電平時間
  32.           {
  33.              Delayus(1);                        //延時0.14ms
  34.              sum++;                                    //對0.14ms延時時間進行計數(shù)
  35.              if(sum >= 30)              //高電平時間過長,則退出處理程序
  36.              {
  37.                GICR |=(1<<INT0);
  38.                return;
  39.              }   
  40.           }

  41.        IR_buf[i] = IR_buf[i] >> 1;      //接受一位數(shù)據(jù)

  42.        if(sum >= 6)
  43.           {IR_buf[i] = IR_buf[i] | 0x80;}   //若計數(shù)值大于6(高電平時間大于0.56),則為數(shù)據(jù)1

  44.        sum = 0;                  //若計數(shù)小于6,數(shù)據(jù)最高位補"0",說明收到的是"0",同時計時清零
  45.      }
  46.    }
  47.   if(IR_buf[2]!=~IR_buf[3])                //將鍵數(shù)據(jù)反碼取反后與鍵數(shù)據(jù)碼碼比較,若不等,表示接收數(shù)據(jù)錯誤,放棄
  48.     { GICR |=(1<<INT0);    return;}      
  49.             
  50.   HW_Status=1;
  51. }  

  52. void RR()    //遙控器鍵控
  53. {
  54.         if(HW_Status==1)
  55.      {   static uchar m;
  56.                  if((IR_buf[2]==0xfb)||(IR_buf[2]==e))              //音量加
  57.                         {
  58.                                 if( VOLUME_1<98)
  59.                                         {++ VOLUME_1;}
  60.                                 else if( VOLUME_1>=98)
  61.                                         { VOLUME_1=98;}                           
  62.                         }
  63.                 if((IR_buf[2]==0xfa)||(IR_buf[2]==b))        //音量減
  64.                         {
  65.                                 if( VOLUME_1>0)
  66.                                         {-- VOLUME_1;}                          
  67.                         
  68.                         }
  69. void RR()    //遙控器鍵控處理
  70. {
  71.         if(HW_Status==1)
  72.      {   static uchar m;
  73.                  if((IR_buf[2]==0xfb)||(IR_buf[2]==e))              //音量加
  74.                         {
  75.                                 if( VOLUME_1<98)
  76.                                         {++ VOLUME_1;}
  77.                                 else if( VOLUME_1>=98)
  78.                                         { VOLUME_1=98;}                           
  79.                         }
  80.                 if((IR_buf[2]==0xfa)||(IR_buf[2]==b))                                        //音量減
  81.                         {
  82.                                 if( VOLUME_1>0)
  83.                                         {-- VOLUME_1;}                          
  84.                         
  85.                         }
  86. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:277550 發(fā)表于 2019-3-31 23:45 | 只看該作者
引導信號、低電平、重復記號,,,,,這判斷


~~~~~~~~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

板凳
ID:226556 發(fā)表于 2019-4-4 19:05 | 只看該作者
繼續(xù)求解
回復

使用道具 舉報

地板
ID:160500 發(fā)表于 2019-4-4 21:12 | 只看該作者
不同的編碼芯片有不同的編碼方式,先看你所用的編碼芯片是什么,再找數(shù)據(jù)手冊看
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表