Hallo zusammen, ich bin C-Anfänger und möchte gerne geziehlt ein DDR-Register mit einer Variablen setzen oder löschen. Dabei dürfen bestimmte Bits im DDR-Register nicht verändert werden. zB. DDRA= 0x11100000b Variable A = 0x00001100b Ergebis: DDRA = 0x11101100b wenn Variable A nun 0x00000001 wird Ergebis: DDRA = 0x11100001b Kann mir da jemend helfen? Vielen Dank im Voraus Gruß John
Hallo, sowas macht man mit einem (binären) OR-Operator. Ein OR setzt alle Bits die in Zahl1 ODER Zahl2 gesetzt sind. Das sieht dann so aus: &b11100000 OR &b00000110 => &b11100110 Gruß Jonathan
Und löschen geht mit AND. &b11100011 AND &b11111110 => &b11100010 Gruß Jonathan
Hallo, erst mal Danke für die schnelle Antworten. Ich glaube ich habe mich nicht richtig ausgedrückt. Das ich Bits mit dem | und & Operator setzen oder löschen kann ist mir klar. Nun möchte ich aber mit einer Variablen das DDR-Register in einer Funktion manipuliren. Da weis ich ja vorher nicht ob das DDR-Register mit der Variablen UND oder OR verknüpft werden muss. Ich hoffe, dass es jetzt besser rüber gekommen ist. Gruß John
unsigned char a = $0C; DDRA = 0; DDRA |= a; // setzt nur die bits 0b00001100 // ab hier ist DDRA = 0b00001100 a = 1; DDRA |= a; // ab hier ist DDRA = 0b00001101! // die vorherige änderung wird berücksichtigt mit dem |= "|=" beduetet soviel wie "DDRA = DDRA (logisch oder) a" gruß mike
John schrieb: > Ich glaube ich habe mich nicht richtig ausgedrückt. doch, aber es sollte doch klar sein: - aktuellen Status auslesen - alle Bits, die verändert werden dürfen, auf Null setzen - mit deiner Variablen verodern
Hallo, ich: ich verwende einen ATMEGA 8. Mike: das ist mir bekannt. Justus: klar war dieses für mich nicht, aber jetzt weiss ich wie ich es programmieren kann. Vielen Dank. Gruß John
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.