Guten Abend alle zusammen, ich habe hier mal eine Frage. Vielleicht habe ich einfach nur ein Brett vor dem Kopf oder ich bin wirklich zu blöd. Also ich habe hier auf meinem Board 4 Taster und da ich platzsparend arbeiten will, möchte ich die 4 Zustände jedes Tasters mit 2 Bit in einem Byte speichern, also die ersten 2 Bit des Bytes für den ersten Taster, die zweiten 2 Bit für den zweiten Taster, und so weiter. Dazu nehmen wir bei Programmstart einmal 0b00000000 an. Meine Frage ist jetzt: Wie kann ich 2 bestimmte Bits dieses Bytes überschreiben? Jetzt denkt ihr sicher alle: Klar, mit einer Bitmaske. Ich will aber, dass sich die anderen Bits dabei nicht verändern. Wie mache ich das? Danke schonmal. Gruß
Gast
#2764578
>möchte ich die 4 Zustände jedes Tasters
Taser ist gedrückt oder nicht.
Welche anderen beiden Zustände haben deine Taster?
So wie ich das hiernach verstanden habe: http://www.mikrocontroller.net/articles/Entprellung Soll es 4 Zustände geben. Ich will eben, dass mein Programm nur weiter fortgeführt wird, wenn der Taster zum Beispiel gedrückt wurde und losgelassen wurde, dafür die 4 Zustände, so wie es auch in dem Artikel steht.
Gast
#2764584
> Klar, mit einer Bitmaske. > Ich will aber, dass sich die anderen Bits dabei nicht verändern. Wieso "aber"? DAS genau ist doch Sinn einer Bitmaske... Wenn die Bits 1 werden sollen: logisches ODER mit den Bits. Wenn die Bits 0 werden sollen: logisches AND mit dem Komplement der Bits.
> Wieso "aber"? DAS genau ist doch Sinn einer Bitmaske... > Wenn die Bits 1 werden sollen: logisches ODER mit den Bits. > Wenn die Bits 0 werden sollen: logisches AND mit dem Komplement der > Bits. Das ist genau der Teil, wo ich ein Brett vor dem Kopf habe. Ich denke irgendwie, dass die Bits bei einem logischen AND den Rest überschreiben und bei einem logischen ODER nicht das gewünschte Ergebnis bringen.
Gast
#2764587
Bitmanipulation kennst du?
Da steht, was ich gesucht habe, danke!
Gast
#2764603
vielleicht so? Tasten Status: 0babcdefgh header:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
main:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.