|= unterschied =

Gast #1081961
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
Gast
= 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
Persönliche Seite
= 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
Gast
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.
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.
Persönliche Seite
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.