Ich denke es hapert an der Stelle, die du mit Speichern0 kommentiert
hast. Wie kommst du darauf, dass du mehr als 16 Bytes in Data0[] hast?
Ich sehe im Zustand REC_DATA nur ein Füllen von exakt 16 Bytes.
Willst du vielleicht was anderes machen und hast in beiden Abschnitten
die Reihenfolge vertauscht. Also soll es wie folgt sein?
Empfangen:
16 Bytes aus Data0 in Daten0 auffüllen, so dass in Daten0 jeweils die 16
Bytes jeder Variable hintereinander stehen.
Senden
Die Daten aus einer Variablen, so wie sie oben in Daten0 gespeichert
wurde, in 16 Bytes Paketen als Data0 ausgeben.
Dann müsste doe Kopiererei in Sepichern0 so ablaufen
for(i=0, i<16; i++)
Datenß[i+Adresse0] = Data0[i];
Und beim Senden
for(i=0, i<16; i++)
Data0[i] = Daten0[i+Adresse0];
Obacht: Du hast noch keine Abfrage auf einen Überlauf des Puffers Daten0
drin. du hast 100 Bytes reserviert, d.h. du musst Sicherstellen, dass
Adresse0 maximal den Wert 5 (Varname0 max. 'E') annimmt.