Ich glaube ich hab Deinen Fehler, schau Du willst Schreiben:
in rtemp liegt der zu speichernde Wert, dann machst Du ein rcall nach EEPROMSchreiben, und da knallt es weil,Code:SAVE: MOV rTemp, rT1 rCall EEPROMSchreiben rCall Pause rCall Pause RET
Du die den Inhalt von rtemp 2 Mal überschreibst und gespeichert wird LOW der Adresse von W1Code: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![]()
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







Zitieren

Lesezeichen