1 Bitfiddling
Da in diesem Semester keine Arduinos und blinkenden Leds
eingesetzt werden können, werden diese einfach simuliert, indem statt der blinkenden
Leds Ausgaben auf der Konsole erfolgen. Die Bitoperationen werden auf die Variable
char leds durchgeführt. Der Zustand der Bits kann mit der folgenden Funktion auf
der Konsole ausgegeben werden:
Code: Alles auswählen
// Zeichen in Bitstring konvertieren
char *showbits(char c)
{
static char s[12]; // enthält die Bitfolge als String
int i, m;
// i - Laufindex im String: 0...7
// m - Bitmaske zur Pruefung des Bits: 7...0
for(i = 0, m = 7; i < 8; i++, m--)
s[i] = c & (1 << m) ? '1' : '0';
s[i] = '\0';
return s;
}
Gehen Sie bei dieser Aufgabe so vor, dass Sie jede Aufgabe als eigene Funktion
implementieren, die von main() aufgerufen wird.
a. Bit 4 ein- und ausschalten – Funktion auf1a()
Setzen Sie leds zunächst auf 0 und schalten Sie dann das Bit 4 mit den Operationen
Bit-Oder und Bit-Und (| und &) in einer Schleife 5 mal ein und dann wieder aus. Geben
Sie jeweils die Bitfolgen auf der Konsole aus.
b. Bit 3 und Bit 5 ein- und ausschalten – Funktion auf1b()
Setzen Sie leds auf 12910 bzw. 8116 und schalten Sie dann das Bit 3 und das Bit 5 mit
den Bitoperationen | und & in einer Schleife 5 mal ein und dann wieder aus ohne den
Zustand der anderen Bits zu beeinflussen. Geben Sie jeweils die Bitfolgen auf der
Konsole aus.
c. „Lauflicht“ über alle 8 Bits – Funktion auf1c()
Setzen Sie zunächst leds auf 0. Dann laufen Sie in einer Schleife durch leds und
schalten jeweils 1 Bit beginnend mit Bit 0, dann Bit 1 usw. ein und wieder aus. Nutzen Sie
dazu die Shift-Operation und zeigen Sie jeden Schritt auf der Konsole an.
d. Zufallszahlen als Bitmuster – Funktion auf1d()
Generieren Sie in einer Schleife 10 Zufallszahlen im Bereich von 0 bis 255 und stellen
Sie diese als Bitmuster auf der Konsole dar.
e. Zeichen als Bitmuster – Funktion auf1e()
Lesen Sie von der Konsole einen String ein und geben Sie den String Zeichen für
Zeichen als Bitmuster auf der Konsole aus.
Edit by Xin: Codetags hinzugefügt