在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時(shí)間:2011-12-06 來(lái)源:網(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 ;打開(kāi)CPU總中斷請(qǐng)求
            SETB IT0 ;設(shè)定INT0的觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
            SETB EX0 ;打開(kāi)INT0中斷請(qǐng)求
            ;以下對(duì)的所有引腳進(jìn)行初始化,全部設(shè)置成高電平
            MOV P2,#11111111B
            AJMP $

            ;以下為進(jìn)入P3.2腳外部中斷子程序,也就是解碼程序
            INT: CLR EA ;暫時(shí)關(guān)閉CPU的所有中斷請(qǐng)求
            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次,目的是檢測(cè)在8820微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序
            ;以上完成對(duì)遙控信號(hào)的9000微秒的初始低電平信號(hào)的識(shí)別。
            JNB P3.2, $ ;等待高電平避開(kāi)9毫秒低電平引導(dǎo)脈沖
            ACALL YS2 ;延時(shí)4.74毫秒避開(kāi)4.5毫秒的結(jié)果碼

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

            JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號(hào)
            LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
            MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
            JNC UUUA;如果為0就跳轉(zhuǎn)到UUUA
            LCALL YS3;檢測(cè)到高電平1的話(huà)延時(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,$;等待地址碼第一位的高電平信號(hào)
            LCALL YS1;高電平開(kāi)始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
            MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
            JNC UUU;如果為0就跳轉(zhuǎn)到UUU
            LCALL YS3;檢測(cè)到高電平1的話(huà)延時(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;接收滿(mǎn)8位換一個(gè)內(nèi)存
            INC R1;對(duì)R1中的值加1,換下一個(gè)RAM
            DJNZ R2,PP ;接收完8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH中

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

            MOV P1,1AH;將按鍵的鍵值通過(guò)P1口的8個(gè)LED顯示出來(lái)!
            CLR P2.0;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
            LCALL YS2
            LCALL YS2
            LCALL YS2
            SETB P2.0;蜂鳴器停止(使用時(shí)可以將J2的YINYUE腳用跳線(xiàn)接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)制)


            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉