dann versuch ichs mal so:
Code:$lib "i2c_TWI.lib" Config Scl = Portc.0 'PIN für I2C Bus Config Sda = Portc.1 I2cinit Config Twi = 400000 Dim Eehead(2) As Byte Dim Ee_adresse01 As Word At Eehead Overlay Dim Eebyte(4) As Byte Dim Eesingle As Single At Eebyte Overlay Dim Eeword(2) As Word At Eebyte Overlay Dim Tempeebyte(4) As Byte Dim Eebanz As Byte Dim Eead As Word Dim Exteetemp As Byte Const 24c64w = &B10100000 Const 24c64r = &B10100001 Const Eetest = 1 '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(byref Ee_daten As Byte , Byval Ee_adresse As Word) Declare Sub Saveword(byref Ee_daten As Word , Byval Ee_adresse As Word) Declare Sub Savesingle(byref Ee_daten As Single , Byval Ee_adresse As Word ) Goto 001 Sub Savebyte(byref 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(byref 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(byref 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: Eead = Ee_adresse01 + Eebanz For Exteetemp = 1 To Eebanz Step 1 I2cstart I2cwbyte 24c64w 'send slave address I2cwbyte Eehead(1) I2cwbyte Eehead(2) I2cwbyte Eebyte(exteetemp) 'send a value I2cstop incr Ee_adresse01 Waitms 10 Next Return 'Routine zum lesen von Daten aus dem EEPROM ++++++++++++++++++++++++++++++++++++ Read_ee: Eead = Ee_adresse01 + Eebanz I2csend 24c64w , Eehead(1) , 2 waitms 1 I2creceive 24c64r , Eebyte(1) , 0 , Eebanz Return 001: #if Eetest = 1 Dim Ins As Single Dim Inw As Word Dim Inb As Byte Do Input "Single: " , Ins Call Savesingle(ins , 5) Print "gespeicherter Wert: " ; Ins Ins = Loadsingle(5) 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 #endif






Zitieren

Lesezeichen