?? i2c.asm
字號:
ORG 0000H
MOV SP,#68H
MOV P1,#0FFH
LCALL I2CSTART
MOV A,#0A0H
LCALL I2CWRITE
LCALL ACK
MOV A,#01H
LCALL I2CWRITE
LCALL ACK
LCALL I2CSTART
MOV A,#0A1H
LCALL I2CWRITE
LCALL ACK
LCALL I2CREAD
LCALL NACK
LCALL I2CSTOP
MOV P3,A
L1: JB P1.5,L1
LCALL D2MS
JB P1.5,L1
MOV R7,#00H
MOV P3,R7
LCALL WRITE
SJMP L1
I2CSTART: CLR P1.0
SETB P1.1
LCALL SDELAY
SETB P1.0
LCALL SDELAY
CLR P1.1
LCALL SDELAY
CLR P1.0
LCALL SDELAY
RET
I2CSTOP: CLR P1.1
LCALL SDELAY
SETB P1.0
LCALL SDELAY
SETB P1.1
LCALL SDELAY
CLR P1.0
LCALL SDELAY
CLR P1.1
LCALL SDELAY
RET
I2CWRITE: MOV R6,#08H
LA1: CLR P1.0
LCALL SDELAY
RLC A
MOV P1.1,C
SETB P1.0
LCALL SDELAY
DJNZ R6,LA1
RET
I2CREAD: MOV R6,#08H
LA2: CLR P1.0
LCALL SDELAY
SETB P1.1
LCALL SDELAY
SETB P1.0
LCALL SDELAY
MOV C,P1.1
RLC A
DJNZ R6,LA2
RET
ACK: CLR P1.1
LCALL SDELAY
SETB P1.0
LCALL SDELAY
CLR P1.0
LCALL SDELAY
SETB P1.1
LCALL SDELAY
RET
NACK: SETB P1.1
LCALL SDELAY
SETB P1.0
LCALL SDELAY
CLR P1.0
LCALL SDELAY
CLR P1.1
LCALL SDELAY
RET
WRITE: LCALL I2CSTART
MOV A,#0A0H
LCALL I2CWRITE
LCALL ACK
MOV A,#01H
LCALL I2CWRITE
LCALL ACK
MOV A,R7
LCALL I2CWRITE
LCALL ACK
LCALL I2CSTOP
RET
D2MS: MOV R4,#10H
LD1: MOV R5,#08H
LD2: NOP
NOP
DJNZ R5,LD2
DJNZ R4,LD1
RET
SDELAY: MOV R2, #18D
SDEL1: NOP
DJNZ R2, SDEL1
RET
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -