Beschäftige mich ganz neu mit der uC Thematik und habe eine Frage bezüglich dem Unterschied von: |= = z.B. PORTH.DIRCLR = PIN6_bm; PORTH.DIRCLR |= PIN6_bm; Werden beim |= alle anderen Bits (die nicht im Anschluss kommen) so gelassen und bei = alle auf 1 gesetzt und der Rest auf 0. Kann mir jemand das nochmal erklären?- Am besten mit Register auf der Bit- Ebene
= bedeutet "gleich" |= bedeutet "oder gleich" a = 0001 wird immer zu 0001 a = 1100 wird immer zu 1100 b |= 0001 sorgt dafür das das letzte Bit gesetzt wird. b |= 1111 sorgt dafür das alle Bits gesetzt werden. c &= ~0001 sorgt dafür, dass das letzte Bit gelöscht wird. c &= ~1111 würde c auf 0 setzen
= ist eine einfach Zuweisung im Sinne a = 3; b = 4; a hat jetzt den Wert 3 und b den Wert 4 |= ist eine Kurzschreibweise von a = a | 4; Ich kann ich auch schreiben a |= 4; (Programmier sind schreibfaul) das | Zeichen an sich führt ein logisches bitweises ODER auf die beiden Operanden durch. a = 0b0011; b = 0b1100; a = a | b; // a ist jetzt 0b1111
Tip: Man sollte sich mit den C Grundlagen beschäftigen, wenn man was in c Programieren will. Hör auf fremden Code zu lesen, sondern lies erstmal ein Tutorial und versuch selber kleine Programme zu schreiben.
Och Mensch, regt euch doch nicht künstlich auf. Schon mal nach |= bei Google gesucht bevor hier rumgekotzt wird? Also.
Nein, natürlich nicht. Aber wenn ich anfange mit C hätte ich nach C Tutorial oder so gesucht!
C ist der 3. Buchstabe im Alphabet, aber da sieht mann wieder daß manche Leute nicht bis 3 zählen können.
Das lässt sich im Tutorial unter http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ausg.C3.A4nge nachlesen. Mir hat dies in den Anfängen auch gut geholfen! Wer nix sinnvolles zu einem Thema beisteuern kann, sollte auch nix beisteuern! Wer nicht schreiben will wie "if" funktioniert, sollte einfach gar nichts schreiben. Laberthreads stehen nämlich da: http://www.mikrocontroller.net/forum/offtopic.
Karl-heinz Strunk wrote: > Och Mensch, regt euch doch nicht künstlich auf. > > Schon mal nach |= bei Google gesucht bevor hier rumgekotzt wird? Für die, die's noch nicht versucht haben: Bei mir kommt: "Es wurden keine mit Ihrer Suchanfrage - |= - übereinstimmenden Dokumente gefunden."
Stefan C. wrote: > Für die, die's noch nicht versucht haben: Bei mir kommt: > "Es wurden keine mit Ihrer Suchanfrage - |= - übereinstimmenden > Dokumente gefunden." Google kann meines Wissens (noch) nicht nach Sonderzeichen suchen, also nur nach alphanummerischen Zeichen.
Nebenbei zu Google und Sourcecode; es gibt da ein kleines Tool (natürlich Beta wie fast alles von Google) um nach Sourcecode zu suchen: http://www.google.com/codesearch
Frischling wrote: > Beschäftige mich ganz neu mit der uC Thematik und habe eine Frage > bezüglich dem Unterschied von: > |= > = > z.B. > > PORTH.DIRCLR = PIN6_bm; > PORTH.DIRCLR |= PIN6_bm; Es gibt keinen Unterschied in diesem Falle. Ich denke mal es handelt sich um den neuen ATxmega. Das Register wird immer als Null gelesen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.