日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

          單片機(jī)紅外線遙控器解碼程序

          作者: 時(shí)間:2011-12-06 來源:網(wǎng)絡(luò) 收藏
          ">

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

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

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

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

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

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

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

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

          YS1: MOV R4,#20 ;延時(shí)子程序1,精確延時(shí)882微秒
          D1: MOV R5,#20
          DJNZ R5,$
          DJNZ R4,D1
          RET
          YS2: MOV R4,#10 ;延時(shí)子程序2,精確延時(shí)4740微秒
          D2: MOV R5,#235
          DJNZ R5,$
          DJNZ R4,D2
          RET
          YS3: MOV R4,#2;延時(shí)程序3,精確延時(shí)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

          這是按照紅外遙控器按鍵的實(shí)際位置給出的32個(gè)按鍵的鍵值(16進(jìn)制)


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 單片機(jī) 紅外線遙控器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉