中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 帶存儲功能的學(xué)習(xí)型紅外遙控器源代碼

        帶存儲功能的學(xué)習(xí)型紅外遙控器源代碼

        作者: 時間:2012-09-04 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.antipu.com.cn/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 結(jié)束
        CLR SDA
        NOP
        NOP
        NOP
        NOP
        CLR SCK
        NOP
        NOP
        NOP
        NOP
        SETB SCK
        NOP
        NOP
        NOP
        NOP
        SETB SDA
        RET
        ;==========================================================
        ICACK: ;I2C 應(yīng)答
        CLR SDA
        NOP
        NOP
        NOP
        NOP
        SETB SCK
        NOP
        NOP
        NOP
        NOP
        CLR SCK
        RET
        ;==========================================================
        NOACK: ;I2C 無應(yīng)答
        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 數(shù)據(jù)讀入緩沖區(qū)
        MOV R7,#0A0H ;R2R3 I2C地址
        LCALL ICWRITEBYTE ;R0 緩沖區(qū)地址
        LCALL ICREADACK ;R1 數(shù)據(jù)個數(shù)
        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ū)數(shù)據(jù)寫入 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 ;紅外學(xué)習(xí)標(biāo)志位
        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 ;紅外按鈕標(biāo)志位
        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 ;代碼個數(shù)緩沖
        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 ;紅外前導(dǎo)代碼
        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

        紅外遙控器相關(guān)文章:紅外遙控器原理

        萬能遙控器相關(guān)文章:萬能遙控器代碼




        評論


        相關(guān)推薦

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

        關(guān)閉