Abfrage von Einzelbitz eines Bytes?

Gast #59870
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
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
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.