Vieleicht kann da dir geholfen werden:
https://www.roboternetz.de/phpBB2/ze...661&highlight=
Ansonsten.....
Code:
$lib "i2c_TWI.lib"
Config Scl = Portc.0 'PINs für I2C Bus
Config Sda = Portc.1
I2cinit
Config Twi = 400000
Dim Eehead(2) As Byte
Dim Eebyte(4) As Byte
Dim Eesingle As Single At Eebyte Overlay
Dim Eeword(2) As Word At Eesingle Overlay
Dim Eebanz As Byte
Dim Ee_adresse01 As Word At Eehead Overlay
Dim Eead As Word
Const 24c64w = &B10100000
Const 24c64r = &B10100001
'Definition der Funktionen ++++++++++++++++++++++++++++++++++++++++++++++++++++
Declare Function Loadbyte(byval Ee_adresse As Word) As Byte
Declare Function Loadword(byval Ee_adresse As Word) As Word
Declare Function Loadsingle(byval Ee_adresse As Word) As Single
Declare Sub Savebyte(byval Ee_daten As Byte , Byval Ee_adresse As Word)
Declare Sub Saveword(byval Ee_daten As Word , Byval Ee_adresse As Word)
Declare Sub Savesingle(byval Ee_daten As Single , Byval Ee_adresse As Word )
Goto 001
Sub Savebyte(byval Ee_daten As Byte , Byval Ee_adresse As Word)
Eebyte(1) = Ee_daten
Ee_adresse01 = Ee_adresse
Eebanz = 1 : Gosub Write_ee
End Sub
Sub Saveword(byval Ee_daten As Word , Byval Ee_adresse As Word)
Eeword(1) = Ee_daten
Ee_adresse01 = Ee_adresse
Eebanz = 2 : Gosub Write_ee
End Sub
Sub Savesingle(byval Ee_daten As Single , Byval Ee_adresse As Word )
Eesingle = Ee_daten
Ee_adresse01 = Ee_adresse
Eebanz = 4 : Gosub Write_ee
End Sub
Function Loadbyte(byval Ee_adresse As Word) As Byte
Ee_adresse01 = Ee_adresse
Eebanz = 1 : Gosub Read_ee
Loadbyte = Eebyte(1)
End Function
Function Loadword(byval Ee_adresse As Word) As Word
Ee_adresse01 = Ee_adresse
Eebanz = 2 : Gosub Read_ee
Loadword = Eeword(1)
End Function
Function Loadsingle(byval Ee_adresse As Word) As Single
Ee_adresse01 = Ee_adresse
Eebanz = 4 : Gosub Read_ee
Loadsingle = Eesingle
End Function
'Routine zum schreiben von Daten in das EEPROM ++++++++++++++++++++++++++++++++
Write_ee:
'Disable Interrupts
Eead = Eead + Eebanz
Eebanz = Eebanz + 2
I2csend 24c64w , Eehead(1) , Eebanz
'Waitms 10
'Enable Interrupts
'If Err = 1 Then Call Error(55)
Return
'Routine zum lesen von Daten aus dem EEPROM ++++++++++++++++++++++++++++++++++++
Read_ee:
'Disable Interrupts
Eead = Eead + Eebanz
I2csend 24c64w , Eehead(1) , 2
'Waitms 10
I2creceive 24c64r , Eebyte(1) , 0 , Eebanz
'Waitms 1
'Enable Interrupts
'If Err = 1 Then Call Error(55)
Return
001:
Dim Ins As Single
Dim Inw As Word
Dim Inb As Byte
Dim I As Word
Do
Input "Single: " , Ins
For I = 20 To 100 Step 4
Call Savesingle(ins , I)
Next I
Print "gespeicherter Wert: " ; Ins
Ins = Loadsingle(20)
Print "geladener Wert: " ; Ins
Input "Word: " , Inw
Call Saveword(inw , 10)
Print "gespeicherter Wert: " ; Inw
Inw = Loadword(10)
Print "geladener Wert: " ; Inw
Input "Byte: " , Inb
Call Savebyte(inb , 30)
Print "gespeicherter Wert: " ; Inb
Inb = Loadbyte(30)
Print "geladener Wert: " ; Inb
Loop
For I = 10 To 410 Step 4
Call Savesingle(0 , I)
Next I
Lesezeichen