Abfrage von Einzelbitz eines Bytes?

Gast #59870
Lesenswert?

Hallo

Ich finde irgendwie nicht den richtigen Zugriff auf einzelne Bits eines
Bytes. Ich möchte gern die Zustände eines Bytes auf verschiedene Ports
des Atmels ausgeben, z.B. Bit 0..2 --> PORTD 2..4 und Bit 3..7 -->
PORTB 0..4 usw., bzw. Bit0 --> PinX oder so in der Art. Helft mir da
bitte mal auf die Sprünge :-).

Danke Marco
Gast #59871
Lesenswert?

Jetzt hab ich's. Ich mache es wie folgt: Ich vergleiche das Byte Wert
mit 1,2,4,8 usw. und erhalte 1,2,4,8 wenn ich folgendes abfrage:
if ((byte & 1)==1)sbi(PORTX, 0); else cbi (PORTX, 0);

Was haltet ihr davon. Gibt es eine bessere Möglichkeit?
Gast #59872
Lesenswert?

Hallo,

die Lösung ist schon richtig. Das gewünschte Bitmuster mittels UND
ausmaskieren und entsprechend abfragen. Da du viele einzelne Bits auf
die Ports verstreust wird das direkte setzen der Pins auch das
einfachste sein.

Hat man dagegen beispielsweise ein halbes Byte, so kann es schon
sinnvoller sein, den Wert mit dem anderen Halbbyte des Ports zu
verknüpfen und dann eine byteweise Ausgabe zu machen.


Viel Grüße

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