EEPROM PIC16F883 schreiben

Gast #1973931
Lesenswert?

Versuche PIC 16F883 EEProm zu schreiben, obwohl ich den Code von 
MICROCHIP anwende (aus dem DATA Sheet)hab ich keinen Erfolg. Es wird 
nicht geschrieben.
Kann mir jemand helfen, mein Code als Anhang.
Vielen Dank
Willi
Angehängte Dateien:
#1974239
Lesenswert?

> EE_16F883
> ;lesen 16F883
> BANKSEL EEADR ;
>   MOVLW   DATA_EE_ADDR ;
>   MOVWF   EEADR ;Data Memory Address to write
>   MOVLW   DATA_EE_DATA ;
>   MOVWF   EEDAT ;Data Memory Value to write

Sollte das wirklich irgendwo so stehen?
Mit "MOVLW" wird ja die Adresse der Variablen "DATA_EE_ADDR" in das WREG 
geladen und nicht der Wert.

Ich hätte hier eher "MOVF DATA_EE_ADDR,W" erwartet.
#1974375
Lesenswert?

>  BSF     EECON1, WR ;Set WR bit to begin write
>    btfss    EECON1,WR

>    goto    EE1  ;wiederholt den Schreibcyklus
>  ;               wenn Schreib-Bit nichr zurückgesetzt ist

Das habe ich auch nicht in der Form in Erinnerung (mach schon ein paar 
Jahre nix mehr mit PIC16).

So sollte das eher funktionieren:

bsf     EECON1,WR  ;Schreibvorgang starten
btfsc   EECON1,WR  ;Schreiben fertig?
goto    $-1        ;nein, warten
Gast #1994080
Lesenswert?

EEADR liegt in Bank 2 und dein Wert den du schreiben willst in Bank0. Da 
du aber am Anfang der Schreibroutine auf Bank2 stellst nimmt er 
natürlich auch dein Datenwert aus Bank2 (was aber falsch ist). Du musst 
also schon darauf achten, in welchem Speicherbereich deine Variablen und 
Register liegen.

Weiter hab ich erst mal nicht geschaut, da dieser Fehler sicher noch 
öfter auftritt..

Gruß
Sven

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren