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

標題: 誠信求教,avr單片機紅外遙控長按鍵的問題 [打印本頁]

作者: rjx007    時間: 2019-3-31 10:24
標題: 誠信求教,avr單片機紅外遙控長按鍵的問題
用的是ATMEGA8a,單次按鍵沒有問題,但自己搞了幾天處理連發碼都沒搞出來,誠信請教如何判斷是連發碼?

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

  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內有高電平,則判斷為干擾,退出處理程序
  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延時時間進行計數
  35.              if(sum >= 30)              //高電平時間過長,則退出處理程序
  36.              {
  37.                GICR |=(1<<INT0);
  38.                return;
  39.              }   
  40.           }

  41.        IR_buf[i] = IR_buf[i] >> 1;      //接受一位數據

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

  44.        sum = 0;                  //若計數小于6,數據最高位補"0",說明收到的是"0",同時計時清零
  45.      }
  46.    }
  47.   if(IR_buf[2]!=~IR_buf[3])                //將鍵數據反碼取反后與鍵數據碼碼比較,若不等,表示接收數據錯誤,放棄
  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. }
復制代碼



作者: devcang    時間: 2019-3-31 23:45
引導信號、低電平、重復記號,,,,,這判斷


~~~~~~~~~~~~~~~~~~~~~~~~
作者: rjx007    時間: 2019-4-4 19:05
繼續求解
作者: liuzx66    時間: 2019-4-4 21:12
不同的編碼芯片有不同的編碼方式,先看你所用的編碼芯片是什么,再找數據手冊看




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1