Declare Sub Write_eeprom(byval Adresh As Byte , Byval Adresl As Byte ,
Byval Value As Byte)
Declare Sub Read_eeprom(byval Adresh As Byte , Byval Adresl As Byte ,
Value As Byte)
' Adresse erzeugen:
' Pin A0 und A1 sind intern mit Pulldowns versehen, sind also
' wenn extern nicht beschaltet 0
' Die Der Baustein halt serienmäßig die Adresse Binär:
' 1 0 1 0 0 A1 A0 R/W
' also, angenommen man möcht bei A0 = 0 und A1=0 schreiben:
' Adresse: 10100000 = 160
' Lesen Adresse: 10100001 = 161
'
' der 24c128 und 24c256 brauchen für die Adressierung 2 Byte
' Den High-Byte der Adresse und den Lowbyte der Adresse.
' Einfach, da die soviel Speicher habn :o)
Const Addressw = 160 'slave
write address
Const Addressr = 161 'slave
read address
Dim B1 As Byte
Dim Value As Byte 'dim byte
Dim Adresh As Byte 'Highbyte
der Adresse
Dim Adresl As Byte 'Lowbyte
der Adresse
Dim A As Byte
'allgemeine Variable für Berechnungen
For A = 1 To 5 ' die
ersten 5 Byte schreiben
Value = A + 100 'Beginnend
mit Zahlenwert 105 um Verwechslungen zu vermeiden
Call Write_eeprom(1 , A , Value) 'Daten
schreiben
Next A
For A = 1 To 5 'die
geschriebenen 5 Byte auslesen
Call Read_eeprom(1 , A , Value) 'auslesen
Print Value 'Ausgabe
an UART
Next A
'sample of writing a byte to EEPROM AT2404
Sub Write_eeprom(byval Adresh As Byte , Adresl As Byte , Value As
Byte)
I2cstart 'start
condition
I2cwbyte Addressw 'slave
address
I2cwbyte Adresh 'asdress H
of EEPROM
I2cwbyte Adresl 'asdress L
of EEPROM
I2cwbyte Value 'value to
write
I2cstop 'stop
condition
Waitms 10 'wait for
10 milliseconds
End Sub
'sample of reading a byte from EEPROM AT2404
Sub Read_eeprom(byval Adresh As Byte , Adresl As Byte , Value As Byte)
I2cstart 'generate
start
I2cwbyte Addressw 'slave
adsress
I2cwbyte Adresh 'asdress H
of EEPROM
I2cwbyte Adresl 'asdress L
of EEPROM
I2cstart 'repeated
start
I2cwbyte Addressr 'slave
address (read)
I2crbyte Value , Nack 'read
byte
I2cstop 'generate
stop
End Sub
' when you want to control a chip with a larger memory like the 24c64
it requires an additional byte
' to be sent (consult the datasheet):
' Wires from the I2C address that are not connected will default to 0
in most cases!
' I2cstart 'start
condition
' I2cwbyte &B1010_0000 'slave
address
' I2cwbyte H 'high
address
' I2cwbyte L 'low
address
' I2cwbyte Value 'value to
write
' I2cstop 'stop
condition
' Waitms 10