I2C_Start bcf PIR1,SSPIF ; Clear Interrupt flag bit
bsf STATUS,RP0
bsf SSPCON2,SEN ; Start Condition Enable
bcf STATUS,RP0
goto I2C_Wait_SSPIF
I2C_Stop bcf PIR1,SSPIF ; Clear Interrupt flag bit
bsf STATUS,RP0
bsf SSPCON2,PEN ; Stop Condition Enable
bcf STATUS,RP0
goto I2C_Wait_SSPIF
ACK_Slave bcf PIR1,SSPIF ; Clear Interrupt flag bit
bsf STATUS,RP0
bcf SSPCON2,ACKDT ; Master Acknowledge the Slave
bsf SSPCON2,ACKSTAT
bcf STATUS,RP0
goto I2C_Wait_SSPIF
NACK_Slave bcf PIR1,SSPIF ; Clear Interrupt flag bit
bsf STATUS,RP0
bsf SSPCON2,ACKSTAT
bsf SSPCON2,ACKDT ; Master Not Acknowledge the Slave
bcf STATUS,RP0
return
I2C_Restart bcf PIR1,SSPIF ; Clear Interrupt flag bit
bsf STATUS,RP0
bsf SSPCON2,RSEN ; Enable Repeated Start Condition
bcf STATUS,RP0
I2C_Wait_SSPIF btfss PIR1,SSPIF
goto $-1
return