;-----------------------------------;
;开始信号的传递
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
;发送一个字节
SEND: MOV R0,#08H
SEND0: RLC A
MOV SDA,C
SETB SCL
ACALL DELAY
CLR SCL
DJNZ R0,SEND0
SETB SDA
RET
;接受一个字节
REV: MOV R0,#08H
REV0: SETB SCL
MOV C,SDA
RLC A
CLR SCL
DJNZ R0,REV0
RET
;接受一个应答位
ACKC: SETB SCL
ACALL DELAY
MOV C,SDA
CLR SCL
RET
;发送一个应答位
ACKS: SETB SCL
ACALL DELAY
MOV SDA,C
CLR SCL
RET
;延时程序
DELAY: NOP
NOP
NOP
RET
;------------------------------;
DEL50MS:MOV R5,#50
DEL2: MOV R6,#40
DEL1: MOV R7,#250
DEL: DJNZ R7,DEL
DJNZ R6,DEL1
DJNZ R5,DEL2
RET
DIS_CODE:
; 写入到AT24C01的数据串
DB 07EH
DB 0BDH
DB 0DBH
DB 0E7H
DB 0DBH
DB 0BDH
DB 07EH
DB 0FFH
END