Hallo zusammen, ich muss folgende Aufgabe für die Schule, als Abi-Vorbereitung, lösen: "Schalterwert einlesen Am Port P1 ist eine Platine mit 8 Schaltern angeschlossen. Über die ersten vier Schalter (P1.0 bis P1.3) sollen vier verschiedene Lauflichter eingestellt werden können. Schalter an Port Pin Funktion P1.0 Linkslauflicht mit einer Diode P1.1 Rechtslauflicht mit einer Diode P1.2 zwei Dioden "laufen" von außen aufeiander zu P1.3 zwei Dioden "laufen" von innen nach außen In der Funktion "schalter()" wird nur der Wert am Port P1 eingelesen und in der globalen Variable "lauf" abgespeichert. Schreiben Sie den Quellcode für diese Aufgabenstellung ! So, das ist die Aufgabe. Allerdings habe ich absolut keine Ahnung, was dort von mir verlangt ist, geschweige denn, wie ich dies umsetzen soll?! Ich hoffe Ihr könnt mir weiterhelfen! MfG
Azurox schrieb: > Allerdings habe ich absolut keine Ahnung, was > dort von mir verlangt ist, geschweige denn, wie ich dies umsetzen soll?! Dann beschwer Dich beim Direktor, daß Dein Lehrer seine Aufgaben nicht erfüllt hat. Stoff, der abgefragt wird, muß vorher im Unterricht vom Prinzip her behandelt worden sein. Peter
Nun ja, da gibt es in letzter Zeit öfters Schwierigkeiten, da wir in dem Fach einen Lehrerwechsel hatten und der jetztige zu viel voraussetzt. Bisher habe ich mir fast alles selbst erarbeitet, jedoch bin ich jetzt zu einem Punkt gekommen, an der ich die Aufgabenstellung nicht ganz verstehe. Also, wenn jemand eine Idee haben sollte, bzw. weiß, was mit der Aufgabenstellung gemeint ist, bitte antworten! Ansonsten lasst es bitte - danke ! ;)
Hallo John, danke für deine Antwort. Ja, die 4 verschiedenen Lauflichter sollen so funktionieren. Das habe ich soweit auch verstanden. Aber das Problem ist dies hier: "In der Funktion "schalter()" wird nur der Wert am Port P1 eingelesen und in der globalen Variable "lauf" abgespeichert. Schreiben Sie den Quellcode für diese Aufgabenstellung ! "
Das zielt zuerst einmal auf den Umgang mit einer "Maske": das port des 8051 wird gelesen, aber nur 4 bit davon sind interessant, die anderen müssen ausgeblendet werden. 1. Zuerst das port lesen. in die Variable "lauf" damit 2. Dann eine AND- Verknüpfung mit der "Maske" 00001111 , zwischen Akku und "lauf". Durch die Nullen der Maske sind dann die oberen vier Bit immer Null. die unteren Vier behalten die eingelesenen Werte. das bringt die Einschränkung auf die vier Schalter, die oben beschrieben sind. Im Akku steht dann das Muster für die vier Tasten, die anderen tasten sind ausgeblendet. 3. Dann kann man mit Einzelbitmaske z.B. 00000010 einen einzelnen Taster abfragen und zur dazugehörigen Routine bedingt springen. Also: Wenn Ergebnis = 1 dann in Routine "rechtslaufen" Die Technik, mit Masken einzelne Bits aus einem 8-Bit-Wort herauszulesen oder einzelne Bits zu löschen oder zu setzen ist fundamental, besonders wenn in der Syntax einer Programmiersprache Einzelbitbefehle fehlen. Danach kann man sich dann an die Arbeit machen die vier Einzelroutinen zu schreiben Und dazu auch noch Kontrolle für die Fälle, wenn die eins aus vier-Bedingung nicht erfüllt ist, wenn z.B. zwei Tasten anstatt einer gedrückt sind.
Hallo Peter. Vielen Dank - also habe ich die Aufgabe wohl doch richtig verstanden. Jedoch habe ich nie wirklich mit Masken gearbeitet. Das Thema wurde nur kurz vor 2 Jahren von meinem Lehrer angeschnitten, aber nie wirklich erklärt, da dieser es selbst nicht konnte. Da habe ich einfach den Quellcode auswendig gelernt und gut war's. Nur schade, dass sowas zum Schluss immer auf die Kappe der Schüler geht ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.