Zu I2C gibt es schon diverse Samples (Beispiele)
  • ' file: I2C.BAS
    ' demo: I2CSEND and I2CRECEIVE


oder in der Hilfe
  • I2CSEND , I2CRECEIVE , I2CSTART , I2CSTOP, I2CRBYTE , I2CWBYTE, CONFIG SDA ,CONFIG SCL , CONFIG I2CDELAY



Hier ein Demo um 15 Bytes in ein Array zu lesen
Code:
$regfile = "m32def.dat"                                     ' the used chip
$crystal = 8000000
$baud = 19200
                                         ' baud rate
Config Sda = Portb.5
Config Scl = Portb.7
Const Slave = &H120
Dim Buf(15) As Byte

I2creceive Slave , Buf(1) , 0 , 15                          'send 0 bytes and receive 15 byte


End

Wenn Du vorher einige Bytes an den Slave senden willst /z.B. 2 Bytes da musst du in das Array zunächst die zu sendenden Werte schreiben, den Befehl ändern "I2creceive Slave , Buf(1) , 2 , 15"
Das Array wird dann mit den empfangen Werten überschrieben.