reBuy.de -DER An- und Verkaufshop für Gebrauchtware

Array-Lösung mit Löschen des Bits

Kategorie: Mikrocontroller

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:

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

Sommerpause

Mit diesem Artikel möchte ich eine Sommerpause beim Mikrocontroller-Kurs einlegen.

Wenn Du bis zu dieser Folge dem Kurs aufmerksam gefolgt bist und die Übungen gelöst hast, dann hast Du Dir auch eine Pause, vor allem bei diesem Wetter ;-) , mehr als verdient.

Sollte es Dir aber zu langweilig werden, empfehle ich die Programmierung des Kaffeeautomaten noch einmal von Anfang an selbständig zu programmieren.

Programmieren lernt man durch Programmieren. Sehr wichtig ist also das eigenständige Programmiren.

Sicher fallen Dir an der einen oder anderen Stelle auch noch Verbesserungsmöglichkeiten ein, die Du evtl. schon selbst umsetzen kannst, oder die wir nach den Sommerferien gemeinsam umsetzen können.

Bis dahin wünsche ich Dir auch einen schönen, sonnigen Sommer!

Wenn Du Dich bereits auf den Email-Verteil gesetzt hast, erhälst Du automatische eine Email, wenn es wieder los geht.

Falls nicht, trage, wenn Du möchtest, Deine Email Adresse in das folgende Feld ein.

Trage hier Deine Email-Adresse ein:

Anschließend erhältst Du dann automatisch eine Email, wenn es wieder losgeht. In jeder Email befindet sich ein Link, mit dem Du Dich auch einfach wieder abmelden kannst.

Die Teilnehmerzahl beträgt zur Zeit:

Wichtig:

Deine EMail-Adresse behandle ich natürlich vertraulich und gebe diese an niemanden weiter. Zudem kannst Du Dich jederzeit durch einen Klick auf den Abmeldelink in einer der Emails einfach wieder abmelden.



ET-Tutorials weiterempfehlen

Hat Dir der Artikel gefallen?
Dann unterstütze ET-Tutorials.de mit einer Empfehlung per Email an Deine Freunde .

Hinweis zum Datenschutz: Ich kann weder Deine noch die Email-Adresse Deiner Freunde sehen.

Ähnliche Artikel

Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:

» Funktionen in C, Globale und lokale Variablen
» Bits, Bytes und Nibbles
» Was machen Compiler und Linker ?
» Lösung der Aufgabe und SHIFT Operator
» Variablenzuweisung - Teil 2

3 Kommentare
Hier kannst Du den Artikel kommentieren: »

  1. ich bin der Meinung, dass Bitweiseinvertieren mit dem Operator “~” durchgeführt werden muss. In der Lösungsvorschlag ist der Operator “!” im Einsatz. Das löscht doch “allen” bits in Port1, weil !(1<<Nr) gibt immer 0 zurück. Es funktioniert nur wenn mann eine einzige Münze eingeworfen hat, bei mehr als zwei Münzen werden nur eine gezählt und dann ALLE zurückgesetzt.

  2. Das muss am Wetter liegen. :-(
    Du hast natürlich recht.
    Bitte alle das “!” gegen ein “~” austauschen.

    Ich werde dazu in den nächsten Tagen das Video korrigieren und austauschen.
    Danke, Su.

    Ich weiß schon, warum ich eine Sommerpause eingelegt habe ;-)

  3. Ich habe die fehlerhafte Stelle nun korrigiert und im Video das “!” gegen ein “~” ausgetauscht.
    Noch einmal vielen Dank, Su.

Kommentiere hier den Artikel:

Abonnieren ohne einen Kommentar abzugeben