Parallel in Serial out

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

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

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

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

  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

  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

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

ist.

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

Rudi

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 hat es bereits bestens erklärt.
Grüße Uwe