Zwei Portpins (einer high, der andere low) über if abfragen

#3035400
Lesenswert?

Hi
Ich bekomme es nicht hin....
Wie kann ich in einer If Bedingung ein Pin mit high und den anderen mit 
low vom selben Port abfragen z.B Wenn Taster 1 und nicht Taster 2 dann 
True.

Algemein habe ich es noch nicht verstanden wie man zwei Pins in einer if 
abfrägt also auch wenn zwei verOdert oder verUndet werden.

Das verstehe ich noch:
if (PIND &(1<<PIND5))      wenn PIND5 high
if (!(PIND &(1<<PIND5)))   wenn PIND5 low

Gruß und Danke

Thomas
#3035573
Lesenswert?

Mark schrieb:

> if( ( PIN1 == 1) && ( PIN2 == 0 ) ){

Es ist zwar nur Pseudocode, aber an den TO gerichtet:

Das soll nicht bedeutet, dass der explizite Vergleich mit 0 bzw. 
(schlimmer) 1 erstrebenswert wäre. Diese expliziten Vergleiche sind es 
nicht. Ganz im Gegenteil können die gefährlich sein - man schiesst sich 
da ganz schnell ins Knie.

> Das verstehe ich noch:
> if (PIND &(1<<PIND5))      wenn PIND5 high
> if (!(PIND &(1<<PIND5)))   wenn PIND5 low

wo liegt dann jetzt das Problem?

Wieder als Pseudocode ausgedrückt steht doch da

if ( Pin_5_ist_high )
if ( Pin_5_ist_low )

wenn du dir jetzt noch überlegst, was denn der 'Textbaustein' für 
'Pin_5_ist_high' bzw. 'Pin_5_ist_low' ist, dann kann es doch nun 
wirklich kein Problem sein, mehrere dieser Textbausteine mittels 
logischem Und bzw. logischem Oder je nach Anforderung zu kombinieren.

  if( Pin_5_ist_high  UND  Pin_7_ist_high )
     ....

in den then Pfad kommt man ofensichtlich daher nur dann, wenn beide Pins 
high sind. Anstatt der umgangssprachlichen Bausteine setzt du wieder die 
C-Entsprechung dafür ein, nimmst noch den richtigen C-Operator für UND, 
und du hast deine Abfrage. Das ist so einfach wie das 'Lösen' dieser 
8-Teile Puzzles für 3-jährige. Sobald man begriffen hat, das man für das 
jeweilige Loch nur ein Puzzleteil mit genau dieser Form suchen muss, ist 
die Sache gegessen.
#3036309
Lesenswert?

Peter Dannegger schrieb:
> Thomas Webster schrieb:
>> wie ist die Syntax ??
>
> Wofür?
> Willst Du nur 2 Pins testen oder alle 8 Pins des Ports?
>
> Dadurch, daß Du eine 6-stellige Binärzahl hinschreibst, verschwinden
> nicht magisch irgendwelche Pins.
> Du mußt unerwünschte Bits maskieren (AND) und dann auf den gewünschten
> Wert vergleichen.

Magisch wäre toll...
In dem Fall wollte ich den gesamten Port testen!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren