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
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.
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
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
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.