Hallo zusammen,
ich bin absoluter Anfänger beim Programmieren von Mikrocontrollern und
arbeite mich gerade mal durch das entsprechende Tutorial auf dieser
Seite. Verständnisprobleme habe ich mit folgendem Abschnitt.
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 |
|
4 | #define MEINBIT0 0
|
5 | #define MEINBIT2 2
|
6 |
|
7 | // Funktion aufrufen, wenn Bit 0 und/oder Bit 2 gesetzt ist. (Bit 0 und 2 also Wert 5)
|
8 | // (Bedenke: Bit 0 hat Wert 1, Bit 1 hat Wert 2 und Bit 2 hat Wert 4)
|
9 | if ( PINA & 0x05 ) {
|
10 | test1(); // Vergleich <> 0 (wahr), also mindestens eines der Bits gesetzt
|
11 | }
|
12 | // mit definierten Bitnummern:
|
13 | if ( PINA & ( ( 1 << MEINBIT0 ) | ( 1 << MEINBIT2 ) ) ) {
|
14 | test1();
|
Nach meinem Verständnis und allen C-Büchern, die ich habe, kann die
if-Abfrage die Ergebnisse 0 und 1, also "true" und "false" auswerten.
Jetzt übergebe ich ja aber eine Bitfolge, die im Zweifelsfall mehrere
Bits enthält und eigentlich Werte von 0, 1, 4 oder 5 annehmen kann. Ich
habe es ausprobiert und es funktioniert, meine Frage ist jetzt aber:
Warum geht das?
Schon mal im Voraus vielen Dank für die Hilfe.