Michael 33
12.07.2005, 12:58
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
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