Verständnis-Problem bei Recode von C zu ASM

OP #2027586
Lesenswert?

Hallo Forum-Gemeinde,

Ich Arbeite zur Zeit daran, verschieden C-Projekte für Atmel-Controller 
(vorzugsweise ATTiny2313 und ATMega8) in Assembler umzuschreiben.

Darin sehe ich eigentlich auch keine weiteren Probleme.

Doch nun ist mir eine Verknüpfung in einer If-Bedingung aufgefallen, die 
ich
nicht richtig deuten kann.

Es geht um folgende Elemente

& => Logische Und-Verknüpfung.
~ => Negation (wenn ich richtig informiert bin.)

in der folgenden Verknüpfung:
1
if (USIDR == 0 || (USIDR & ~1) == slaveAddress)

slaveAddress ist uint8_t

der Kommentar hinter der Verknüpfung ist:
1
// If adress is either 0 or own address

Wie kann ich diese Verknüpfung korrekt deuten, wenn "slaveAddress" z. B. 
den binären Wert "0b01101001" (Dez.: 105) enthält?

Gruß,

Marcel
Gast #2027592
Lesenswert?

Marcel Papst schrieb:
> Wie kann ich diese Verknüpfung korrekt deuten, wenn "slaveAddress" z. B.
> den binären Wert "0b01101001" (Dez.: 105) enthält?

Slaveadresse muss hier mit 0 enden, da beim Überprüfen das 0te Bit 
ausgeundet wird, ist bei i2c für Read/Write verantwortlich, hat also mit 
der Adresse an sich nix zu tun.

Marcel Papst schrieb:
> (USIDR & ~1) == slaveAddress

als Bsp: USIDR = 0b00110101
mit ~1 = 0b11111110 verundet wird das 0te Bit gelöscht. Daher darf die 
Vergleichsadresse nie das 0te Bit gesetzt haben, sonst wird die Abfrage 
nicht wahr.
:-)
OP #2027596
Lesenswert?

Karl heinz Buchegger schrieb:
>> & => Logische Und-Verknüpfung.
>
> falsch.
> Binäre Und-Verknüpfung


Sorry, das war mein Fehler - meinte eigentlich auch binäre Verknüpfung.

> Slaveadresse muss hier mit 0 enden, da beim Überprüfen das 0te Bit
> ausgeundet wird, ist bei i2c für Read/Write verantwortlich, hat also mit
> der Adresse an sich nix zu tun.
>


> als Bsp: USIDR = 0b00110101
> mit ~1 = 0b11111110 verundet wird das 0te Bit gelöscht. Daher darf die
> Vergleichsadresse nie das 0te Bit gesetzt haben, sonst wird die Abfrage
> nicht wahr.
> :-)



Alles Klar, vielen Dank für schnellen und ausführlichen Antworten.

Jetzt kann ich weiter machen ;)

Gruß,

Marcel

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