Array-Lösung mit Löschen des Bits


Nachdem wir in der vergangenen Folge die Funktion Eingabe mit Hilfe eines Arrays realisiert haben, ist die Aufgabe, das jeweilige Portbit nach der Bearbeitung wieder zu löschen noch offen.

Dies möchte ich in dieser Folge nun nachholen.

In der Funktion Eingabe() steht uns lediglich die Schachtnummer, in der eine Münze eingeworfen wurde, zu Verfügung. Mit Hilfe dieser Schachtnummer muss nun das entsprechende Portbit – und zwar nur dieses Portbit ! – zurückgesetzt werden.

Bitweises Löschen des Portbits

In der Folge über die Bitweise Manipulation also das Bitweise Setzen und Löschen des Ports habe ich ja bereits den Mechanismus vorgestellt, wie man mit dem Operator & einzelne Bits zurücksetzen kann.

Die Maske hierfür müssen wir uns mit der Information über die Schachtnummer nun selbst zusammenbauen.

Der SHIFT-Operator

Wie bereits in der letzten Folge vorbereitet, kann man dies mit dem SHIFT-Operator << prima machen. In dem heutigen Video zeige ich, wie man das gewünschte Bitmuster zusammenstellen kann.

Hierzu kann man einfach eine 1 (binär gedacht als 00000001) soweit wie gewünscht nach links schieben. Man erhält 1 Byte mit 0, bei dem nur an der gewünschten Stelle eine 1 steht. Zieht man diesen Wert anschließend von einer 0xFF (binär gedacht 11111111) ab, erhält man die gewünschte Maske, z.B. 11111101.

Mit Hilfe dieser Maske kann man dann, wie in der Folge zur Bitweise Manipulation,  also das Bitweise Setzen und Löschen des Ports, gezeigt, das gewünschte Portbit zurückzusetzen. Alle anderen Portbits werden nicht verändert.

Noch einfacher durch das Bitweise Invertieren

Am Ende des Videos zeige ich noch, wie man die Maske noch eleganter zusammenstellen kann. Durch das Bitweise Invertieren der „geschifteten 1“ lässt sich die Maske sehr einfach erstellen.

Die Details im folgenden Video:

Array-Lösung mit Löschen des Bits - OK.flv

Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]

 

weitere Videos

Januar 11, 2010

Dezember 15, 2009

Mai 17, 2010

Mai 3, 2010

Juni 14, 2011

Februar 8, 2010

>