?? i2c2408.asm
字號:
SCL BIT P3.4
SDA BIT P3.5
;**************************************
;以下為寫PT2314各個控制數據的程序
;***************************************
PT2314_WR:
ACALL START
MOV A,#PT2314_ADD
ACALL SENDDATE
ACALL ASKW
MOV A,PT2314_MSB
ACALL SENDDATE
ACALL ASKW
ACALL STOP
RET
;************************************
;以上為寫PT2314各個控制數據到寫的程序
;************************************
;以下為I2C總線的各個控制信號
;**************************************
;寫存儲器時等待ASK信號
ASKW: LCALL DELAY
SETB SDA ;釋放SDA_P總線
LCALL DELAY
SETB SCL
WAITASKW: MOV C,SDA
JC WAITASKW
;LCALL DELAY10
CLR SCL
CLR SDA
RET
;**********************************
;MCU作為從器件不應答
NOASK: SETB SDA
SETB SCL
LCALL DELAY
CLR SCL
LCALL DELAY
CLR SDA
RET
;-----------------------------------
;啟動信號
START: SETB SCL
SETB SDA
LCALL DELAY
CLR SDA
LCALL DELAY
CLR SCL
RET
;---------------------------
;停止信號
STOP: CLR SCL
CLR SDA
LCALL DELAY
SETB SCL
LCALL DELAY
SETB SDA
LCALL DELAY
RET
;---------------------------------
;讀數據到總線上,A作為移位輸出寄存器
SENDDATE: MOV R2,#8
LOOPW: RLC A
MOV SDA,C
LCALL DELAY
SETB SCL
LCALL DELAY
CLR SCL
LCALL DELAY
DJNZ R2,LOOPW
CLR SDA
RET
;--------------------------------
;讀24C08子程序。
RD24: PUSH ACC
SETB SDA
CLR SCL
CALL START
MOV A,#0A0H
CALL SENDDATE
CALL ASKW
POP ACC
CALL SENDDATE
CALL ASKW
CALL START
MOV A,#0A1H
CALL SENDDATE
CALL ASKW
SETB SDA
MOV R7,#8
CLR A
SETB SDA
RD000: RL A
SETB SCL
MOV C,SDA
MOV ACC.0,C
CLR SCL
DJNZ R7,RD000
RET
;-------------------------------
;寫入24C02程序:
WT24: PUSH ACC
SETB SDA
CLR SCL
CALL START
MOV A,#0A0H
CALL SENDDATE
CALL ASKW
POP ACC
CALL SENDDATE
CALL ASKW
MOV A,B
CALL SENDDATE
CALL ASKW
CALL STOP
CALL DELAY
RET
; -------------------------------
DELAY: NOP
NOP
NOP
NOP
RET
;***********************************
;以上為I2C總線的各個控制信號
;************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -