<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機紅外線遙控器解碼程序

          單片機紅外線遙控器解碼程序

          作者: 時間:2011-12-06 來源:網絡 收藏
          ">

          ORG 0000H
          AJMP MAIN;轉入主程序
          ORG 0003H ;外部中斷P3.2腳INT0入口地址
          AJMP INT ;轉入外部中斷服務子程序(解碼程序)
          ;以下為主程序進行CPU中斷方式設置
          MAIN:SETB EA ;打開CPU總中斷請求
          SETB IT0 ;設定INT0的觸發(fā)方式為脈沖負邊沿觸發(fā)
          SETB EX0 ;打開INT0中斷請求
          ;以下對的所有引腳進行初始化,全部設置成高電平
          MOV P2,#11111111B
          AJMP $

          ;以下為進入P3.2腳外部中斷子程序,也就是解碼程序
          INT: CLR EA ;暫時關閉CPU的所有中斷請求
          MOV R6,#10
          SB: ACALL YS1;調用882微秒延時子程序
          JB P3.2,EXIT;延時882微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序
          DJNZ R6, SB;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序
          ;以上完成對遙控信號的9000微秒的初始低電平信號的識別。
          JNB P3.2, $ ;等待高電平避開9毫秒低電平引導脈沖
          ACALL YS2 ;延時4.74毫秒避開4.5毫秒的結果碼

          MOV R7,#26;忽略前26位系統(tǒng)識別碼

          JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號
          LCALL YS1;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態(tài)
          MOV C,P3.2;將P3.2引腳此時的電平狀態(tài)0或1存入C中
          JNC UUUA;如果為0就跳轉到UUUA
          LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束
          UUUA: DJNZ R7,JJJJA

          MOV R1,#1AH ;設定1AH為起始RAM區(qū)
          MOV R2,#2;接收從1AH到1BH的2個內存,用于存放操作碼和操作反碼
          PP: MOV R3,#8;每組數據為8位

          JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號
          LCALL YS1;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態(tài)
          MOV C,P3.2;將P3.2引腳此時的電平狀態(tài)0或1存入C中
          JNC UUU;如果為0就跳轉到UUU
          LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束
          UUU: MOV A,@R1;將R1中地址的給A
          RRC A;將C中的值0或1移入A中的最低位
          MOV @R1,A;將A中的數暫時存放在R1數值的內存中
          DJNZ R3,JJJJ;接收滿8位換一個內存
          INC R1;對R1中的值加1,換下一個RAM
          DJNZ R2,PP ;接收完8位數據碼和8位數據反碼,存放在1AH/1BH中

          MOV A,1AH
          CPL A;對1AH取反后和1BH比較
          CJNE A,1BH,EXIT;如果不等表示接收數據發(fā)生錯誤,放棄

          MOV P1,1AH;將按鍵的鍵值通過P1口的8個LED顯示出來!
          CLR P2.0;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
          LCALL YS2
          LCALL YS2
          LCALL YS2
          SETB P2.0;蜂鳴器停止(使用時可以將J2的YINYUE腳用跳線接J4 的XS1腳才可以使用蜂鳴器)可以看原理圖
          EXIT: SETB EA ;允許中斷
          RETI ;退出解碼子程序

          YS1: MOV R4,#20 ;延時子程序1,精確延時882微秒
          D1: MOV R5,#20
          DJNZ R5,$
          DJNZ R4,D1
          RET
          YS2: MOV R4,#10 ;延時子程序2,精確延時4740微秒
          D2: MOV R5,#235
          DJNZ R5,$
          DJNZ R4,D2
          RET
          YS3: MOV R4,#2;延時程序3,精確延時1000微秒
          D3:MOV R5,#248
          DJNZ R5,$
          DJNZ R4,D3
          RET
          END
          以上程序緊供參考。

          0A 01
          11 12 13 14
          15 16 17 18
          19 10 1A 1B
          0E 02 03 1C
          06 04 05 0C
          0D 08 09 1D
          00 1F 1E 0B
          07 0F

          這是按照紅外遙控器按鍵的實際位置給出的32個按鍵的鍵值(16進制)


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();