Was macht folgender Ausdruck:

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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.