Code: ldi r16, (1<<TWINT)|(1<<TWSTA)| (1<<TWEN) out TWCR, r16 Was bedeutet das eigentlich? Heist dass, dass TWINT, TWSTA usw. in r16 auf 1 gesetzt werden, wenn ja, was bedeuten die "<<" operatoren genau? Bedeutet | in diesem Fall "Und"?
Studio - Help - Tools User Guide - Assembler - Expressions
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....
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)?
Letzteres, Diese Operation führt nur der Compiler aus, und dient lediglich der Übersicht des Sourcecodes. Wird also nich vom µC ausgeführt
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.