Was bedeutet << in AVR-ASM?Ein Schift kann es ja nicht sein.

Gast #173702
Lesenswert?

ldi r16, (1<<TWINT)|(1<<TWSTA)

das ist ein Shift und zwar so

ich nehme mal als Beispiel:

ldi r16, (1<<PB2) | (1<<PB3)

PB2 ist eine Zahl, nämlich die 2, PB3 ist eine 3
die 1 vor dem << bleibt die 1 also 0b00000001

jetzt heißt 1<<PB2, dass die 1 um 2 Felder nach links verschoben wird,
also
0b00000001 dann 0b00000010, dann 0b00000100

so nun ist also Bit2 "markiert"

jetzt folgt das Bitweise Oderzeichen |

1<<PB3 ist nun 0b00001000 also die 1 um 3 Stellen verschoben

beide Werte mit "oder" verbinden 0b00001000 | 0b00000100
das Ergebnis ist 0b00001100, also beide Bits sind markiert

dieses TWINT z.B. ist auch nur eine Zahl um die dann die 1 nach links
verschoben wird....
Gast #173703
Lesenswert?

Ich dachte diese Shiftoperation funktioniert nur in C und in AVR ASM ist
das LSR oder LSL.
Führt der Atmega das jetzt aus, oder macht der Compiler das vorher und
gibt den richtigen Wert an den AVR - Weiter(Code - Optimierung)?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren