'Verwendete Ports
define SDA Port[9]
define SCL Port[10]
'Notwendige Variablen
define I2C_Daten byte
define N byte
'Ruhezustand
SDA=ON
SCL=ON
'250 in den EEProm schreiben
gosub I2C_Start
I2C_Daten=64 'Bausteinadresse des 24C02 mit RW-Bit LOW
gosub I2C_Write
I2C_Daten=0 'Adresse im Speicher des 24C02
gosub I2C_Write
I2C_Daten=250 'Daten die im EEPRom gespeichert werden sollen
gosub I2C_Write
gosub I2C_Stop
pause 1 'pause um den EEProm die Daten speichern zu lassen
'wieder lesen
gosub I2C_Start
I2C_Daten=64 'Bausteinadresse des 24C02
gosub I2C_Write
I2C_Daten=0 'Adresse im Speicher des 24C02
gosub I2C_Stop
gosub I2C_Start
I2C_Daten=65 'Adresse mit RW-Bit HI (=lesen)
gosub I2C_Write
gosub I2C_Read 'Byte lesen
gosub NoAck 'kein weiteres Byte mehr lesen
gosub I2C_Stop
'das gelesene Byte befindet sich nun in I2C_Daten.
end
#I2C_Start
SDA=OFF
SCL=OFF
return
#I2C_Stop
SDA=OFF
SCL=ON
SDA=ON
return
#I2C_Write
for N=1 to 8
SDA=OFF
if (I2C_Daten and 128) =128 then SDA=ON
pulse SCL
I2C_Daten=I2C_Daten shl 1 '1 Bit nach links schieben
next
pulse SCL
return
#I2C_Read
I2C_Daten=0
deact SDA
for n=1 to 8
I2C_Daten=I2C_Daten shl 1
SCL=ON
if SDA then I2C_Daten=I2C_Daten+1
SCL=OFF
next
return
#Ack
SDA=0
pulse SCL
return
#NoAck
SDA=1
pulse SCL
return
|