Hallo,
ich würde die gerne variable Bitmaske haben, also:
PortD &= 0bxxxx0000
Die 'x's (oder wie ist der Plural?) sollen dabei Variabel sein, also entweder 1 oder 0.
Wie könnte man das realisieren?
Lg
Hallo,
ich würde die gerne variable Bitmaske haben, also:
PortD &= 0bxxxx0000
Die 'x's (oder wie ist der Plural?) sollen dabei Variabel sein, also entweder 1 oder 0.
Wie könnte man das realisieren?
Lg
Hallo,
ganz einfach:
PORTD &= maske;
Und maske muss dann halt vorher irgendwo definiert sein.
Sollen alle x den gleichen Wert haben? Oder sollen diese unabhängig voneinander sein?
Grüße, Bernhard
"Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson
Wie definiere ich denn "Maske"?
Mach ich das ähnlich wie mit einer Variable (int Zahl = 20)?
Die 'x'e soll am besten unabhängig von einander sein, also z.B. 0110.
Schon mal danke für die rasche Antwort![]()
Z.B.
(ungetestet)Code:uint8_t maske; maske=0; if(a){maske|=(1<<7);} if(b){maske|=(1<<6);} if(c){maske|=(1<<5);} if(d){maske|=(1<<4);} PORTD&=maske;
Je nach dem wie abcd gesetzt sind, wird die Maske angepasst.
Die Maske ist in dem Beispiel abcd0000 (binär), wobei a,b,c,d jeweils 0 oder 1 sein können.
Sicherlich gibt es elegantere Lösungen.
Wozu möchtest du das verwenden? Je nach Aufgabe kann man das eventuell auch ganz anders lösen.
"Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson
Ich will eigentlich ein Bitmaske an eine Funktion übergeben, die dementsprechend die Ausgänge schaltet und LEDs leuchten lässt.
void Out_Leds(Bitmaske)
{
PortD &= Bitmaske;
}
In der Main sollte die Funktion dann so aufgerufen werden können:
Out_Leds(11110000);
Achso an D4...D7 hängen LEDs. Und die restlichen Pins an PORTD sollen unverändert bleiben?
Hm
Versuch mal das:
(ungetestet)Code:void Out_Leds(uint8_t maske) { PORTD|=(maske & 0xf0); //LEDs einschalten, die eingeschaltet werden sollen PORTD&=(maske | 0x0f); //LEDs ausschalten, die ausgeschaltet werden sollen }
Die Main muss dann Out_Leds(0b........); aufrufen.
Grüße, Bernhard
"Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson
Lesezeichen