Forum: Compiler & IDEs [AVR-GCC] wie erkenn das I/O PIN nicht gesetzt


von Dshing S. (dshing)


Lesenswert?

Hi,
wie schreibt man denn das ein nicht gesetztes eingangs Bit?

Also wenn es gesetzt ist dann sieht das z.B. so aus.

if(PINB & (1<<PINB2))
{dann...;}

und wie sieht das Gegenteil aus? Ich hab es mit

if(PINB & (0<<PINB2))
{dann...;}

versucht, aber das ging nicht.

von Oliver J. (skriptkiddy)


Lesenswert?

Kauf dir ein C-Buch!

if(!(PINB & (1<<PINB2)))

von deutsche Sprache schwere Sprache (Gast)


Lesenswert?

Bitmanipulation + C-Grundlagen
1
if( ! ( PINB & (1<<PINB2) ) )

Ob man eine Klammerebene einsparen kann erzählt dir Karl-Heinz (oder 
jemand anders der die Operatorprioritäten kennt).

von Dshing S. (dshing)


Lesenswert?

Ok, ich danke euch beiden für die Hilfe.

von Benutzer (Gast)


Lesenswert?

deutsche Sprache schwere Sprache schrieb:
> Bitmanipulation + C-Grundlagen
> if( ! ( PINB & (1<<PINB2) ) )
>
> Ob man eine Klammerebene einsparen kann erzählt dir Karl-Heinz (oder
> jemand anders der die Operatorprioritäten kennt).

google: C operator precedence
 - ich mach das auch häufig, ist denke ich kein Disqualifikationsurteil 
:) So gestern erst zur Schreibweise (*var)[i] gebraucht :) (wobei das 
bei näherem Nachdenken logisch ist)

Der Not-Operator ! bindet zusammen mit allen anderen Unären Operatoren 
sehr stark. Jegliche Binäre Operatoren sind schwächer bindend 
angeordnet. Somit ist die Klammerung notwendig :) Nimmst du ein ~ statt 
des ! kannst du sie aber weglassen - Da ich das noch nie gesehen habe 
und selbst auch unschön finde (ganz zu schweigen der Tatsache was der 
Compiler draus macht) würde ich das nicht empfehlen.

von Stefan E. (sternst)


Lesenswert?

Benutzer schrieb:
> Nimmst du ein ~ statt
> des ! kannst du sie aber weglassen - Da ich das noch nie gesehen habe
> und selbst auch unschön finde (ganz zu schweigen der Tatsache was der
> Compiler draus macht) würde ich das nicht empfehlen.

Außerdem würde es nicht funktionieren. Mit einem ~ statt des ! wäre der 
Ausdruck immer wahr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.