Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage AVR Tutorial: << und |


von Chapmy (Gast)


Lesenswert?

Hallo,
evtl. habe ich auch nur irgendwo etwas überlesen, aber ich grübel nun 
schon seit einiger Zeit über einigen Zeilen des AVR-Assembler-Tutorials 
und konnte noch keine Antwort finden.

Es geht speziell um solche Befehle wie:

sbr temp1, 1<<4

oder

ldi temp, (1<<3) | (1<<1) | (1<<2) | (1<<0)

Was bedeuten in diesem Zusammenhang die "<<" und die "|" ? Was passiert 
konkret in den Aufrufen?

Ich habe das Gefühl, dass solche Ausdrücke relativ unvermittelt im 
Tutorial auftauchen. Kann aber auch sein, dass ich nur etwas überlesen 
habe. Sollte dem aber nicht so sein, dann wäre es vielleicht auch ganz 
hilfreich, wenn solche Operationen irgendwo mal näher erläutert würden.

Falls mir da jemand helfen könnte oder einen passenden Link geben könnte 
(nach "<<" sucht es sich sehr schlecht im Internet), wäre das sehr nett.


Vielen Dank und Gruß

von Sebastian (Gast)


Lesenswert?

Das sind Operatoren, die ursprünglich aus C stammen (aber vom ASM für 
konstante Ausdrücke benutzt werden können

">>" = Rechts schieben
"<<" = Links schieben
"|"  = binäres Oder
"&"  = binäres Und
usw.

von Sebastian (Gast)


Lesenswert?

"a << b" ist das gleiche wie "a * 2^b"

d.h.

ldi temp, (1<<3) | (1<<1) | (1<<2) | (1<<0)

wird zu:

ldi temp, 8 | 2 | 4 | 1

wird zu:

ldi temp, 15

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Eigentlich sollte an der Stelle im Tutorial ein Verweis auf den Artikel 
Bitmanipulation kommen.

Weisst du noch wo du auf die Hürde gestossen bist, damit man das 
Tutorial dort verbessern kann?

von Chapmy (Gast)


Lesenswert?

Danke! Eure Antworten in Kombination haben die Erleuchtung gebracht. :)

Ich habe gerade nochmal das Tutorial durchgeblättert. Wenn ich es 
richtig sehe, taucht soetwas zum ersten Mal im LCD Teil auf - ohne 
Verweis auf den erwähnten Artikel.
Wirklich dran hängen geblieben bin ich allerdings erst im Kapitel über 
die Schieberegister. Einen Link zu dem Artikel konnte ich jetzt so auf 
die Schnelle auf den ersten 4 Seiten des Tutorials nicht finden.
Vielleicht wäre es ganz gut, wenn der Link im LCD- und vielleicht auch 
nochmal im Schieberegister-Artikel auftauchen würde - schaden kann es ja 
nicht...

von Chapmy (Gast)


Lesenswert?

Noch eine Anmerkung:
Nachdem ich den Artikel zu den Bitmanipulationen jetzt mal überflogen 
habe, muss ich sagen, dass eure Antworten hier kürzer, verständlicher 
und besser waren.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ich habe den Teil von Sebastian im Artikel Bitmanipulation ergänzt und 
Anmerungen im AVR Tutorial: LCD und AVR Tutorial: Schieberegister 
gesetzt. Ich hoffe die Artikel sind jetzt leichter verständlich. Danke 
für dein Feedback - das hilft die Artikel zu verbessern.

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.