Wie programmiert man eine Arduino - Bitmaskierung?
Hi, ich schreibe in 2 Tagen eine Arbeit über Arduino - Programmierung. Problem: Wie programmiere ich eine Bitmaskierung, bzw wie kann ich programmieren, dass ich am Ende auf einem Seriellen Monitor angezeigt bekomme, welche Bits gesetzt sind? Unser Lehrer meint, dass die Bitmaskierung total einfach ist und hat uns folgenden Code aufgeschrieben:
int zahl; int maske; int ergebnis;
for(cnt=0; cnt<8; cnt++){ ergebnis=zahl&maske; zahl=zahl>>1; }
Den Spaß habe ich in UnoArduSim eingetippt und dabei nachgeguckt, welchen Wert die Variabel "ergebnis" hat. Natürlich funktioniert es nicht und es kommen völlig wirre Werte an.
Wo liegen Fehler und was macht die Bitmaskierung überhaupt?
1 Antwort
Also: eine Maske ist
1000000 =128 Dez
0100000 = 64 Dez
...
0000001 = 1 Dez
Du beginnst also mit 128 und schiebst jedesmal die Maske 1 nach rechts (Operator: >>).
In deinem Beispiel sehe ich nicht was was ist und was du raus bekommen willst. Ausserdem sind deine Variablen nicht initialisiert, da kann nichts vernünftiges passieren.
Wir sollen nichts auf Lampen bringen. Unser Lehrer möchte, dass wir das Ergebnis in einem Seriellen Monitor festhalten
Ok verstehe, im Grunde soll nur dastehen: Bit an Bit aus Bit an ...
Das koennte etwa so aussehen:
// open the serial port at 9600 bps:
Serial.begin(9600);
int zahl= 0x33; /* Zahl die ausgegeben wird /
int maske = 1; / Bit 0 (das Bit ganz rechts) /
int ergebnis; / temporaer benoetigt /
for(int cnt=0; cnt<8; cnt++)
{
ergebnis=zahl&maske;
Serial.print("Bit ");
Serial.print(cnt);
Serial.print(" ist ");
Serial.println(ergebnis);
delay(100);
zahl=zahl>>1; / schiebe rechts */
}
Hab sie im Nachhinein initialisiert, klappt immer noch nicht