BID = 771402
situation 27 Gerade angekommen
Beiträge: 1 Wohnort: osnabrück
|
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
|
BID = 771411
clembra Inventar
     
Beiträge: 5402 Wohnort: Weeze / Niederrhein
|
Hallo,
> wait: mov r7,#0ffh ;Schleifenzähler
Hier könntest du z.B. nicht fest 0xFF angeben, sondern ein anderes Register nach R7 kopieren. Den Inhalt diese Registers setzt du dann über eine weitere Routine auf verschiedene Startwerte.
_________________
Reboot oder be root, das ist hier die Frage.
|