Svenja S. schrieb:
> Ich möchte mittels LEDs die besetzten Bits meines Programms darstellen
> lassen.
Svenja S. schrieb:
> Ich habe so das Gefühl, dass die Lösung super simpel ist, übersehe sie
> aber ^^'
Also ich hab mir das mal durch den Kopf gehen lassen.
Wenn deine LED an den Ports nebeneinander liegen ist es simpel,
hast du die aber über die Ports verstreut, sieht die Sache anders aus.
Diesen Fall habe ich jetzt mal angenommen, da mir deine Masken danach
aussahen.
Einfach so mit einer Maske und einer Zuweisung wird dir das dann nicht
gelingen.
Das Problem ist, dass du unter Umständen nebeneinanderliegende Bits von
deiner value Variable "auseinanderziehen musst". bzgl. der Zuordnung der
LED an den Ports.
Lösung 1: (siehe Code, nur eine Idee und auch nicht optimal)
[Jetzt erst gesehen...diese 010101 in Zeile 53 gehören dort nicht hin]
Ich hab ein dynamische Funktion gebastelt die die Bits durchläuft und
dann setzt, das funktioniert, ist aber meiner Meinung nach voll
Overplay.
Lösung 2:
Bit-Shifting, da bräuchtest du je LED eine Zuweisung:
Bsp mit 4 LED an PORTC:[x--x-xx-] (x = Ausgang)
1 | PORTC |= (value & 1) << 1;
|
2 | PORTC |= (value & 2) << 2;
|
3 | PORTC |= (value & 4) << 4;
|
4 | PORTC |= (value & 8) << 7;
|
Lösung 3: (da habe ich aber noch keine zufriedenstellende Lösung)
Man "errechnet" sich eine Maske die dann geschickt durch logische
Verknüpfung/Verechnung die jeweiligen Bits ergibt.