www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assebler befehle erklärung ?


Autor: Condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe schon ein bischen was in assembler gechriben.
aber immer öfters wen ich mir fremdprogramme anschaue finde ich so
was:

        ldi  r16,  ( 1 << PD5 ) | ( 1 << PD7 )
  ldi  r16,  ( 1 << PD2 ) | ( 1 << PD5 ) | ( 1 << PD7 )
  ldi  r16,  ( 1 << ISC01 ) | ( 0 << ISC00 ) | ( 0 << ISC11 ) | ( 1 <<
ISC10 )
  ldi  r16,  ( 1 << INT0 ) | ( 1 << INT1
        ldi  r16,  ( 1 << CS00 ) | ( 1 << CS01 ) | ( 1 << CS02 ) | ( 0 
<<
WGM01 )
        ldi  r16, ( 0 << OCIE0 ) | ( 1 << OCIE1A ) | ( 0 << OCIE2 ) | (
0 << TOIE0 )

O.K. ldi ist klar r16 auch aber der rest ?
was soll das heißen ? bei Atmel habe ich sowas nicht gefunden...
gibt des da eine gute seite die das erklärt (deutsch) ?

danke

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das sind bitshift befehle.
(1<< PD5) schiebt eine eins um 5 stellen (weil pd5=5) nach links.
| ist bitwise or.
bewirkt, dass z.b im erstn befehle die bits pd5 und pd7 gesetzt werden

Autor: Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobi,

also
ldi R16, (1 << PD5) | (1 << PD7)

bedeutet das gleiche wie

ldi R16, 0b10100000

Habe ich das jetzt richtig verstanden?

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt genau :)

Das mit dem Shiften dient nur der besseren Lesbarkeit, auch werden
Fehler vermieden, z. B. wenn man die Bitstellen abzählt um eine 1 zu
setzen.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jep, genau.
aber benutzt lieber die lange schreibweise der übersichtlichkeit wegen.
wird ja schon vom asm berechnet und eingesetzt

Autor: Dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal nen link, recht informativ:
http://www.avr-asm-tutorial.net/avr_de/beginner/diraus.html

jetzt hab ich aber noch ne frage: wenn ich
sbr r16, 1<<5
benutze, dann muss doch dieses "shifting" die umwandlung von
bit-nummer zu bit-wert sein?!

warum gibt das avrstudio keinen fehler, wenn ich
sbr r16, 33
mache? sbr gilt doch nur für ein bit.. 33 wäre ja aber 32 und 1..

dave

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich würde mal vermuten das der Assembler einfach eine Modulo-Operation
bei sbr macht. Also implizit etwa sbr r16,33%8.

Matthias

Matthias

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sbr ist eigentlich genau dasselbe wie ori, so viel ich weiss. Somit
kannst du also auch mehrere Bits setzen.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sbr = set bits in register
            ^^^
ist für mehrere. in der ref steht, dass das nur ein OR ist. simulator
bestätigt das. sbr r16,33 setzt bit 0 und 5

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

stimmt. Ist wohl einer der doppelt benamsten AVR Befehle. ORI und SBR
haben den selben OPCode und sind daher identisch.

Matthias

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.