Forum: Compiler & IDEs Verstehe Code Zeile nicht


von Karlis L. (gruenschnabel)


Lesenswert?

PORTB ^= 1<<PB2;

Kann mir einer sagen was der code macht, mir das Zeichen ^ ein Rätsel!!!
Suche in Netz hat mich auch nicht weiter gebracht.

Danke!

von Oliver (Gast)


Lesenswert?

Karlis Liepa schrieb:
> Suche in Netz hat mich auch nicht weiter gebracht.

Mit den Zauberwörtern "C" und "Operatoren" hast du es dann wohl nicht 
versucht. Vielleicht hilft dir das hier weiter:

http://home.htw-berlin.de/~junghans/cref/CONCEPT/expressions.html

Empfehlenswert ist auch ein gutes Buch über C.

Oliver

von Rupert (Gast)


Lesenswert?

"^" ist der XOR-Operator.

Daher steht dort ausgeschrieben:

PORTB = PORTB ^ (1<<PB2);

Oder anders: PB2 in PORTB wird auf 1 gesetzt.

von Günter (Gast)


Lesenswert?

Das ^ macht ein XOR also "exclusiv oder".
Du kannst es auch so schreiben.

PORTB = PORTB ^ 1<<PB2;

von Günter (Gast)


Lesenswert?

Nein, PB2 wird nicht auf 1 gesetzt sondern invertiert. Jedes mal wenn 
diese Zeile tätig wird, wird PB2 invertiert.

von Rupert (Gast)


Lesenswert?

Ja, sorry, hast recht, vertu mich regelmäßig mit OR und XOR -.-

von --- (Gast)


Lesenswert?

nur wenn er vorher 0 war...
XOR (^) toggelt den Pin und ist der Operator der Wahl für ein einfaches 
Blinklicht...

wohingegen ein OR (|) BP2 immer setzen würde.

von Günter (Gast)


Lesenswert?

Du hast das "|" gemeint um ein Bit zu setzen. Das verstehen viele nicht 
wiso man das so macht gg.

Alles klar "gruenschnabel"?

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.