Pages: [1]   Go Down
Author Topic: Parallel in Serial out  (Read 532 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 235
Posts: 20221
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 23
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 92
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
  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:
  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:
  if (((value  & 0x10) == 0x10) && ((value & 0x01) == 0x01)
....

ist.


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

Rudi
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 235
Posts: 20221
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: