Hallo Searcher
Hallo Forum,

nun bin trotz Hilfe am Ende.
Nochmals mein letzter Versuch gekürzt nur mal die 6 Single schreiben und lesen ohne Fortschreibung.
In der Hoffnung mein Code ist nun besser lesbar. Stelle ich diesen noch mal ab

Code:
$regfile "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 40
$baud = 19200                                               '19200
Code:

'gibt den Erstellungszeitpunkt im europäischen Format DD-MM-YY hh:nn:ss
'und die Code-Version aus.
Print
Print "erstallt am       : " ; Version(1)
Print "Version Code : " ; Version(3)
Print
Waitms 100
$lib "i2c_TWI.lib"                                          'hardware I²C einbinden
Config Twi = 100000                                         ' Takt 100kHz
'Format für Single zwei Nachkommastellen
Config Single = Scientific , Digits = 2
'###############################################################################
Config Base = 0                                             'Array Indexe beginnen mit 0
Const Dev_addr_write = &B10100000                           'EEPROM Schreibadresse
Const Dev_addr_read = &B10100001                            'EEPROM Leseadresse
'Const Mem_addr_first_store_loc = 0                          'Auf EEPROM Seitenanfang legen, im folgenden PRG keinen roll over produzieren!
Dim J As Byte                                               'Laufvariable für for-next Schleife Single
Dim Mem_addr_first_store_loc As Word
Dim Mem_addr As Word
Dim Mem_addr_low_byte As Byte At Mem_addr Overlay
Dim Mem_addr_high_byte As Byte At Mem_addr + 1 Overlay
Dim Z As Byte                                               'Anzahl der Single_Variablen schreiben
Dim Number_from_rs232(6) As Single                          'Array der 6 Schreib-Variablen
Dim Four_byte_var_write As Single
Dim Byte_var_write(3) As Byte At Four_byte_var_write Overlay       '4 Elemente, Arrayindex von 0 bis 3
Dim L As Byte                                               'alle Single_Variablen auslesen
Dim Number_from_rl232(6) As Single
Dim Four_byte_var_read As Single
Dim Byte_var_read(3) As Byte At Four_byte_var_read Overlay  '4 Elemente, Arrayindex von 0 bis 3
Dim Aktionen As Byte                                        'nächsten Schreibzyklus vortschreiben

'!!!!! ist nur für Test mit Taster also anpassen !!!!
Config Pinc.3 = Input                                       'Taster für EEprom schreiben
Portc.3 = 1                                                 'Port auf H schalten
Taster_s Alias Pinc.3                                       'Taster ein Namen geben
Config Pinc.2 = Input                                       'Taster für EEprom lesen
Portc.2 = 1                                                 'Port auf H schalten
Taster_l Alias Pinc.2                                       'Taster ein Namen geben
Gosub Lesen                                                 'nach Reset erstmal lesen
Do
 '--- hier zum Daten schrieben --------
  If Taster_s = 0 Then                                      'wenn Taste gedrückt schreiben
       Waitms 100                                           'nur für Test
    Gosub Schreiben
  End If
'--- hier zum Daten lesen ------------
  If Taster_l = 0 Then                                      'wenn Taste gedrückt lesen
       Waitms 100                                           'nur für Test
    Gosub Lesen
  End If
Loop

'### BEGINN ext. EEPROM schreiben (byte write method) ###
Schreiben:
  Print "Byte der 6 Single-Variablen schreiben"
  Print
  Mem_addr_first_store_loc = Aktionen * 1                   '24 = 6 Singles * 4 Byte (ein Single belegt 4 Byte)
 For Z = 0 To 5                                             'for-next mit 0 beginnen lassen
    If Z = 0 Then Number_from_rs232(0) = 100.10
    If Z = 1 Then Number_from_rs232(1) = 200.20
    If Z = 2 Then Number_from_rs232(2) = 300.30
    If Z = 3 Then Number_from_rs232(3) = 400.40
    If Z = 4 Then Number_from_rs232(4) = 500.60
    If Z = 5 Then Number_from_rs232(5) = 600.60
    Four_byte_var_write = Number_from_rs232(z)              'Single Variable Z schreiben
    Mem_addr = Mem_addr_first_store_loc                     'Speicheradresse für ext. EEPROM initialisieren
   For J = 0 To 3                                           'Laufschleife um 4 Bytes zu schreiben
      I2cstart
      I2cwbyte Dev_addr_write                               'Sendet ext. EEPROM Adresse zum Schreiben
      I2cwbyte Mem_addr_high_byte                           'Sendet Speicher-Schreibadresse
      I2cwbyte Mem_addr_low_byte                            'Sendet Speicher-Schreibadresse
      I2cwbyte Byte_var_write(j)                            'Sendet Datenbyte
      I2cstop
      Mem_addr = Mem_addr + 1                               'Schreibadresse mit jedem Schleifendurchlauf erhöhen
        Waitms 10                                           'Warten auf ext. EEPROM
            Print "Single-Variable   " ; Z ; " =  Adresse " ; J ; "  Bytewert  " ; Byte_var_write(j)
    Next J
         Print "!!  Ausgabe  !!  " ; Four_byte_var_write
         Print
  Next Z
   Incr Aktionen                                            'nächsten Schreibzyklus anstoßen
'### ENDE ext. EEPROM schreiben (byte write method) ###
Return
 ' Eergebnis: sieht doch Gut aus.
'(
 Byte der 6 Single-Variablen schreiben
Single-Variable   0 =  Adresse 0  Bytewert  51
Single-Variable   0 =  Adresse 1  Bytewert  51
Single-Variable   0 =  Adresse 2  Bytewert  200
Single-Variable   0 =  Adresse 3  Bytewert  66
!!  Ausgabe  !!  100.10
Single-Variable   1 =  Adresse 0  Bytewert  51
Single-Variable   1 =  Adresse 1  Bytewert  51
Single-Variable   1 =  Adresse 2  Bytewert  72
Single-Variable   1 =  Adresse 3  Bytewert  67
!!  Ausgabe  !!  200.20
Single-Variable   2 =  Adresse 0  Bytewert  102
Single-Variable   2 =  Adresse 1  Bytewert  38
Single-Variable   2 =  Adresse 2  Bytewert  150
Single-Variable   2 =  Adresse 3  Bytewert  67
!!  Ausgabe  !!  300.30
Single-Variable   3 =  Adresse 0  Bytewert  51
Single-Variable   3 =  Adresse 1  Bytewert  51
Single-Variable   3 =  Adresse 2  Bytewert  200
Single-Variable   3 =  Adresse 3  Bytewert  67
!!  Ausgabe  !!  400.40
Single-Variable   4 =  Adresse 0  Bytewert  205
Single-Variable   4 =  Adresse 1  Bytewert  76
Single-Variable   4 =  Adresse 2  Bytewert  250
Single-Variable   4 =  Adresse 3  Bytewert  67
!!  Ausgabe  !!  500.60
Single-Variable   5 =  Adresse 0  Bytewert  102
Single-Variable   5 =  Adresse 1  Bytewert  38
Single-Variable   5 =  Adresse 2  Bytewert  22
Single-Variable   5 =  Adresse 3  Bytewert  68
!!  Ausgabe  !!  600.60
')
 
 '### BEGINN ext. EEPROM lesen (random address read method) ###
Lesen:
Print "Byte der 6 Single-Variablen lesen"
Print
 For L = 0 To 5                                             'Step 4                                    'hier mein Versuch 10 Aktionen lesen
    Mem_addr = L                                            'Mem_addr_first_store_loc      'Leseadresse für ext. EEPROM initialisieren
  For J = 0 To 3                                            'Laufschleife um 4 Bytes zu schreiben
    I2cstart
    I2cwbyte Dev_addr_write                                 'Sendet ext. EEPROM Adresse zum Schreiben
    I2cwbyte Mem_addr_high_byte                             'Sendet Speicher-Leseadresse
    I2cwbyte Mem_addr_low_byte                              'Sendet Speicher-Leseadresse
    I2cstart                                                'zweites Start ohne vorheriges Stop (siehe Datenblatt "random address read")
    I2cwbyte Dev_addr_read                                  'Sendet ext. EEPROM Adresse zum Lesen
    I2crbyte Byte_var_read(j) , Nack                        'Liest Datenbyte
    I2cstop
    Mem_addr = Mem_addr + 1                                 'Leseadresse mit jedem Schleifendurchlauf erhöhen
    Waitms 10
       Print "Single_Variable  " ; L ; "  = Adresse " ; J ; "  Bytewert  " ; Byte_var_read(j)
  Next J
                                                                     'Mem_addr_first_store_loc = L (auskommentiert)
 '### BEGINN SW UART Ausgabe ###
     Print "!!  Ausgabe  !!  " ; Four_byte_var_read         'Single paßt nicht zu vorher geprinteten Mem_addr
     Print
 Next L
 'zurück setzen
   Aktionen = 0                                             'alle Aktionen wurden ausgelesen.
 Return
  '########ENDE ext. EEPROM lesen (random address read method)
' Eergebnis: Ist doch Müll
'(
Byte der 6 Single-Variablen lesen
Single_Variable  0  = Adresse 0  Bytewert  102
Single_Variable  0  = Adresse 1  Bytewert  38
Single_Variable  0  = Adresse 2  Bytewert  22
Single_Variable  0  = Adresse 3  Bytewert  68
!!  Ausgabe  !!  600.60 [ist die letze Variable aber weningsten schon mal ein Wert]
Single_Variable  1  = Adresse 0  Bytewert  38
Single_Variable  1  = Adresse 1  Bytewert  22
Single_Variable  1  = Adresse 2  Bytewert  68
Single_Variable  1  = Adresse 3  Bytewert  0
!!  Ausgabe  !!  0.0
Single_Variable  2  = Adresse 0  Bytewert  22
Single_Variable  2  = Adresse 1  Bytewert  68
Single_Variable  2  = Adresse 2  Bytewert  0
Single_Variable  2  = Adresse 3  Bytewert  0
!!  Ausgabe  !!  0.0
Single_Variable  3  = Adresse 0  Bytewert  68
Single_Variable  3  = Adresse 1  Bytewert  0
Single_Variable  3  = Adresse 2  Bytewert  0
Single_Variable  3  = Adresse 3  Bytewert  0
!!  Ausgabe  !!  0.0
Single_Variable  4  = Adresse 0  Bytewert  0
Single_Variable  4  = Adresse 1  Bytewert  0
Single_Variable  4  = Adresse 2  Bytewert  0
Single_Variable  4  = Adresse 3  Bytewert  7
!!  Ausgabe  !!  96.30E-36
Single_Variable  5  = Adresse 0  Bytewert  0
Single_Variable  5  = Adresse 1  Bytewert  0
Single_Variable  5  = Adresse 2  Bytewert  7
Single_Variable  5  = Adresse 3  Bytewert  134
!!  Ausgabe  !!  -25.39E-36
')

Vielen Dank für die aufwendigen Hilfeleistungen.
Nehme nach wie vor an der IC ST24C64 will mich narren.

Mit freundlichen Grüßen
fredred