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
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