;********************************************************************
;IIC_START
IIC_START:
BS R6,SCL SCL=1
BS R6,SDA SDA=1
CALL IIC_DELAY
BC R6,SDA SDA=0
CALL IIC_DELAY
RET
;********************************************************************
;IIC_STOP
IIC_STOP:
BS R6,SCL SCL=1
BC R6,SDA SDA=0
CALL IIC_DELAY
BS R6,SDA SDA=1
CALL IIC_DELAY
RET
;********************************************************************
;IIC_CACK IF ACK,FIIC=0
IIC_CACK:
SET SDA INPUT
IOR IOC6
MOV TREG,A
BS TREG,SDA
MOV A,TREG
IOW IOC6
BS R6,SCL SCL=1
BC R3,GP
JBC R6,SDA
BS R3,GP
BC R6,SCL SCL=0
SET SDA OUTPUT
IOR IOC6
MOV TREG,A
BC TREG,SDA
MOV A,TREG
IOW IOC6
RET
;********************************************************************
;IIC_SACK
IIC_SACK:
BC R6,SDA SDA=0
NOP
BS R6,SCL SCL=1
CALL IIC_DELAY
BC R6,SCL SCL=0
CALL IIC_DELAY
RET
;********************************************************************
;IIC_SNACK
IIC_SNACK:
BS R6,SDA SDA=1
NOP
BS R6,SCL SCL=1
CALL IIC_DELAY
BC R6,SCL SCL=0
CALL IIC_DELAY
RET
;********************************************************************
;IIC_WBYT
IIC_WBYT:
MOV TREG,A
MOV A,@8
MOV TCNT,A
IIC_WBYT1:
BC R6,SCL SCL=0
JBC TREG,7