Hallo Searcher,

alles klar mit “addr_first_store_loc” wollte nur sicher sein, dass ich deine Code auch bis zum letzen Punkt verstehe.
Wenn ich Hilfe bekomme möchte ich diese auch verstehen und nicht nur anwenden.

Die Werte in den Adressbereichen zu schreiben habe ich auf Anhieb verstanden. War ja auch das Signal zum weiter machen.
Die NAN abfrage habe ich eingebaut, um beim auslesen, unbeschriebene Adressen, nicht mit zulesen. Sind ja Werksseitig auf &HFF. Für Single sieht es so aus.
[If Byte_var_read(0) = 0 And Byte_var_read(1) = 0 And Byte_var_read(2) = 127 And Byte_var_read(3) = 67 Then
Return ...] somit Printausgabe NAN.

Bedingt: Eeprom wird in mein Projekt von Adr. 0 bis Adr. Max gelesen, aber nur wenn gültige Werte vorhanden sind.
Die Schreibvariable „Aktionen“ will ich nicht nutzen. Kann ja mal ein Reset auftreten. Da Eeprom auch je nach bedarf ausgelesen wird, könnte es sein Adr. Max wird nicht erreicht.

Zum Verständnis speichere ¼ Stunden Lastprofil Stromzähler, Gaszähler und Temperaturen Daten usw. 24 Single pro ¼ Stunde = 96 Byte pro Stunde. Somit können auf ST24C64
ca. 7 Tage gespeichert werden bis Überlauf. Nach Datenblatt ca. 100.000 schreib Zyklen.
Der IC wird mich überleben.

Hier mein Codeschnipsel für bewerte Datenerfassung mit int. Eeprom. funktioniert beim Freund schon sehr lange ohne Probleme.
Die Daten werden über die von mir gebauten RFM12b Funkbrücke vom Keller zur 2 Etage im Haus mit Tagestakt gesendet.

Nicht über Code- Kommentare lachen er hat noch weniger Erfahrungen wie ich.

Code:
$regfile "m644pdef.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 40
$baud = 19200
 
Waitms 100
 
'kann nach Test entfernt werden ist nur für Prüfung ab wirklich hochgezählt wird
'muss dann auch aus [Temp_str] entfernt werden.
       Dim Zeit As Byte
 
'### hier werden die Variablen für EEprom-Test festgelegt ##########
     Dim Datum As String * 8
     Dim Var1 As String * 5
     Dim Var2 As String * 5
     Dim Var3 As String * 5
     Dim Var4 As String * 5
     Dim Var5 As String * 5
'sind 33 Zeichen + 5x Simikolon = 38 (Test Zeit nochmals 2 Zeichen
'somit muss [Eram String * 41] sein. Immer um 1 größer.
 
  '!!!! nur für Test !!!!!!!!!!!!!!!!!!!!!!!!
  'wie du siehst müssen dein Variablen zum speichern in EEprom
  'immer vom Typ String sein oder wie die Variable [Zeit]
  'in [Temp_str] in ein str() eingebunden werden.
 
 'Hinweis: Für Test einfach mal den Variablen-Inhalt ändern.
     Datum = "07.11.13"
     Var1 = "15:10"
     Var2 = "1:20"
     Var3 = "23:59"
     Var4 = "1:10"
     Var5 = "999.9"
  '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
‚in Echt kommen die „Var“ vom Empfänger(siehe Beschreibung Hardware)
 
Dim Tagz As Byte                                            'ist Tageszähler
Dim Tagzm As Byte
Dim C As Byte                                               'ist Zähler für EEprom-Speicherplatz schreiben
Dim Mess_eeprom_nr As Byte                                  'ist Start Adr. im Eeprom
'Abhängig vom verwendeten µC (Mess_eeprom_max = EEPROM / Eram String * 41)
'IC M644 wäre Mess_eeprom_max = 2000/41
'32 x alles speichern dann überschreiben. In Echt wären es die Tage
 
Const Mess_eeprom_max = 32                                 'wenn alles OK dann laut Formel ändern.
Tagzm = Mess_eeprom_max - 2                                 '2 Tage vor überschreiben dann LED-Anzeige
Dim Temp_str As String * 41
Dim Mess_eeprom(mess_eeprom_max) As Eram String * 41
'ist nach Spannungsausfall oder Reset der Zwischenspeicher
'und bleibt erhalten
Dim Temp_stralt As String * 41
 
'String x Max nach jedem Durchlauf erst 1 dann 2 usw.
'Erster Speicherbereich 1 bis 41 dann x2 somit 42 bis 83 bis Eeprom voll ca. bei 2000
'bei dein EEprom.
'+++++++++++++++++++++++++++++++++++++++++++++
 
'!!!!! 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
 
Config Portc.4 = Output
Eepvoll Alias Portc.4                                       'LED-Warnung für EEprom voll
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
'wenn gewünscht alten Inhalt vom EEprom lesen nach Reset
'natürlich muss dann statt Print der String[Temp_str]
'wieder zerlegt werden wenn der letzte Wert in Variablen
'geschreiben werden soll.
 
   For C = 1 To Mess_eeprom_max
         Temp_stralt = Mess_eeprom(c)
         Print "aus EEPROM lesen: " ; Temp_stralt
   Next C
'muss nicht sein hat aber eine Kontrollfunktion(auslesen um Daten zu sichern)
'nach Reset LED-Ein wenn Neu gelesen dann Aus bis Speicher fast voll
       Eepvoll = 1
 
     Wait 1                                                 'nur für Test
 
'**** hier in Echt in deiner Haupschleife einbinden
Do
 
Wait 1
 
 Zeit = Zeit + 1                                            'nur für Test
 
'hier wird die Zeichenkette für EEprom in [Temp_str] geschrieben
'das [;] ist ein Trennzeichen für Excel.  weiter Verarbeidungen
  Temp_str = Str(zeit) + ";" + Datum + ";" + Var1 + ";" + Var2 + ";" + Var3 + ";" + Var4 + ";" + Var5
 
'speichert die Tagessumme in EEprom, wenn ????
 
' "Time$ >= "23:59:58"  ' zum Beispiel eine paar Sekunden früher (Laufzeiten) ausprobieren
'oder [Date(dcf_day)] für Start nutzen wie schon hingewiesen. Alten Tag speichern
'[Date(dcf_day)] ist eine Bascom-Variable, somit muss du nicht erst Date$ zerlegen
 
'  _day_alt <> _day   Then in Eeprom schreiben.
'ist nach meiner Meinung besser da Laufzeit vernachlässigt werden kann.
 
     If Taster_s = 0 Then                                   'dann ersetzen
        Gosub Tagspeicher_schreiben
     End If
 
'wenn Taste gedrückt lesen
      If Taster_l = 0 Then
           Gosub Tagspeicher_lesen
      End If
 
 Loop
    End
 
'*****************************************************************
Tagspeicher_schreiben:                                      ' Daten in EEprom schreiben
          Incr Tagz                                         'Tagzähler hoch setzen
 
  If Mess_eeprom_nr < Mess_eeprom_max Then
        Incr Mess_eeprom_nr
  End If
        Mess_eeprom(mess_eeprom_nr) = Temp_str
    Print "in EEPROM gespeichert " ; Temp_str               'für Test
 
'Warnung wenn Eeprom fast voll(wurde auf Max -2 eingestellt)
  If Tagz >= Tagzm Then
         Eepvoll = 1                                        'LED-Anzeige EIN Tageszähler
  End If
 
 'EEprom-Speicher voll?
 'dann alte Werte verschieben damit neue Werte hinten angehängt werden können
    If Mess_eeprom_nr >= Mess_eeprom_max Then
 
       For C = 2 To Mess_eeprom_max
 'Wert holen und einen Platz tiefer wieder speichern
            Temp_str = Mess_eeprom(c)
         Decr C
            Mess_eeprom(c) = Temp_str
         Incr C
      Next C
   End If
 
 Return
'****************************************************************
 
 Tagspeicher_lesen:
 
'***** EEprom Speicher printen wenn Taster= 0  ****
 
  For C = 1 To Mess_eeprom_max
         Temp_stralt = Mess_eeprom(c)
         Print "aus EEPROM lesen: " ; Temp_stralt
  Next C
 
  'Speicherzähler im EEPROM zurücksetzen wir haben ja alles gelesen
         Mess_eeprom_nr = 0
  'Tageszähler zurücksetzen
         Tagz = 0
         Eepvoll = 0                                        'LED-Anzeige Aus
         Zeit = 0                                           'nur für Test
  Return
 
'==================================================================
Nur die kurzen Intervalle sind für mich nicht befriedigend.(Industriestandart sind 36 Tage) Knalle ich aber 8 ST24C128 am Bus kann ich mich ca. 112 Tage Zeit fürAuslesung lassen .

Deine ??? über mein unverständlich Frage, wie ich alle 6 Single für Ausgabe an Terminal-Log übergebe ist OK Möchte wie es, in mein Codeschnipsel zu sehen ist, zum lesen alle Single als String zusammen bastelt.(Trennzeichen [;] )
Mit vielen Schritten bekomme ich es hin aber eine Lösung mit Overlay währ schon besser.
PS. Terminal-Log in eine Datei zu schreiben und dann mit Excel/ Access VBA „Schmuck“ zu machen benötige keine Hilfe.

Nun genug der Schreiberei, muss weiter klappern für Endlösung.

Viele Grüße auch von meiner Frau.
Frau soll sich aber nicht einbilden, nun werde ich die Bude putzen, es geht weiter. Ich Frau
fredred