?? 9at24c02_i2c.asm
字號(hào):
;=================================================
; 24C02存儲(chǔ)器I2C總線實(shí)驗(yàn)
;=================================================
;
; zsMCU51實(shí)驗(yàn)板配套學(xué)習(xí)例程
;
; 中山單片機(jī)學(xué)習(xí)網(wǎng) 智佳科技
;
; 作者:逸風(fēng) QQ:105558851
;
; http://www.zsmcu.com
; E-mail:info@zsmcu.com
;=================================================
SDA EQU P2.0
SCL EQU P2.1
Address EQU 08H
I2CData EQU 09H
ORG 0000H
LJMP START;轉(zhuǎn)入主程序
ORG 0010H ;外部中斷P3.2腳INT0入口地址
START:
MOV SP,#60H
MOV Address,#00H
MOV I2CData,#55H
CALL I2C_WRITE ;寫入數(shù)據(jù)
MOV I2CDATA,#0AAH ;
MOV Address,#00H
CALL I2C_READ
MOV I2CData,A ;讀出數(shù)據(jù)
NOP
NOP
MAIN:
/*------------------------------------------------------
寫一個(gè)字節(jié) Address地址 I2CDatata寫入的數(shù)據(jù)
------------------------------------------------------*/
I2C_WRITE:
I2C_WRITE_A:
LCALL I2C_START
MOV A,#10100000B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_WRITE_A ;=1,表示無(wú)確認(rèn),再次發(fā)送
MOV A,Address
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,I2CData
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP
RET
/*------------------------------------------------------
讀一個(gè)字節(jié) Address地址 Data讀出的數(shù)據(jù)
------------------------------------------------------*/
I2C_READ:
I2C_READ_A:
LCALL I2C_START
MOV A,#10100000B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_READ_A ;=1,表示無(wú)確認(rèn),再次發(fā)送
MOV A,Address
LCALL I2C_SEND8BIT
LCALL I2C_ACK
I2C_READ_B:
LCALL I2C_START
MOV A,#10100001B
LCALL I2C_SEND8BIT
LCALL I2C_ACK
JC I2C_READ_B
LCALL I2C_RECEIVE8BIT
MOV I2CData,A
LCALL I2C_ACK
LCALL I2C_STOP
RET
;發(fā)送開(kāi)始信號(hào)
I2C_START:
SETB SCL
SETB SDA
NOP
NOP
CLR SDA
NOP
NOP
CLR SCL
RET
;發(fā)送結(jié)束信號(hào)
I2C_STOP:
CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
RET
;發(fā)送接收確認(rèn)信號(hào)
I2C_ACk:
SETB SDA
SETB SCL
NOP
NOP
JB SDA,I2C_ACK0
CLR C
SJMP I2C_ACK_END
I2C_ACK0:
SETB C
I2C_ACK_END:
CLR SCL
RET
;送八位數(shù)據(jù)
I2C_SEND8BIT:
MOV B,#08H
I2C_SEND8BIT_A:
RLC A
MOV SDA,C
SETB SCL
NOP
NOP
CLR SCL
DJNZ B,I2C_SEND8BIT_A
RET
;接收八位數(shù)據(jù)
I2C_RECEIVE8BIT:
MOV B,#08H
CLR A
SETB SDA
I2C_RECEIVE8IT_A:
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
CLR SCL
DJNZ B,I2C_RECEIVE8IT_A
RET
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -