Forum: Mikrocontroller und Digitale Elektronik hilfe bei Programmierung atmel


von eugen s. (situation27)


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

von Blödmann (Gast)


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?

von eugen s. (situation27)


Lesenswert?

ich müsste wahrscheinlich die verzögerung verändern. ich verstehe aber 
nicht wie ich den taster da reinbringe.
danke

von Floh (Gast)


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.

von eugen s. (situation27)


Lesenswert?

okay verstehe.
leider sind mir die befehle unbekannt :(

von Floh (Gast)


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

von eugen s. (situation27)


Lesenswert?

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

von oldmax (Gast)


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

von Mark X. (lechuck_ger)


Lesenswert?

Dann kann ich dir das : 
http://www.mikrocontroller.net/articles/AVR-Tutorial

Empfehlen, da steht alles drin was du brauchst ...

von eugen s. (situation27)


Lesenswert?

mein problem ist auch, dass ich kein board habe zum probieren. der 
simulator bei Keil hilft mir auch nicht wirklich:(

von DM (Gast)


Lesenswert?

An welcher Schule werden denn Mikrocontroller programmiert??

von eugen s. (situation27)


Lesenswert?

an unserer:) bin auszubildender im 2.lehrjahr (elektroniker für geräte 
und systeme)

von Anton (Gast)


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

von Peter D. (peda)


Lesenswert?


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
Noch kein Account? Hier anmelden.