久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1526|回復: 3
收起左側

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

[復制鏈接]
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內有高電平,則判斷為干擾,退出處理程序
  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. }
復制代碼


回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久亚洲 | www4虎| 久久久精品影院 | 欧美精品一区二区在线观看 | 亚洲精品日韩在线 | 黄色片在线 | 超碰在线免费 | 一级在线观看 | 黄色av网站在线观看 | 91视频免费视频 | 欧美一级欧美三级在线观看 | 成人免费在线观看视频 | 亚洲一卡二卡 | 操操网站 | 久久久久久久久久影视 | 国产亚洲精品久久久久久牛牛 | 久久久久久久久毛片 | 天天拍天天射 | 91pron在线 | 日日夜夜精品视频 | 国产一区二区免费电影 | 成人九区 | 亚洲人人| 国产精品视频一区二区三区四区国 | 成人在线免费 | 国产在线一级片 | 一区二区三区四区在线播放 | 黄网站在线播放 | 91精品国产乱码久久久久久久 | 激情a| 国产精品久久久久久久久久 | 欧美日韩一本 | 久久国 | 午夜视频在线观看网址 | 亚洲免费网址 | 精品一区视频 | 中文字幕亚洲国产 | 久久免费香蕉视频 | 黑人巨大精品 | 中文字幕av第一页 | 日韩一二三区视频 |