I2C_Write bsf STATUS,RP0
bcf SSPCON2,RCEN ; Disable Recieve Mode
bcf STATUS,RP0
bcf PIR1,SSPIF ; Clear Interrupt flag bit
movwf SSPBUF
call I2C_Wait_SSPIF
bsf STATUS,RP0
clrf count
WaitForACK incf count,F ; increase timeout counter each time ACK is not received
btfsc STATUS,Z
return
btfsc SSPCON2,ACKSTAT ; Wait until Slave device
goto WaitForACK ; Acknowledge
bcf STATUS,RP0
return
I2C_Wait_SSPIF clrf count
Wait_SSPIF incf count,F ; increase timeout counter each time SSPIF is not received
btfsc STATUS,Z
return
btfss PIR1,SSPIF
goto Wait_SSPIF
return