Hallo PIC Gemeinde,

habe folgendes Problem: Lese eine Speicherzelle aus dem EEPROM aus, addiere eine Zahl dazu und schreibe diese wieder an die gleiche Speicherzelle.
Bei diesem Versuch erscheint in der Speicherzelle ein total anderer Wert.

Wiederhole ich den gleichen Versuch, schreibe den Wert nach der Addition an eine andere Speicherzelle ist da Ergebnis völlig korrekt.

Da ich mit PIC gerade angefangen habe könnt Ihr mir helfen ???

Hier der Quellcode:

;* Includedatei einbinden für 16F876

list p=16f876
#include <P16f876.INC>
#define neu Flags,0


__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC & _LVP_OFF

;************************************************* *****************

; Init allgemein


Betriebsstundencopy EQU 0x77

Betriebs1 EQU 0x47
Betriebsstunden EQU 0x78


org H'2100'

de B'00000000'
de B'00000000'
de B'00000000'
de B'00000000'
de B'00000000'
de B'00000010'
de B'00000000'
de B'00000000'

org 0


main


movlw d'2'
movwf Betriebsstunden

movlw d'0'
movwf Betriebs1


;Betriebsstunden_LESEN

bsf STATUS,RP1
bcf STATUS,RP0
movlw 0x05
movwf EEADR

bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,RD

bcf STATUS,RP0
movfw EEDATA

bcf STATUS,RP0
bcf STATUS,RP1
movwf Betriebs1


;Werte addieren

movfw Betriebsstunden
addwf Betriebs1,1


; Werte schreiben:

bcf STATUS,RP0
bcf STATUS,RP1

movfw Betriebs1
movwf Betriebsstundencopy

bsf STATUS,RP1
bcf STATUS,RP0

movlw 0x05
movwf EEADR
movfw Betriebsstundencopy
movwf EEDATA

bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,WREN

bcf INTCON,GIE

movlw 0x55
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR

waita
btfsc EECON1,WR
goto waita

bcf EECON1,WREN

bcf STATUS,RP0
bcf STATUS,RP1

bcf PIR2,EEIF

end

was mache ich in diesem Programm falsch?? Vielen Dank im voraus für Eure Hilfe

Gruß

Michael