I have find the routine for mssp. It work fine


'Impostazioni modulo MSSP
SSPCON.5=1
SSPCON.3=1
SSPCON.2=0
SSPCON.1=0
SSPCON.0=0
SSPCON2=0
SSPSTAT.7=0
SSPSTAT.6=0

SSPADD= 24 ' Freq di clock 100 KHz a 10 MHz

'------------------------------------------------
' Subroutine Tx su bus I2C per indirizzi a 16 bit
:I2CSendw
gosub I2CStart
SSPBUF = addressbus
gosub I2CWait
SSPBUF = address.lowbyte
gosub I2CWait
SSPBUF = address.highbyte
gosub I2CWait
SSPBUF = dati
gosub I2CWait
gosub I2CStop
Return

'------------------------------------------------
' Subroutine Rx su bus I2C per indirizzi a 16 bit

:I2CReceivew

gosub I2CStart
SSPBUF = addressbus
gosub I2CWait
SSPBUF = address.lowbyte
gosub I2CWait
SSPBUF = address.highbyte
gosub I2CWait
gosub I2CRestart
SSPBUF = addressbus + 1
gosub I2CWait

while ( SSPSTAT.2=1 )
WEND

SSPCON2.3=1
Gosub I2CWait
dati=SSPBUF
gosub I2CNak
gosub I2CStop

Return


'------------------------------------------------
' Subroutine Rx su bus I2C per indirizzi a 8 bit
:I2CReceive

gosub I2CStart
SSPBUF = addressbus
gosub I2CWait
SSPBUF = address.lowbyte
gosub I2CWait
gosub I2CRestart
SSPBUF = addressbus + 1
gosub I2CWait

while ( SSPSTAT.2=1 )
WEND

SSPCON2.3=1
Gosub I2CWait
dati=SSPBUF
gosub I2CNak
gosub I2CStop

Return

'------------------------------------------------
' Subroutine Tx su bus I2C per indirizzi a 8 bit
:I2CSend
gosub I2CStart
SSPBUF = addressbus
gosub I2CWait
SSPBUF = address.lowbyte
gosub I2CWait
SSPBUF = dati
gosub I2CWait
gosub I2CStop
Return

'------------------------------------------------
' Subroutine MSSP I2C
:I2CAck
SSPCON2.5=0
SSPCON2.4=1
gosub I2CWait
Return


:I2CNak
SSPCON2.5=1
SSPCON2.4=1
gosub I2CWait
Return



:I2CRestart
SSPCON2.1=1
GOSUB I2CWait
Return


:I2CStart
SSPCON2.0=1
GOSUB I2CWait
Return



:I2CStop
SSPCON2.2=1
GOSUB I2CWait
Return


:I2CWait
while (PIR1.3=0)
WEND
PIR1.3=0
Return



In the mainprogram

addressbus=$A0

address=x
dati=y
gosub I2CSendw