hilfe bei Programmierung atmel

OP #2231666
Lesenswert?

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
Gast #2231675
Lesenswert?

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?
Gast #2231712
Lesenswert?

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.
Gast #2231969
Lesenswert?

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).
Gast #2232002
Lesenswert?

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
Gast #2232722
Lesenswert?

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....!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren