Ich glaube ich hab Deinen Fehler, schau Du willst Schreiben:
Code:
SAVE:
MOV rTemp, rT1
rCall EEPROMSchreiben
rCall Pause
rCall Pause
RET
in rtemp liegt der zu speichernde Wert, dann machst Du ein rcall nach EEPROMSchreiben, und da knallt es weil,
Code:
EEPROMSchreiben:
ldi rTemp, HIGH(W1) ; High-Adresse im EEPROM laden
out EEARH, rTemp ; und ins EEARH schreiben
ldi rTemp, LOW(W1) ; Low-Adresse im EEPROM laden
out EEARL, rTemp ; und ins EEARL schreiben
sbic EECR,EEWE ; Vorherigen Schreibvorgang abwarten
rjmp EEPROMSchreiben
out EEDR,rTemp ; Daten ins EEPROM-Datenregister
sbi EECR,EEMWE ; Schreiben vorbereiten
sbi EECR,EEWE
rCall Pause
RET
Du die den Inhalt von rtemp 2 Mal überschreibst und gespeichert wird LOW der Adresse von W1 
Entweder nimmst Du einen anderen Register für die Wertübergabe, oder Du ließt rT1 unmitelbar vor dem Schreiben in EEDR aus.
Gruß Sebastan
Lesezeichen