InitI2C: ; The subroutine of I2C Initialization
BANKSEL TRISC
movlw B'00011000' ; Initial PortC,bit 3 & 4 as Input
movwf TRISC ; RC3 = SCL , RC4 = SDA
BANKSEL PORTC
movlw 0xff
movwf PORTC
movlw .100 ; This gives 100KHz I2C clock @ 4MHz
banksel SSPADD
movwf SSPADD
movlw b'10000000' ; Disable slew rate control.
banksel SSPSTAT
movwf SSPSTAT
movlw b'00000000' ;
movwf SSPCON2 ; Setup MSSP for continuous reception.
movlw b'00101000' ; Enable MSSP and setup for I2C master
banksel SSPCON ; mode.
movwf SSPCON
banksel PIR1
movlw 0x00
movwf PIR1
return
I2CWAIT
banksel PIR1
FLoop btfss PIR1,SSPIF
goto FLoop
bcf PIR1,SSPIF
return
I2CSTART
BANKSEL SSPCON2
BSF SSPCON2,SEN
CALL I2CWAIT
BANKSEL 0
RETURN