Stefanie M.: Microcontroller: if-Schleife mit zwei Schaltern

Beitrag lesen

Hi,

meine Überlegung für 2 Eingänge war:

if (( PINC & (1<<PINC1) )&( PINC & (1<<PINC2) )){
//Aktion
}

Ich habe auch einige andere Möglichkeiten ausprobiert, aber keine hat funktioniert.

Was willst Du denn jetzt genau wissen? Bzw., weisst Du, was Dein Code da macht?

Ist PINC2 die Nummer des zweiten Eingangs, den Du abfragen willst? Und PINC ist ein unsigned, in dem jedes Bit einen der Eingänge repräsentiert?

Dann ist nur Dein & in der Mitte falsch, denn dort brauchst Du eine logische Verknüpfung (&&) und kein Bitweises UND. Ist das ein Schreibfehler oder ist die die Bedeutung des Operators unklar? Die Aktion erfolgt, wenn die erste UND die zweite Bedingung wahr sind. Innerhalb der Bedingungen filtert das & dagegen den Wert des entsprechenden Bits.

Gruss
Stefanie

PS: Es ist gängige Konvention, Variablennamen (->PINC) klein und nur Konstanten groß zu schreiben.