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

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