Forum: Mikrocontroller und Digitale Elektronik Einzelnen Port abfragen


von Studiologe (Gast)


Lesenswert?

Hi,
ich würde gerne wissen, wie ich einen einzelnen Port abfrage...
und zwar geht es leider nicht wie schon oft gehört mit
if(PIND.0 == 1)
tut leider nicht,
das brauche ich nähmlich, weil an PORTD0 und PORTD1 je ein taster sitzt
und ich abfragen will, ob beide gedrückt sind, daher kann ich folgendes
nicht machen, damit schliesst sich ja der andere port immer aus....
if((PORTD == 0b11111110) && (PORTD == 0b11111101))
damit geht es ja logischerweise nicht ...sieht man ja direkt !!!!
mhh also wie kann man nen einzelnen Port abfragen ?? :]
wär schön wenns mit
if((PORTD.0 == 0) && (PORTD.1 == 0))

Danke für eure Hilfe,
Stud

von Rahul (Gast)


Lesenswert?

if (!(PIND & ~0xFC)) ...

von Rahul (Gast)


Lesenswert?

oder binär:
if (!(PIND & ~0b11111100))...
oder auch if (!(PIND & 0b00000011))
Sollte also einer der beiden Pins nicht betätigt sein (also log. 1),
ist PIND & 0x03 != 0, was dafür sorgt, dass !(PIND & 0x03) == 0 ist,
womit im else zwei ein nicht betätigter Taster bearbeitet werden kann-.

von Studiologe (Gast)


Lesenswert?

Hi,
danke für die schnelle Antwort,
aber was passiert, wenn noch ein schalter an PORTD4 sitz,
dann tritt folgender Fall ja auf oder auch if (!(PIND & 0b00001011))
aber ich kann ja nicht immer alle schaltstellungen berücksichtigen,
oder stört dieser port dann nicht ??

von crazy horse (Gast)


Lesenswert?

falls du alle Varianten brauchst:
temp=PIND & 0x03;
switch (temp){
case 0: ....;break;   //beide Eingänge 0
.
.
case 3: ....;break;   //beide Eingänge 1
}

von Hannes L. (hannes)


Lesenswert?

Dann nimmt man die Entprellung nach Peter Dannegger...
(siehe Codesammlung Suchbegriff im Betreff: "bulletproof")

...

von Rahul (Gast)


Lesenswert?

Spiel die Sache doch mal mit ner Logik-Tabelle durch...
Crazy Horse hat doch schon ne wunderschöne Lösung geliefert...

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.