-
Also was diese Zeichen anbelangt würde ich dir schon dringend raten ein C-Tutorial durchzuarbeiten. Diese und auch andere brauchst du dringend.
Wenn ich dir jetzt schreibe & ist ein Bitweise UND Operator und ~ ist ein Bit-Komplement-Operator weiss ich nicht ob du recht viel damit anfangen kannst.
| ist Bitweise ODER
< kleiner als
<< Links Shift
-
also, ich hab mal ein bisschen gegoogelt und herausgefunden was die zeichen bedeuten:
<< verschiebt Bit eine Stelle nach links.
| ist wie du schon gesagt hast oder
~dreht warheitswert aller bits um
& ist und
aber ich verstehe noch nicht wie das z.b. im folgenden beispiel zusammenhängt:
PORTC &= ~( (1<<PC0) | (1<<PC2) ); //Pins PC0 und PC2 "low"
-
Gut, nehmen wir das mal Stückchen für Stückchen auseinander.
Zuerst mal die Werte der Makros:
PC0 steht für 0
PC2 steht für 2
Ersetzt man die Makros im Beispiel, sieht das also so aus:
PORTC &= ~( (1<<0) | (1<<2) );
weiter gehts:
(1<<0) ergibt 00000001 binär (1 um null Stellen nach links schieben)
(1<<2) ergibt 00000100 binär (1 um zwei Stellen nach links schieben)
Jetzt steht da also
PORTC &= ~( 0b00000001 | 0b00000100 );
( 0b00000001 | 0b00000100 ) = 0b00000101 (bitweises oder)
Dann kommen wir auf
PORTC &= ~( 0b00000101);
Das Exclusiv-Oder (~) dreht alle Bits um:
PORTC &= 0b11111010;
a &= b ist eine andere Schreibweise für a = a & b also:
PORTC = PORTC & 0b11111010;
Das Ergebnis dieser Operation ist also, dass Die Bits 0 und 2 von PORTC auf 0 gesetzt werden, alle anderen behalten Ihren bisherigen Wert.
Jetzt klar?
Gruß,
askazo
-
Das ist die nicht vereinfachte Schreibweise
PORTC=((1<<PC0)& ~(1<<PC0))
Damit wird dieses Bit auf 0 gesetzt. Die Zahl nach dem PC gibt an wie viele Stellen nach links geschoben wird.
Den Sinn dieser Bitoperatoren wirst du auch nur verstehen wenn du das ganze binär anschreibst.
-
@Hubert:
PORTC=((1<<PC0)& ~(1<<PC0)) hat aber nicht mehr viel mit dem Ursprünglichen Beispiel gemeinsam.... ;)
-
Das Ergebnis ist allerdings das gleiche. Du hast es nur etwas schöner erklärt.
-
Vielen Dank für die ausführliche Erklärung!
Ich hab leider erst jetzt antworten können, weil ich die ganze Woche Skifahren war.
MfG
-
Moin!
Mein Beileid..... schreckliche Sache, so Ski fahren :-)
Sorry für OT ;-)
MfG Volker