Forum: Mikrocontroller und Digitale Elektronik |= unterschied =


von Frischling (Gast)


Lesenswert?

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

von Sven H. (Gast)


Lesenswert?

= 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

von ... .. (docean) Benutzerseite


Lesenswert?

= 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

von Klaus (Gast)


Lesenswert?

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.

von Brummbär (Gast)


Lesenswert?

Hi!

Ich bin auch zu faul zum suchen. Kann mir jemand erklären was if 
beseitet?

von Karl-heinz S. (cletus)


Lesenswert?

Och Mensch, regt euch doch nicht künstlich auf.

Schon mal nach |= bei Google gesucht bevor hier rumgekotzt wird?

Also.

von Klaus (Gast)


Lesenswert?

Nein, natürlich nicht.


Aber wenn ich anfange mit C hätte ich nach C Tutorial oder so gesucht!

von YS-500 (Gast)


Lesenswert?

C ist der 3. Buchstabe im Alphabet, aber da sieht mann wieder daß manche 
Leute nicht bis 3 zählen können.

von Gregor B. (gregor54321)


Lesenswert?

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.

von Stefan C. (jaecko)


Lesenswert?

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."

von Severino R. (severino)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?


von Johnny (Gast)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.