mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART/TUTORIAL/EINSTEIGERFRAGE


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich bin momentan dabei, das Programmieren von AVRs mit Assembler zu 
lernen und nutze dazu das Tutorial.

Beim Kapitel UART bin ich auf ein Problem gestoßen und weiß nicht mehr 
weiter.

Zum Problem:

    ldi     temp, (1<<URSEL)|(3<<UCSZ0)
    out     UCSRC, temp

Was machen die in Klammern gesetzen Operatoren, laut vorhergegangenen 
Erklärungen im Tutorial bedeutet die Zeile (1<<URSEL):

   1*2^URSEL

Aber was bewirkt das nun ?

Danke schonmal für Eure Hilfe !

Grüße und nen schönes Wochenende

Stefan

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der "<<" bzw ">>" Operator schiebt die Bits in einem Wert jeweils nach 
Links bzw. nach Rechts. Das entspricht einer Multiplikation pro 
Schiebeoperation.

Für dich an dieser Stelle wichtiger ist allerdings die binäre 
Betrachtung. In dem Register schaltet nämlich jedes Bit etwas ein oder 
aus bzw. konfiguriert im Zusammenhang mit anderen Bits etwas.

> (1<<URSEL)|(3<<UCSZ0)

Das ist die übliche Weise, in der man ein Bit an einer bestimmten Stelle 
in einem Byte ( oder Wort) setzt. URSEL und UCSZ0 sind hier nur 
Konstanten, welche die Position des Bits mit einem "besser" merkbaren 
Namen versehen.


Welche Funktion die einzelnen Bits haben steht im Tutorial und im 
Datenblatt des Controllers.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

'<<' ist ein Shiftoperator, vergleichbar mit 'shl'. Im Prinzip ist deine 
Beschreibung richtig,aber in dem Zusammenhang nicht sehr hilfreich, da 
es auf die Bitposition und nicht auf den Wert ankommt. Du sooltest das 
besser binär betrachten.

Beispiel: 0b00000001 << 3 = 0b00001000

MfG Spess

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, das heißt, wenn ich die Formel a*2^b binär betrachte, bedeutet 
die nichts weiter, dass b angibt, um wieviele binärstellen a nach links 
bzw. rechts geschoben wird  !?

Hab ich das nun richtig verstanden ?

Grüße
Stefan

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Achso, das heißt, wenn ich die Formel a*2^b binär betrachte,

>Hab ich das nun richtig verstanden ?

(a<<b ) bzw (a>>b)


Ja.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, vielen Dank für alle Antworten.

Weiter so !

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Bitmanipulation

MFG
Falk

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.