So,
in Sachen Read funktionierts so:
Code:
Declare Function Read_eeprom(byval Adress As Byte) As Byte 

'...
    Lesen = Read_eeprom(addres) 
'...

Sub Write_eeprom(byval Addres As Byte , Byval Wert As Byte)
    I2cstart                                      'start condition
    I2cwbyte &HA0                                 ' Bausteinadresse
    I2cwbyte Addres                               ' Adresse im IC
    I2cwbyte Wert                                 ' Byte schreiben
    I2cstop                                       ' Stopbedingung
End Sub

Function Read_eeprom(byval Adress As Byte )
   I2cstart                                       'Start I2C
   I2cwbyte &HA0                                  'sende Slave Adresse
   I2cwbyte Adress                                'sende Speicheradresse

   I2cstart                                       'Start I2C
   I2cwbyte &HA1                                  'sende Slave Adresse +1 für lesen
   I2crbyte Read_eeprom , Nack                    'lese Adresse vom EEprom
   I2cstop                                        'Stop I2C
End Function Read_eeprom
Auch auf die I2C-Slaveadresse achten, ob die zu der Einstellung des 2416 passt.

Nach dem schreiben eines Wertes, ist das EEprom für ein paar ms nicht erreichbar weil es das Byte erst ins EEprom schreibt, hierfür erstmal ins DB schauen wie lange das ist, können ca. 5ms sein.
Das bedeuted, wenn man sofort nachdem man einen Wert ans EEprom übergeben hat gleich wieder etwas davon lesen will, muss man erst warten. Macht man sowieso was anderes, was länger dauert als diese Zeit, braucht man natürlich nicht extra zu warten.