Logische Veknüpfung in AVR-Assembler

OP #1351391
Lesenswert?

Ich bin noch ganz neu hier in dem Forum und arbeite mich gerade in den 
AVR-Assembler ein. Dabei komme mit den logischen Verknüpfunge noch nicht 
so ganz klar. Ich möchte gern ein Bit auf Null setzen, aber es nicht 
"hart verdrahten". Die beiden oberen auskommentierten Zeilen löschen mir 
das ganze Byte! Nur die dritte Zeile macht was ich will. Wo liegt da 
mein Denkfehler?
1
.equ  PIN_BSY    = 7
2

3
;
4
;  andi  temp1, !(1<<PIN_BSY)
5
;  andi  temp1, 0xFF & !(1<<PIN_BSY)
6
  andi  temp1, 0x7F

Kann mir jemand helfen?
Gast #1351395
Lesenswert?

Es besteht ein ganz erheblicher Unterschied zwischen '!' und '~' 
(Tilde), in deinem Fall wäre die Tilde bzw. ein '-' (Minus) angebrachter 
;-)

Ersteres ('!') ist ein logisches 'Nicht', als Ergebnis kann da nur 1 
oder 0 rauskommen, demnach ver-und-est du immer mit 0.
Die Tilde hingegen invertiert bitweise, und genau das willst du hier.

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