Thomas wrote:
> ich lede gerade das GCC Tutorial. Nur verstehe ich nicht was das konkret
> macht:
>
> PORTB |= (1<<PB2);
Das ist äquivalent zu
1 | PORTB = PORTB | (1 << PB2);
|
und macht eine bitweise ODER-Verknüpfung von PORTB mit der Bitmaske 1 <<
PB2.
> es setzt Bit3 an Port B. Aber wieso 1<<PB2? und |= ist or oder? Wäre
> jemand so freundlich mir das mit Zahlen herzuleiten?
Nein, es setzt Bit 2 an Port B! Merke: Die Zählung fängt grundsätzlich
bei 0 an. Es ist das dritte Bit, das hat aber die Nummer 2...
1 << PB2 ist in Binärschreibweise eine 1, die um PB2 Stellen nach links
verschoben ist. PB2 hat den Wert 2, also ergibt sich die Bitmaske
0b00000100. Mit dieser Bitmaske wird das Portregister bitweise
ODER-verknüpft, was dazu führt, dass das Bit Nummer 2 gesetzt wird und
alle anderen Bits unverändert bleiben.
Das ganze Prozedere steht im AVR-GCC-Tutorial eigentlich ganz gut
beschrieben.