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