在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設計應用 > 帶存儲功能的學習型紅外遙控器源代碼

            帶存儲功能的學習型紅外遙控器源代碼

            作者: 時間:2012-09-04 來源:網絡 收藏

            很詳細的,儲存在24c64中的匯編子程序,在你自己的設計中只要修改一下IO調用它就可以了,是本人的工程驗證能學習市面常用的絕大部分

            本文引用地址:http://www.biyoush.com/article/170920.htm

            用的是stc89c52單片機,下面是匯編代碼:

            ;**********************************
            ;---------------------AT24C64 CODE-------------------------
            ;==========================================================
            ICSTART: ;I2C 開始
            SETB SDA
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            CLR SDA
            NOP
            NOP
            NOP
            NOP
            CLR SCK
            RET
            ;==========================================================
            ICSTOP: ;I2C 結束
            CLR SDA
            NOP
            NOP
            NOP
            NOP
            CLR SCK
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            SETB SDA
            RET
            ;==========================================================
            ICACK: ;I2C 應答
            CLR SDA
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            CLR SCK
            RET
            ;==========================================================
            NOACK: ;I2C 無應答
            SETB SDA
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            CLR SCK
            RET
            ;==========================================================
            ICREADBIT: ;I2C 讀取一位
            SETB SDA
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            MOV C,SDA
            CLR SCK
            RET
            ;----------------------------------------------------------
            ICREADACK:
            MOV R7,#200
            SETB SDA
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            READACKS:
            JNB SDA,ACKEND
            DJNZ R7,READACKS
            SETB C
            CLR SCK
            RET
            ACKEND:
            CLR C
            CLR SCK
            RET

            ;==========================================================
            ICREADBYTE: ;I2C 讀取一個字節(jié)
            MOV R7,#8
            READLOOP:
            LCALL ICREADBIT
            RLC A
            DJNZ R7,READLOOP
            MOV R7,A
            RET
            ;==========================================================
            ICWRITEBIT: ;I2C 寫一位
            MOV SDA,C
            NOP
            NOP
            NOP
            NOP
            SETB SCK
            NOP
            NOP
            NOP
            NOP
            CLR SCK
            RET
            ;==========================================================
            ICWRITEBYTE: ;I2C 寫一個字節(jié)
            MOV A,R7
            MOV R7,#8
            WRITELOOP:
            RLC A
            LCALL ICWRITEBIT
            DJNZ R7,WRITELOOP
            RET
            ;==========================================================
            READAT:
            MOV A,R7 ;計算I2C地址
            MOV B,#208 ;144
            MUL AB
            MOV R2,B
            MOV R3,A


            LCALL ICSTART ;I2C 數據讀入緩沖區(qū)
            MOV R7,#0A0H ;R2R3 I2C地址
            LCALL ICWRITEBYTE ;R0 緩沖區(qū)地址
            LCALL ICREADACK ;R1 數據個數
            JNC RACKEND
            RET
            ;
            RACKEND:
            MOV A,R2
            MOV R7,A
            LCALL ICWRITEBYTE
            LCALL ICREADACK
            MOV A,R3
            MOV R7,A
            LCALL ICWRITEBYTE
            LCALL ICREADACK

            LCALL ICSTART
            MOV R7,#0A1H
            LCALL ICWRITEBYTE
            LCALL ICREADACK
            MOV R0,#LRDBUF
            MOV R1,#208 ;144

            READDATAS:
            LCALL ICREADBYTE
            LCALL ICACK
            MOV @R0,A
            INC R0
            DJNZ R1,READDATAS
            LCALL NOACK
            LCALL ICSTOP
            RET

            ;==========================================================
            WRITEAT: ;緩沖區(qū)數據寫入 I2C

            MOV A,R7 ;計算I2C地址
            MOV B,#208 ;;144
            MUL AB
            MOV R2,B
            MOV R3,A
            MOV R5,#13 ;9 13*16=208

            MOV R0,#LRDBUF

            ICWRITENEXT:
            LCALL ICSTART
            MOV R7,#0A0H
            LCALL ICWRITEBYTE
            LCALL ICREADACK
            JNC WACKEND
            ;
            ;
            WACKEND:
            MOV A,R2
            MOV R7,A
            LCALL ICWRITEBYTE
            LCALL ICREADACK
            MOV A,R3
            MOV R7,A
            LCALL ICWRITEBYTE
            LCALL ICREADACK


            MOV R1,#16
            WRITEDATAS:
            MOV A,@R0
            INC R0
            MOV R7,A
            LCALL ICWRITEBYTE
            LCALL ICREADACK
            DJNZ R1,WRITEDATAS
            LCALL ICSTOP


            MOV R7,#250
            DELAY_D:
            MOV R6,#20
            DJNZ R6,$
            DJNZ R7,DELAY_D

            MOV A,R3
            ADD A,#16
            MOV R3,A
            MOV A,R2
            ADDC A,#0
            MOV R2,A


            DJNZ R5,ICWRITENEXT
            RET
            ;*****************************************************************

            ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            LRDREAD:
            ;代碼讀取
            MOV R0,#LRDBUF ;代碼緩沖區(qū)清零
            MOV R1,#208 ;144
            CLR A
            CLRLRDBUF:
            MOV @R0,A
            INC R0
            DJNZ R1,CLRLRDBUF
            MOV R0,#LRDBUF
            SETB LRDR
            LRDTEST:
            SETB TR2
            SETB ES ;紅外代碼起始檢測
            JB RI,LLOOP ;這里是檢測有鍵按下時。。。。。。
            CLR TR2
            JNB LRDR,READSTART
            JB HWXX,LRDTEST ;紅外學習標志位
            LJMP LLLOOP
            LLOOP: ;
            CLR RI
            MOV A,SBUF
            MOV R0,#250
            MOV R1,#250
            LP4: JB RI,LP3
            DJNZ R0,LP4
            DJNZ R1,LP4
            LJMP LRDTEST
            LP3: CLR RI
            CLR ES
            MOV A,SBUF
            MOV A,#00H

            LP2:
            CLR HONGWAI ;紅外按鈕標志位
            CLR P3.3
            CLR HWXX
            MOV SBUF,#37H
            JNB TI,$
            CLR TI
            DEC SP
            DEC SP
            LJMP LOOP
            LLLOOP: RET

            ;--------------------------------------
            READSTART:
            CLR EA
            ;SETB P0.6
            MOV TH1,#0
            MOV TL1,#12
            SETB LRDR
            ;--------------------------------------
            READLOOP_S:
            SETB TR1
            CLR TF1
            TEST_LRDR:
            MOV A,TH1
            JB TF1,LRDOVER
            JNB LRDR,TEST_LRDR
            CLR TR1 ;

            INC R0
            MOV A,TL1
            MOV @R0,A
            INC R0
            MOV A,TH1
            MOV @R0,A
            INC R1 ;紅外線時間 1
            ;--------------------------------------
            ;--------------------------------------
            MOV TH1,#0
            MOV TL1,#12
            SETB TR1
            CLR TF1

            TESTLRD:
            MOV A,TH1
            JB TF1,LRDOVER
            JB LRDR,TESTLRD

            CLR TR1
            INC R0
            MOV A,TL1
            MOV @R0,A
            INC R0
            MOV A,TH1
            MOV @R0,A ;代碼 2
            INC R1
            ;**************************************

            TEST_DATA:
            MOV TH1,#0
            MOV TL1,#12
            SETB TR1
            CLR TF1

            MOV A,R1
            SUBB A,#101 ;44H
            JC READLOOP_S ;下一代碼
            ;--------------------------------------
            LRDOVER:
            CLR TR1
            SETB EA
            MOV A,R1
            MOV LRDBUF,A ;代碼個數緩沖
            RET
            ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            LRD1SEND:
            CLR EA
            MOV R1,LRDBUF
            MOV R0,#LRDBUF
            MOV A,R1
            JZ LRD_END
            SUBB A,#101 ;72
            JNC LRD_END
            CLR EA
            MOV TH1,#0

            LRD1OUTLOOP:
            CLR TR1
            INC R0
            MOV A,@R0
            CPL A
            MOV TL1,A
            INC R0
            MOV A,@R0
            CPL A
            MOV TH1,A
            SETB TR1
            CLR TF1
            ;--------------------------------------
            LRD1CONT:
            CPL LRD1
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP ;發(fā)送紅外波形 38K HZ
            JNB TF1,LRD1CONT ;紅外前導代碼
            CLR LRD1
            DJNZ R1,SEND_DATA
            LJMP LRD_END

            SEND_DATA:
            ;--------------------------------------

            CLR TR1
            INC R0
            MOV A,@R0
            CPL A
            MOV TL1,A
            INC R0
            MOV A,@R0
            CPL A
            MOV TH1,A
            SETB TR1
            CLR TF1
            DJNZ R1,OUT_1_CODE


            LRD_END:
            CLR TR1
            CLR TF1
            SETB EA
            RET
            OUT_1_CODE:
            JNB TF1,$ ;紅外代碼
            ;--------------------------------------
            LJMP LRD1OUTLOOP
            RET ;取下一個代碼
            ;==========================================================
            ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


            DELAY:
            MOV R7,#200
            DEL_L:
            MOV R6,#30
            DJNZ R6,$
            DJNZ R7,DEL_L
            RET

            DELY_2:
            MOV R7,#250
            DEL_2:
            LJMP DELAY
            DJNZ R7,DEL_2
            MOV R7,#250
            DEL_3: LJMP DEL_2
            DJNZ R7,DEL_3
            RET

            紅外遙控器相關文章:紅外遙控器原理

            萬能遙控器相關文章:萬能遙控器代碼




            評論


            相關推薦

            技術專區(qū)

            關閉