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

OP #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.
OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.