Register Manipulationen ODER Operator

OP #2663101
Lesenswert?

Hallo,

kurze frage - arbeite mich gerade in GCC ein - war davor Bascom Nutzer.

Ich habe mich jetzt schon durch einige Beispiele durchgearbeitet und für 
mich wird nicht eindeutig klar was genau der Unterschied zwischen:

TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00);

und

TCCR0B |= (1<<CS02) | (1<<CS01) | (1<<CS00);

ist. Meiner Meinung nach keiner - Darf ich beides gleich behandeln oder 
tapp ich in eine Falle.

Also aus dem was ich bisher aus den Tutorials gelesen hab wird es mir 
nicht klar - mal wird es so gemacht und ein anderes mal so.

Wäre nett wenn ihr mir bei dieser Anfänger Frage weiterhelfen könntet.

Schönes Wochenende - Sebastian
OP #2663160
Lesenswert?

Ok... ich glaub fast mein Verständniss Problem lag wo anders.... aber 
egal:

Also lieg ich dann Richtig in der Annahme, dass

TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00);

und

TCCR0B = (1<<CS02);
TCCR0B |= (1<<CS01);
TCCR0B |= (1<<CS00);

das gleiche Ergebnis zur Folge hätte ( bezüglich auf den Inhalt im 
TCCR0B )?

Also wenn ich in Registern ein Bit setzen will ohne das die Bits die ich 
zuvor eventuell gesetzt habe verändern will nehme ich :

|=

Sonst - z.b. beim ersten beschreiben - bei der ich alle Einstellungen 
vornehme - kann ich einfach

=

schreiben.

Aber da ja die Register am anfang sowieso auf 0x00 stehen würde ein |= 
bei der Initalisierung auch nicht stören.

Also angenommen TCCR0B = 0x00 im Vorfeld
würde es egal sein ob ich

TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00);
oder
TCCR0B |= (1<<CS02) | (1<<CS01) | (1<<CS00);
schreibe

Wenn TCCR0B ungleich 0x00 würde ich aber Probleme bekommen

Hab ich es richtig zusammengefasst/verstanden ?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren