Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable Ausgabe
Hallo,
ich würde die gerne variable Bitmaske haben, also:
PortD &= 0bxxxx0000
Die 'x's (oder wie ist der Plural?:D) 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
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.
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;
(ungetestet)
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.
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 :-k
Versuch mal das:
void Out_Leds(uint8_t maske)
{
PORTD|=(maske & 0xf0); //LEDs einschalten, die eingeschaltet werden sollen
PORTD&=(maske | 0x0f); //LEDs ausschalten, die ausgeschaltet werden sollen
}
(ungetestet)
Die Main muss dann Out_Leds(0b........); aufrufen.
Grüße, Bernhard
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.