Hallo, meine aufgabe ist es ein lauflicht zu programmieren, das hin und zurück läuft mit 8 LEDs. dieses habe ich gemacht. Programm: $include(AT89S53.INC) start: mov p2,# 11111110b ;1 LED leuchtet call wait ;Warteschleife wird aufgerufen mov p2,# 11111101b ;2 LED leuchtet call wait mov p2,# 11111011b ;3 LED leuchtet call wait mov p2,# 11110111b ;4 LED leuchtet call wait mov p2,# 11101111b ;5 LED leuchtet call wait mov p2,# 11011111b ;6 LED leuchtet call wait mov p2,# 10111111b ;7 LED leuchtet call wait mov p2,# 01111111b ;8 LED leuchtet call wait mov p2,# 10111111b ;7 LED leuchtet call wait mov p2,# 11011111b ;6 LED leuchtet call wait mov p2,# 11101111b ;5 LED leuchtet call wait mov p2,# 11110111b ;4 LED leuchtet call wait mov p2,# 11111011b ;3 LED leuchtet call wait mov p2,# 11111101b ;2 LED leuchtet call wait jmp start ;Sprung wieder zum Anfang wait: mov r7,#0ffh ;Schleifenzähler mov r6,#0ffh ;Schleifenzähler loop: djnz r6,loop ;Verzögerung 255 durchläufe djnz r7,loop ;nochmal verzögerung 255*255 Durchläufe ret end Nun muss dieser funktionsablauf mit zwei verscheiden geschwindigkeiten erfolgen, die durch einen Taster ausgesucht werden können. Kann mir jemand helfen bin noch leider am anfang mit meinen kenntnissen. DANKE
Was hat das mit Kenntnissen zu tun? Du hast doch eine Warteschleife. Heisst "wait". Was bestimmt die Laufzeit dieser Warteschleife? Was musst Du also verändern, wenn Du die Laufzeit der Schleife verändern willst?
ich müsste wahrscheinlich die verzögerung verändern. ich verstehe aber nicht wie ich den taster da reinbringe. danke
eugen schaaf schrieb: > ich müsste wahrscheinlich die verzögerung verändern. ich verstehe aber > nicht wie ich den taster da reinbringe. Zu Anfang des waits lädst du einen Zählwert. Je kleiner desto kürzer das wait. Also musst du nur bei Aufruf des Waits abfragen, ob Taster gedrückt. Wenn ja, lange Zeit rein, wenn nein, kurze Zeit.
eugen schaaf schrieb: > meine aufgabe ist es ein lauflicht zu programmieren, das hin und zurück > läuft mit 8 LEDs. dieses habe ich gemacht. Du sagst Aufgabe, daher gehe ich von Schule aus. > leider sind mir die befehle unbekannt :( Dann durchwühl deine Unterrichtsaufzeichnungen, das habt ihr unter Garantie schon gemacht (z.B. Taster direkt abfragen).
richtig bin schüler. nein das ist ja mein problem. wir hatten erst 2 stunden zu diesem thema und jetzt wo das schuljahr zu ende geht müssen wir unzählige aufgaben zu hause lösen...
Hi Nun, ihr habt sicherlich Hilfsmittel. Ansonsten schau ins Datenblatt, da gibt es sicherlich auch eine Liste der Befehle. Ich kenne leider den Controller icht, allerdings ähneln sich die Assemblerbefehle. So ist anhand der Mnemonik erkennbar, was ein Befehl bewirkt. Du mußt nur lernen, die Mnemonik auszusprechen, dann verstehst du auch den Code. Bei "MOV" muß im Kopf gleich "bewege Wert nach ...." ablaufen. "Call" bedeutet "ruf ein Unterprogramm auf" usw. Hast du das Verstanden, ist Assembler gar nicht so schwer. Gruß oldmax
Dann kann ich dir das : http://www.mikrocontroller.net/articles/AVR-Tutorial Empfehlen, da steht alles drin was du brauchst ...
mein problem ist auch, dass ich kein board habe zum probieren. der simulator bei Keil hilft mir auch nicht wirklich:(
an unserer:) bin auszubildender im 2.lehrjahr (elektroniker für geräte und systeme)
Seltsame Schule, keine Hardware zum Ausprobieren. Und der Simulator vom Keil für die 8051-Familie, (erkenne es an den Assembler-Befehlen) ist doch recht gut, für deine Aufgabe reicht sogar die "freie" Version locker aus, für das Bisschen IO (Taster einlesen, Zeichen ausgeben) reicht es alle mal. Die Simulation der Peripherie wie z.B. serielle Schnittstelle ist besser als beim AVR-Studio (das in deinem Fall eh' nichts nützt) Und immer noch besser als keine Hardware....!
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.