Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zum Tutorial-Pins auslesen


von Christian V. (hrafn)


Lesenswert?

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.

von Alexander B. (leuchte)


Lesenswert?

Christian Voß schrieb:
> 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.

Fast: Die if-Abfrage prüft auf 0 und nicht 0 (also 1, 4 und 5).

von Narfie (Gast)


Lesenswert?

In C wird alles ungleich 0 zu true ausgewertet.

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
Noch kein Account? Hier anmelden.