www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CPI funktioniert nicht


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du r17 irgendwie umdefiniert (.equ r17 = ...)? Ansonsten fällt mir 
da kein Fehler auf, das sollte eigentlich schon funktionieren.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich nehme an, dass Du mit AVR arbeitest....."verträgt" der Assembler das 
SPACE nach dem Komma ?

Gruss Otto

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du solltest mal kären, in welcher Zeile der Fehler auftritt, in diesem 
Code-Ausschnitt gbt es jedenfalls keinen derartigen Fehler beim Build.

Gruß aus Berlin
Michael

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Die Fehlerquelle lässt sich leicht durch anklicken der Fehlermeldung 
finden. Die Zahl in der Klammer bezeichnet übrigens die Zeilennummer.

MfG Spess

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal ich.

habe das avr studio nun nochmal neu gestartet, und es scheint zu 
funktionieren....

danke nochmal an alle.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!!!

ja hatte ich, war auch alles ok soweit.
programm hat nach dem neustart vom avr studio funktioniert und kann nun 
simulieren, keine ahnung was da los war...

Autor: Christoph Wagner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.