www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Befehl gesucht


Autor: Lukas -- (lukas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich siche einen befehl im AVR-Assembler, mit dem ich ganze 
register auf einen bestimmten inhalt prüfen kann und dementsprechend 
ragieren kann, also z.b. wenn r16 gerade 0b01011010 hat, dann z.B. der 
nächste befehö übersprungen werden. wenn nicht, dann wird nicht 
gesprungen.

WIe kann ich, wenn die Zahl 2 8bit register benötigt überprüfen? Gibt es 
da einen extra befehl? oder muss ich einfach beide einzeln überprüfen?

Autor: oder hier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit einem Vergleich und anschließendem bedingten Sprung?
Oder Wert abziehen und Sprung falls Null?
Wenn du zwei Register überprüfen willst, musst du (soweit ich weiss) 
beide nacheinander testen.

Gruss

Autor: oder hier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guckst du hier
http://www.avr-asm-tutorial.net/avr_de/beginner/co...
CPI wäre eventuell nett um Register mit Konstante zu vergleichen.

Autor: Lukas -- (lukas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, dasist gut, vielen dank, aber eine frage bekam ich beim testen ich 
hab bei einem älteren projekt gesehen, da wollte ich die interne 
taktfrequens vom mega8 eintellen. und habe dafür die bits CKSEL0, 
CKSEL1, CKSEL0 und CKSEL3 geändert, aber das alles mit dem befehl cpi, 
also so:

cbi CKSEL0, 0
cbi CKSEL1, 0
cbi CKSEL2, 1
cbi CKSEL3, 0

und das hat auch funktioniert, ibwohl ich doch nur das bit CKSEL0 mit 
der Konstanten 0 vergleichen habe, oder?

Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn es nur ein Bit zum vergleichen geht dann
sbrc r16,7 ;skip if bit in register is cleared
rjmp bla   ;if bit 7 in r16 is cleared this will be skiped
mov.....   ;lala
ansonsten
cpi r16,0xf0  ;compare
breq lala     ; if true jump
              ;else do this ...

grüüße

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lukas:
Am Ende des Datenblatts befinden sich zwei Tabellen. Eine listet den 
Befehlssatz auf, die andere die I/O-Adressen. Beide solltest Du Dir als 
Arbeitsunterlage (Handzettel) ausdrucken. Weiterführende Informationen 
zu den Befehlen gibt es dann in der Hilfe zum AVR-Studio. Dazu einfach 
Befehl eintippen, Cursor draufstellen, F1-Taste drücken, lesen, 
verstehen.

...

Autor: bla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte beachte, dass cbi NICHT cpi ist!

cbi = clear bit in I/O-Register
cpi = compare immediate

Autor: SIGINT112 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die myAVR-Referenzkarte ist auch optimal als Befehlreferenz geeignet:
http://www.myavr.de/download/myavr_referenzkarte_15.pdf

Das Teil hab ich mir ausgedruckt und laminiert.... was besseres gibts 
nicht.

Gruß,
  SIGINT

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh ha, da aber ich wohl zu schnell geschaut! Vieln dank für die gute und 
schnelle hilfe! Jetzt sollte es klappen! Vielen Dank!

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wollte ich die interne taktfrequens vom mega8 eintellen.

>---------
cbi CKSEL0, 0
cbi CKSEL1, 0
cbi CKSEL2, 1
cbi CKSEL3, 0
>---------

CKSELx klingt nach Fusebits, geht das überhaupt aus dem laufenden 
Programm heraus??

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> geht das überhaupt aus dem laufenden Programm heraus??
Nein, natürlich nicht. Und wenn es ginge, dann wäre die Syntax falsch.

@Lukas:
1.: Die Taktquelle lässt sich nicht aus dem Programm heraus ändern.
2.: Versuch mal, die Beschreibung der Befehle im Tut und in der Hilfe zu 
verstehen. Und nicht nur die Befehle, sondern auch den Unterschied 
zwischen Registern, Bits und Fusebits...

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte meinen Post absichtlich als Frage ausformuliert...

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.