RECVACK:
MOV A,#00000011B ;Send read ACK command
MOV DPTR,#I2CMSCR
MOVX @DPTR,A
JMP WAIT
RECVDATA:
MOV A,#00000100B ;Send RECV command
MOV DPTR,#I2CMSCR
MOVX @DPTR,A
CALL WAIT
MOV DPTR,#I2CRXD ;Read data from the data buffer
MOVX A,@DPTR
RET
SENDACK:
MOV A,#00000000B ;Setup the ACK signal
MOV DPTR,#I2CMSST
MOVX @DPTR,A
MOV A,#00000101B ;Send ACK command
MOV DPTR,#I2CMSCR
MOVX @DPTR,A
JMP WAIT
SENDNAK:
MOV A,#00000001B ;Setup the NAK signal
MOV DPTR,#I2CMSST
MOVX @DPTR,A
MOV A,#00000101B ;Send ACK command
MOV DPTR,#I2CMSCR
MOVX @DPTR,A
JMP WAIT
STOP:
MOV A,#00000110B ;Send STOP command
MOV DPTR,#I2CMSCR
MOVX @DPTR,A
JMP WAIT
WAIT:
MOV DPTR,#I2CMSST ;Clear interrupt flag
MOVX A,@DPTR
JNB ACC.6,WAIT
ANL A,#NOT 40H
MOVX @DPTR,A
RET
DELAY:
MOV R0,#0
MOV R1,#0
DELAY1:
NOP
NOP
NOP
NOP
DJNZ R1,DELAY1
DJNZ R0,DELAY1
RET
MAIN:
MOV SP, #5FH
MOV P0M0, #00H
MOV P0M1, #00H