在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)驅(qū)動I2C(24C02)匯編語言程序

            51單片機(jī)驅(qū)動I2C(24C02)匯編語言程序

            作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
            ;程序說明:將MPU內(nèi)部的55h~~~58h中的內(nèi)容由外部中斷0經(jīng)I2C總線寫到24c02中,然后由外部中斷1將所寫的內(nèi)容讀到
            ;MPU內(nèi)部數(shù)據(jù)存儲器60H~~63H
            SCL EQU P1.1
            SDA EQU P1.0
            org 0000h
            jmp begin
            org 0003H
            ljmp write
            org 0013H
            ljmp read
            ;主程序
            begin:
            mov 55H,#41H
            mov 56h,#42h
            MOV 57h,#43H
            MOV 58H,#44H
            mov tcon,#0
            setb ex0
            setb ex1
            setb ea
            main:
            nop
            jmp main
            ;**********************************************************
            ;讀24C02的數(shù)據(jù)的程序
            read:
            ACALL START ;開始信號
            MOV A,#0A0H ;發(fā)從機(jī)的地址
            ACALL SEND ;發(fā)送控制字
            ACALL ACKI;接收應(yīng)答
            JC OUTEND ;不響應(yīng),轉(zhuǎn)結(jié)束
            MOV A,#00H;設(shè)置要讀取從器件的片內(nèi)地址
            ACALL SEND
            ACALL ACKI
            JC OUTEND
            ACALL START ;開始信號
            ORL A,#0A1H;設(shè)置控制字,準(zhǔn)備接收
            ACALL SEND ;發(fā)送控制字
            ACALL ACKI
            JC OUTEND
            MOV R2,#4 ;準(zhǔn)備接收數(shù)據(jù)的字節(jié)數(shù)
            MOV R1,#60H ;接收字節(jié)存放在主器件中的地址60H
            IN0:
            ACALL REV ;接收一個字節(jié)
            ACALL ACKO;主機(jī)向24C02發(fā)送應(yīng)答信號
            MOV @R1,A ;把接收到數(shù)據(jù)存放到存儲單元中
            INC R1
            DEC R2
            CJNE R2,#1,IN0 ;判斷是否為最后一個接收字節(jié)
            ACALL REV ;接收最后一個字節(jié)
            ACALL ACKN;
            MOV @R1,A ;把接收到數(shù)據(jù)存放到存儲單元中
            OUTEND:
            ACALL STOP ;停止信號
            jnb p3.3,$
            reti
            ;**********************************************************
            ;寫24C02的數(shù)據(jù)的程序
            write:
            LCALL START ;開始信號
            MOV A,#0A0H ;定控制字,準(zhǔn)備發(fā)送
            ACALL SEND ;發(fā)送控制字
            ACALL ACKI ;接收應(yīng)答
            JC WRITEEND ;從器件不響應(yīng),轉(zhuǎn)結(jié)束
            MOV A,#00H ;設(shè)置從器件片內(nèi)地址
            ACALL SEND ;發(fā)送片內(nèi)地址
            ACALL ACKI
            JC WRITEEND
            MOV R2,#4;設(shè)置發(fā)送字節(jié)數(shù)
            MOV R1,#55H ;主器件中要發(fā)送數(shù)據(jù)的頭地址
            OUT1:
            MOV A,@R1
            ACALL SEND;發(fā)送數(shù)據(jù)
            ACALL ACKI;
            JC WRITEEND
            INC R1
            DJNZ R2,OUT1 ;發(fā)送未結(jié)束,繼續(xù)發(fā)送
            WRITEEND:
            ACALL STOP ;停止信號
            jnb p3.2,$;防止再次中斷
            reti
            ;********************************************************
            ;********************
            ;I2C模擬程序
            ;開始信號
            START:
            CLR SCL
            SETB SDA
            ACALL DELAY
            SETB SCL
            ACALL DELAY
            CLR SDA
            ACALL DELAY
            CLR SCL
            RET
            ; 停止信號:
            STOP:CLR SCL
            CLR SDA
            ACALL DELAY
            SETB SCL
            ACALL DELAY
            SETB SDA
            ACALL DELAY
            RET
            ; 接收一個字節(jié)
            REV: MOV R0,#08H
            REV0: SETB SCL
            LCALL DELAY
            MOV C,SDA
            RLC A
            CLR SCL
            LCALL DELAY
            DJNZ R0,REV0
            RET
            ;發(fā)送一個字節(jié)
            SEND:
            MOV R0,#08H
            CLR SCL
            SEND0:
            RLC A
            MOV SDA,C
            SETB SCL
            ACALL DELAY
            CLR SCL
            DJNZ R0,SEND0
            SETB SDA
            RET
            ;接收一個應(yīng)答位:
            ACKI:
            SETB SCL
            ACALL DELAY
            MOV C,SDA
            CLR SCL
            RET
            ; 發(fā)送一個接收應(yīng)答位
            ACKO:
            CLR SDA
            ACALL DELAY
            SETB SCL
            ACALL DELAY
            CLR SCL
            ACALL DELAY
            SETB SDA
            ACALL DELAY
            RET
            ;發(fā)送一個非接收接收應(yīng)答位
            ACKN:
            SETB SDA
            ACALL DELAY
            SETB SCL
            ACALL DELAY
            CLR SCL
            ACALL DELAY
            DELAY:
            NOP
            NOP
            NOP
            RET
            END


            評論


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

            關(guān)閉