Forum: Mikrocontroller und Digitale Elektronik Pin-Abfrage Mikrocontroller


von Gero (Gast)


Lesenswert?

Hallo zusammen!


Ich möchte mehrere Zustände an meinen Pins gleichzeitig abfragen. Ich 
habe vier Taster an P1.0-3. Diese sind active low, haben also je einen 
Pull-Up.

Wenn ich jetzt gleichzeitig alle zusammen abfragen möchte, wie schreibe 
ich das am geschicktesten auf.

Ich könnte ja:   if ((!(P1IN & 0x01)) && (!(P1IN & 0x02)) && ...)

Aber da gibt es doch bestimmt eine einfacherer Variante, oder? Ich komm 
nur nicht drauf, hab schon rumprobiert mit Bitmaskierungen, aber 
irgendwie bekomme ich das nicht auf die Reihe. Es geht um einen MSP.


Vielen Dank!

von Gero (Gast)


Lesenswert?

Ich habe es so probiert:   if (P1IN & (SW1 + SW2 + SW3 + SW4))

SW1 usw. sind vorher als 0x01 und so definiert.

Nur wenn ich es so schreibe ist der Ausdruck ja auch wahr, wenn nur 
eines der ganzen wahr ist.

von Stefan P. (form)


Lesenswert?

if ((P1IN & 0b00001111) == 0b00001010))...

(wenn Taster 1 und 3 gedrückt sind und die anderen nicht)

von Gero (Gast)


Lesenswert?

Ah, alles klar, das probiere ich gleich mal - vielen Dank!

von Stefan P. (form)


Lesenswert?

Hinten hat sich eine böse zusätzliche Klammer eingeschlichen...

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.