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 .]
Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)
|
Ähnliche Artikel
Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:Lesen aus Portpins Heute geht es nun um die Treiberschaltung für die Portpins. Diese Treiberschaltung benötigt man für ...
Arrays In den vergangenen Folgen ging es ja schon um die Optimierung der Programmierung für unsren Kaffeeau...
Programmierung der Münzeingabe In der vergangenen Folge wurde exemplarisch das Setzen und Löschen der ersten drei Bits des Kaffeeau...
Lösung für eine Funktion zur Münzeingabe Im heutigen Artikel möchte ich eine mögliche Lösung für die Aufgabe aus dem letzten Artikel, nämlich...





{ 5 Kommentare… sie unten lesen oder einen hinzufügen }
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.
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
Ich habe die fehlerhafte Stelle nun korrigiert und im Video das “!” gegen ein “~” ausgetauscht.
Noch einmal vielen Dank, Su.
Hey, ich hab zwei Fragen:
1. Wann ist die Sommerpause ungefähr vorbei?
2. Wie kann ich das fertige Programm auf den Controllerübertragen und den dann auch verwenden? Also auch mit Peripherie, Display (zB das von einem digitalen Wecker) usw.?
Ich hoffe, die Sommerpause dauert nicht zu lange
Ben
Hallo Ben,
Deine Ungeduld kann ich verstehen. Ich wäre selbst schon lieber früher wieder angefangen.
Ich bin diesen Sommer umgezogen. DEr Umzug war leider ziemlich aufwändig, so dass ich nicht zu viel anderem gekommen bin. Es ist viel leigen geblieben, was ich zur Zeit aufarbeite.
So langsam sehe ich aber Licht am Ende des Tunnels, so dass es in ca. 2 Wochen weitergehen sollte.
Zur 2. Frage. Wenn Dein Controller(-boad) eine JTAG-Schnittstelle hat, dann ist es ganz einfach. Keil untersützt JTAG. Du kannst dann das Programm direkt auf Deinen Controller laden.
Ansonsten gibt es z.B. auch Programmer mit denen Du Dein Programm in den Controller lädst.