Zunächst: Ich habe soeben mal wieder einen Beitrag verfaßt und auf
submit geklickt. Leider war das Subject zu lang (>60Zeichen). Das gibt
eine Warnmeldung mit der Aufforderung das bitte zu beheben. Aufmerksam
hab ich darüber nachgedacht wie ich wieder zurückkomme ohne meinen Text
zu löschen. (Wär' ja nicht der erste Beitrag, den ich mir wegschieße).
Ich entschied mich auf "Zurück-zum-Betrag" zu klicken. Alles weg. :-(
@Andreas: Gibts da keine bessere Möglichkeit solche "Bedienfehler" zu
verhindern? (Der Browser-back-button hätte meinen Beitrag nicht zerstört
- hoffentlich kann ich mir das jetzt merken).
Zum Thema:
Ich dachte zunächst daran, dass deine Variable "byte" z.B. den Wert
0x11 annehmen könnte. Wenn du dann mittels "cbi (byte,4)" eine
Bitänderung erzwingen willst, dann würde das nicht auf die Variable
"byte" passieren, sondern das Register mit der Adresse 0x11 betreffen
(in diesem Falle das DDRB-Register). Dadurch würde Pin4 auf Eingang
geschaltet. Das kann zu seltsamen und unerwarteten Fehlern/Effekten
führen, deshalb:
> böse Sache - "nie" zu finden.
ABER: So wie ich mir das jetzt gedacht habe ist das nicht! Der
Compiler muß ja zur Übersetzungszeit schon aus der Anweisung "cbi" und
deiner Variablen "byte" einen Assemblerbefehl generieren. Die Adresse
bzw. das IO-Register auf das das Kommando angewendet wird, fließt mit in
den Opcode ein. Dazu muß sich der Compiler für einen Wert für "byte"
entscheiden. Die Wahl fällt auf 0 - wie er auch später als
Compilerwarnmeldung ausgibt. Es passiert also nichts. Du kannst dir dein
cbi-Kommando also sparen - Bit 6 würde so jedenfalls nicht gelöscht.
Schmittchen "der seine Gedankengänge, trotz Verwirrungsgefahr, stehen
läßt"