CPI funktioniert nicht

Gast #675689
Lesenswert?
• ▲
▼
Hallo!!1

ich schreibe die werte des ADC´s in r17, und möchte sie mit eienr 
konstanten vergleichen. nur leider bringt mir das avr stuido beim 
simulieren fehlermeldungen:

"invalid register"
und
"Wrong number of operands"

hier noch der code:

vergleichen:
;ldi r16, 153
;cp r16, r17
cpi r17, 153
brlo kl12v ;kleiner 12V

;ldi r16, 184
;cp r16, r17
cpi r17, 184
brsh gr14V ;größer 14V

;ldi r16, 130
;cp r16, r17
cpi r17, 130
brlo kl11v ;kleiner 11V
ret


ich weiß nicht was ich falsch mache, vielleicht kann mir ja jemand 
helfen. danke und gruß
Gast #675740
Lesenswert?
• ▲
▼
Hallo!!!

Vielen Dank erstmal für die antwoten
ja, ich arbeite mit avr, dem mega8.
die fehlermeldungen "invalid register" sind in den zeilen mit dem cpi 
befehl.
wenn ich es jedcoh nach der ausgeklammerten version mache, also erst die 
konstante in ein register schreiben und dann vergleichen, funktioniert 
es tadellos. aber mit der methode habe ich eben 6 takte/wörter mehr 
verbraucht .

die fehlermeldung "wrong number of operands" kommt jedoch in diesem 
block:

kl11v:
ldi r16, 0b00000000
out PORTB, r16
ldi r16, 0b00000010       ; LED einschalten
out PORTD, r16     <------------- in dieser zeile ist die fehlermeldung
ret


ich weiß leider auch nicht welche probleme der hat, aber für mich sieht 
alles io. aus. ich werde noch ein bisschen rumprobieren...
Gast #675755
Lesenswert?
• ▲
▼
Hi

In deinem Code kann ich im Moment keinen Fehler erkennen. Das AVR-Studio 
hat allerdings die Eigenschaft manchmal nach dem eigentlichen Fehler 
noch weitere Fehlermeldungen zu erzeugen, obwohl der Code ok ist.
Hast du die richtige Includedatei 'm8def.inc' eingebunden?

MfG Spess
Gast #675958
Lesenswert?
• ▲
▼
schau dir deine Zeilen nochmal genau an.

in allen 3 Beispielen oben hast du zwischen cp und cpi die parameter 
vertauscht.

cp r16,17 ist nunmal etwas anderes als cpi r17,[r16]


verdrehst du die Parameter, musst du auch die Sprunglogik umkehren.

statt brsh <-> brlo
statt breq <-> brne
statt brcs <-> brcc

...

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