Bitmanipulation

OP #1497404
Hallo,

ich habe eine Frage zur Bitmanipulation. Soweit habe ich das Setzen und 
Loeschen von Bits schon verstanden.
Mein Problem ist allerdings folgendes, dass ich gleichzeitig ein paar 
Bits mit "0" en und ein Bit mit "1" en beschreiben moechte. Nun weiss 
ich nicht, ob ich erst die Bits loeschen soll und danach dann das 
einzelne Bit sezten soll. Die anderen Bits sollen unveraendert bleiben.

Ich habe von meinem ATMEGA16 den Port D verwendet.
Im Port D moechte ich allerdings nur drei Bits aendern und die anderen 
unveraendert lassen.
PD7 soll 0 sein
PD6 soll 0 sein
PD5 soll 1 sein


Ich koennte zwar folgendes

PORTD &= 0b00111111;

machen, wollte aber die Variablen ( PD7 - PD5 ) irgenwie in meinen 
Ausdruck
mit aufnehmen.

Es waere nett, wenn Ihr ein paar Tipps fuer mich haettet.


Mit freundlichen Gruessen

Roschee
Roger Koller schrieb:

> Mein Problem ist allerdings folgendes, dass ich gleichzeitig ein paar
> Bits mit "0" en und ein Bit mit "1" en beschreiben moechte.

Gleichzeitig geht nicht.

> Nun weiss
> ich nicht, ob ich erst die Bits loeschen soll und danach dann das
> einzelne Bit sezten soll. Die anderen Bits sollen unveraendert bleiben.

Ist egal. Das Endergebnis ist dasselbe.


> PORTD &= 0b00111111;
>
> machen, wollte aber die Variablen ( PD7 - PD5 ) irgenwie in meinen
> Ausdruck
> mit aufnehmen.

  uint8_t  tmp = PORTD;

  tmp &= ~( (1<<PD7) | (1<<PD6) );
  tmp |=  (1<<PD5);

  PORTD = tmp;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.