-
-
Hi,
danke erst Mal für Deine Antwort. Jetzt bin ich noch verwirrter als vorher.
Wenn ich mir nun diesen Code anschaue,
;; EEPROM Segment
.eseg
radrechts:
.db 0x80
radlinks:
.db 0x80
verstehe ich nicht, dass radrechts an die gleiche Position wie radlinks gespeichert wird. Wenn das die gleiche Speicheradresse im EEPROM ist, überschreiben sich die Werte da nicht?
Noch eine Frage:
Ich habe bis jetzt noch nichts mit Makros gemacht. Was ist der Vorteil? Sind Unterprogramme nicht effektiver im Speicherplatz?
Ich habe den Code nun so erweitert, und dachte, Wenn ich PortPin B0 aktiviere, liest es den EEProm und bei PB1 schreibt es den EEProm. Leider läuft der Code so nicht. Wo ist denn der Fehler??
.NOLIST
.include "m8def.inc"
.LIST
.DEF tmp = R16
.DEF tmp1 = R17
LOOP:
sbis PinB, 0
READMOTORVALUE
sbis PinB, 1
SAVEMOTORVALUE
rJmp Loop
.macro READMOTORVALUE
wait4eep1:
sbic EECR,EEPE
rjmp wait4eep1
ldi tmp,LOW(radrechts)
out EEARL,tmp
sbi EECR,EERE
in tmp,EEDR
wait4eep2:
sbic EECR,EEPE
rjmp wait4eep2
ldi tmp1,LOW(radlinks)
out EEARL,tmp
sbi EECR,EERE
in tmp1,EEDR
.endmacro
.macro SAVEMOTORVALUEFUNC
wait4ready1:
sbic EECR,EEPE
rjmp wait4ready1
out EECR,null
ldi tmp,LOW(radrechts)
out EEARL,tmp
in tmp,OCR0A
in tmp1,OCR0B
out EEDR,tmp
cli
sbi EECR,EEMPE
sbi EECR,EEPE
sei
wait4ready2:
sbic EECR,EEPE
rjmp wait4ready2
out EECR,null
ldi tmp,LOW(radlinks)
out EEARL,tmp
out EEDR,tmp1
cli
sbi EECR,EEMPE
sbi EECR,EEPE
sei
.endmacro
;; EEPROM Segment
.eseg
radrechts:
.db 0x80
radlinks:
.db 0x80
Vielleicht kann mir ja noch mal wer helfen?
Danke Lothar
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen