色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)驅(qū)動I2C(24C02)匯編語言程序

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

          作者: 時間: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)閉