Was macht folgender Ausdruck:

OP #530339
Lesenswert?
• ▲
▼
if( PIND & 1<< PD6 ){ ...

1.) Zustände von PortD werden eingelesen (z. B. 0b0100 0000)
2.) UND-Verknüpfung von 1.) mit 0b0000 0001 = 0b0000 0000
3.) Das Ergebnis aus 2.) wird nach logisch links geschoben um den Wert 
von PD6

Ist das Ergebnis nicht immer 0, sofern nicht PIND0 = 1 ist??? Helft mir 
mal bitte.

Markus
Gast #530344
Lesenswert?
• ▲
▼
nein, der schiebe-operator "<<" hat eine höhere priorität als das 
bitweise und "&" !!!
somit:
1.) Zustände von PortD werden eingelesen (z. B. 0b0100 0000)
2.) die "1" wird um "PD6" nach links geschoben 0b0000 0001 = 0b0100 0000
3.) Die resultate werden bitweise verUNDet..

if ist "true" wenn Bit nummer "PD6" im "PIND" high-level aufweist, 
ansonsten "false"
OP #530347
Lesenswert?
• ▲
▼
Prüfen ob PD6 gesetzt ist, klar. Hier ist der Ausdruck zum prüfen ja in 
extra klammern.
Bei meinem Beispiel waren die Klammern halt expliziet nicht gesetzt, 
oder hat hier das 1<<PD6 Vorrang vor dem PIND & Ausdruck?

Wahrscheinlich denke ich nur wieder viel zu kompliziert...

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.