C: 5 Bits in ein Register schreiben

Gast #180898
Lesenswert?
• ▲
▼
Hallo,

ich arbeite gerade an einem C-Programm für einen AVR und habe folgendes
Problem:

ich übergebe eine Adresse (unsigned char) an eine Funktion. Die Adresse
ist 5 Bits lang. Diese soll dann in ein Register geschrieben werden.
Allerdigs soll das Bit 0 der übergebenen Variable an Bit 3 des
Registers usw. geschrieben werden. Die ersten drei Bits des Registers
sollen unverändert bleiben.

Momentan habe ich das so gelöst:
Ich teste ob Bit 0 der Variable gesetzt ist. Wenn ja, dann setzte ich
Bit 3 des Resiters. Ansonsten lösche ich es.
Das ganze mache dann fünf mal.

Gibt es da eine elgantere, schnellere Lösung?
Gast #180901
Lesenswert?
• ▲
▼
Hi,

du müsstest vorher die fünf Bits im Register durch eine Und-Verknüpfung
"plattmachen".
Ich würde mal sowas vorschlagen:
register = (register & 7) | (wert << 3);

MfG
  Daniel Jelkmann

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