Aller Anfang ist schwer. Und Bitmanipulationen in C sind etwas
gewöhnungsbedürftig. Normalerweise würde man das so machen:
1 | // in einer .h Datei
|
2 | #define BIT_TO_TEST 1
|
3 |
|
4 | // in der .c Datei
|
5 | if ( PINC & (1<<BIT_TO_TEST) ){
|
6 | // do something if bit is set
|
7 |
|
8 | }
|
Das & ist eine Bitweise UND-Verknüpfung. Wenn PINC zum Beispiel
0b10101010 wäre, dann ist (1<<BIT_TO_TEST) gleich 0b00000010 und als
Ergebnis der UND-Verknüpfung kommt dann
1 | 0b10101010
|
2 | 0b00000010
|
3 | ----------
|
4 | 0b00000010
|
heraus. Dies ist ungleich 0 also TRUE und der Anweisungsteil der If
Anweisung wird ausgeführt.
Wäre PINC = 0b10101000 dann würde folgendes herauskommen:
1 | 0b10101000
|
2 | 0b00000010
|
3 | ----------
|
4 | 0b00000000
|
Dies ist gleich 0 also FALSE und der Anweisungsteil der If Anweisung
wird nicht ausgeführt.
Es wird also wie gewollt nur das Bit 1 getestet.