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....