www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu assembler : "ldi temp, 1<<TOIE1 "


Autor: luxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
was heißt in assembler quelltexten sowas:

ldi temp, 1<<TOIE1

für was steht das 1<<TOIE1? das lässt sich nämlich mit nachdenken nicht
entschlüsseln.

luxx

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist eine 1, die um TOIE1 Stellen nach links
verschoben wird.

Bsp. Wenn zb. TOEI1 (ein Makro) den Wert 3 hat, dann
wird die 1 um 3 Stellen nach links verschoben.

Binaer gesehen:

   1                      0000 0001
3 Stellen nach links      0000 1000

Kuerzer ausgedruckt.  1 << TOIE1  ist ganz einfach
eine Binaerzahl, in der das Bit mit der Nummer TOIE1
gesetzt ist.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Bit 'TOIE1' ist im Datenblatt erklärt und in der Include-Datei des
AVRs definiert.

Bei Abfragen (sbrs. sbrc sbis, sbic) und bei Bitmanipulation an
I/O-Registern (sbi, cbi) braucht man die Bitnummer (0..7), also den
Wert, der hinter dem Namen (z.B. TOIE1
Timer-Overflow-Interrupt-Enable-1) verbirgt.
Beim Laden und einigen Operationen (ldi, sbr, cbr, cpi, andi, ori...)
braucht man aber nicht die Bitnummer (0..7) sondern die Bitmaske
(0..255). Und diese erreicht man durch das Linksschieben von Einsen um
den Bitwert.
Diese Schieberei macht aber nicht der AVR, sondern der Assembler, es
kostet also keinerlei AVR-Ressourcen. Es ist also nur eine andere
Schreibweise für 'Setze in temp das Bit Nummer toie1 und lösche alle
anderen Bits in temp. Wenn man sich erstmal daran gewöhnt hat, dann ist
der ASM-Quelltext dadurch lesbarer. Man sieht dann sofort, dass damit
der Interrupt für Timer1-Überlauf eingeschaltet wird. Hätte man dafür
'ldi 0b_irgendwas' geschrieben, dann müsste man jedesmal im
Datenblatt nachschlagen, welches Bit mit welcher Bedeutung gemeint
war.

...

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.