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;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.