mehrfache Pinabfrage



  • Hallo

    Ich frage mich gerade warum das nur so funktioniert, wenn ich auch alle 3 Pins zusammen auf high habe 😕

    if((PORTB & 0x01) | (PORTB & 0x02) | (PORTB & 0x04))
            {
    
              lcdWriteStringXY(0,0,"hat funktioniert");
    
            }
    

    Edit:

    Also, wenn das Ganze verknüpft ist, ergibt das auch 0x07, aber wie kann ich es dann bewerkstelligen, dass nur auf eines der 3 Pins reagiert wird?



  • Das wissen wir auch nicht, weil es aus deinem Code nicht ersichtlich ist.

    Deine if-Bedingung ist jedenfalls wahr, wenn mindestens eines der drei niederwertigsten Bits auf 1 steht.

    Edit: dein Edit macht es nicht klarer, was du eigentlich erwartest. Nenne doch mal ein paar Beispielwerte für PORTB und was du erwartest bzw. was du bekommst.



  • Hallo

    Ich habe 3 Taster an PORTB0 B1 und B2.
    Es soll mir lediglich auf eines der Taster reagieren.

    Wenn ich es aber teste, muss ich alle taster auf high setzen.
    Das verstehe ich nicht.. 🙄

    Hilft dir die Erklärung so?



  • buell schrieb:

    Hallo

    Ich habe 3 Taster an PORTB0 B1 und B2.
    Es soll mir lediglich auf eines der Taster reagieren.

    Wenn ich es aber teste, muss ich alle taster auf high setzen.
    Das verstehe ich nicht.. 🙄

    Hilft dir die Erklärung so?

    Schwachsinn! Schau dir mal die defines für den PortB an. Deine hexwerte sinf falsch!



  • Au wei, kennst du den Unterschied zwischen | und || nicht?! Das macht man normalerweise gaaanz am Anfang. Schau mal in deinem Skript, Buch oder was auch immer nach warum, wieso und wesahlb und versuche in der Zwischenzeit mal das:

    if((PINB & (1<<PINB0)) ||(PINB & (1<<PINB1)) || (PINB & (1<<PINB2)))
    

  • Mod

    Karl-Heinz-Schmidt schrieb:

    Au wei, kennst du den Unterschied zwischen | und || nicht?! Das macht man normalerweise gaaanz am Anfang.

    Wenn man so große Töne spuckt, sollte man sich lieber sicher sein, dass man keinen Quark erzählt, sonst ist es peinlich.



  • Meine Variante funktioniert jetzt irgendwie doch.

    Keine Ahnung warum... 😕

    naja trotzdem, weiter gehts 😋


Anmelden zum Antworten