vielleicht eine blöde Frage, wo ist der Unterschied zwischen den beiden Zeilen? ADMUX = (1<<MUX2); und ADMUX |= (1<<MUX2); danke mfg Jörg
1. Fall Zerlegen wir die erste Zeile: MUX2 ist ein define für das dritte Bit im ADMUX Register. Demnach ist MUX2 gleich 2, also könnte man auch schreiben (1<<2). 1<<2 bewirkt, dass eine 1 um zwei stellen nach rechts rückt, also aus 00000001b wird 00000100b. In der ersten Zeile wird das komplette ADMUX-Register mit diesem Wert überschrieben. 2. Fall Im zweiten Fall mit ADMUX |= (1<<MUX2) oder ADMUX = ADMUX |(1<<MUX2) wird bitweise ver-ODER-t. Das bedeutet, dass die bereits gesetzen Bits im ADMUX Register nicht gelöscht werden, sondern nur das gewünschte Bit gesetzt wird. Ein Beispiel mit ADMUX = 11010000b. ODER 11010000b 00000100b -------- 11010000b 3. Fall Nun wollen wir vielleicht dieses gesetzte Bit wieder löschen. Das geschieht mit: ADMUX &= ~(1<<MUX2); - 1<<MUX2 ist wieder 00000100b - Das ~ negiert die alle Bitts, also entsteht 11111011b - Nun wird ge-UND-et Z.B. mit ADMUX = 11010100b UND 11010100b 11111011b --------- 11010000b 1. Fall liefert 00000100b 2. Fall liefert 11010100b 3. Fall liefert 11010000b
Oben ist mir beim ODER-n ein kliener Fehler unterlaufen: das sollte heißen: ODER 11010000b 00000100b -------- 11010100b Gruss Zoltan
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.