Forum: Mikrocontroller und Digitale Elektronik UART/TUTORIAL/EINSTEIGERFRAGE


von Stefan (Gast)


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

von Hmm... (Gast)


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.

von spess53 (Gast)


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

von Stefan (Gast)


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

von Matthias L. (Gast)


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.

von Stefan (Gast)


Lesenswert?

Okay, vielen Dank für alle Antworten.

Weiter so !

von Falk B. (falk)


Lesenswert?

Siehe Bitmanipulation

MFG
Falk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.