Forum: Mikrocontroller und Digitale Elektronik BIT setzen bzw. löschen


von Björn (Gast)


Lesenswert?

Hi,

kann mir jemand erklären, was eigentlich genau in folgenden Ausdrücken 
gemacht wird?

PORTB |= (1 << PB1);

PORTB &| ~(1 << PB2);

Also nicht das der Pin gesetzt oder gelöscht wird, sondern was wirklich 
im Controller passiert. Linksschieben usw.



von Peter D. (peda)


Lesenswert?

Also C ist im Gegensatz zu anderen Programmiersprachen ziemlich 
intelligent. Es versucht immer, alle konstanten Ausdrücke auszurechnen, 
ehe es realen Code für das Target generiert.

Das Schieben konstanter Ausdrücke wird vor dem Compilieren ausgeführt 
und stattdessen der errechnete Wert verodert bzw. verandet.
1
PORTB &= ~(1 << PB2);

wird also compiliert zu:
1
PORTB &= 0xFB;


Peter

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.