Go Down

Topic: Parallel in Serial out (Read 653 times) previous topic - next topic

komika

Hallo,

ich hab mir mal folgendes Beispiel angeschaut:
http://playground.arduino.cc/Code/ShiftRegSN74HC165N

Wie kann ich das Byte pinValues in 8 Variablen verwandeln, welche dann jeweils eine 1 oder eine 0 haben?

mfg komika

uwefed

http://arduino.cc/en/Reference/BitRead
oder indem Du die einzelnen Bits mit bitweise and & maskierst.
Grüße Uwe

Berry07

Hallo Uwe,

das würde mich auch interessieren, habe ich aber nicht verstanden. Könntest Du bitte ein kurzes Beispiel mit bitweise und maskieren posten?

Gruß Andreas

rz259

Um festzustellen, ob ein bestimmtes Bit gesetzt ist (das erste Bit ist Bit 0), musst du einfach den Zahlenwerts des Bits an dieser Stelle mit der zu untersuchen Zahl mit AND verknüpfen.

Anbei einige Beispiele:

Der zu untersuchende Wert soll 147 sein (das ist in Hex-Darstellung 0x93, in Binär also 1001 0011) und ist in der Variaben "value" gespeichert

Code: [Select]

  int value = 147:

// Überprüfung ob Bit 7 gesetzt ist:
  if ((value & 0x80) == 0x80)
    {
      printf("Bit 7 ist gesetzt");
    }
   else
    {
      printf("Bit 7 ist nicht gesetzt");
    }


Überprüfung der anderen Bits:

Bit 6 -> Überprüfung mit 0x40
Bit 5 -> Überprüfung mit 0x20
Bit 4 -> Überprüfung mit 0x10
Bit 3 -> Überprüfung mit 0x08
Bit 2 -> Überprüfung mit 0x04
Bit 1 -> Überprüfung mit 0x02
Bit 0 -> Überprüfung mit 0x01

Du kannst auch Kombination von Bits überprüfen, wenn du z. B. feststellen willst, ob das Bit 0 und das Bit 4 GLEICHZEITIG gesetzt sind, dann kannst du das mit

Code: [Select]

  if ((value  & 0x11) == 0x11)
....


überprüfen.

Aber Vorsicht: Ist nur eins der beiden gesetzt, dann ist die Bedingung insgesamt nicht erfüllt, da das eigentlich nur die Kurzschreibweise von

Code: [Select]

  if (((value  & 0x10) == 0x10) && ((value & 0x01) == 0x01)
....


ist.


Ich hoffe, dass das nun einigermaßen verständlich war.

Rudi

uwefed


Hallo Uwe,

das würde mich auch interessieren, habe ich aber nicht verstanden. Könntest Du bitte ein kurzes Beispiel mit bitweise und maskieren posten?

Gruß Andreas


rz259 hat es bereits bestens erklärt.
Grüße Uwe

Go Up