Forum: Mikrocontroller und Digitale Elektronik Prog.problem mit 90


von Robert (Gast)


Angehängte Dateien:

Lesenswert?

hallo leute!

hab ein kleines prog.problme mit meinem stk500:

wollte mit 2 schaltern (sw0 und sw1) die zugehörigen LED´s einschalten
und diese sollten nach kurzer zeit wieder automatisch ausgehen.

aber ich bekomm das nicht hin.

zur verzögerung hab ich R1 verwendet.

wer kann mir helfenß

mfg.
Robert

von Robert (Gast)


Lesenswert?

µC ist ein 90S8515

von Rahul D. (rahul)


Lesenswert?

rcall erfordert ein ret. Wenn man vorher mit rjmp zu einer anderen Marke
springt, gibt es irgendwann einen Stack-Überlauf.
DDRx = 0 (clr LED) macht PORTx zu einem Eingang.
Den hast du aber für die Taster nicht eingestellt. Vielleicht auch noch
die internen Pull-Up-Widerstände aktivieren.

Dann solltest du das "rjmp Beginn" vielleicht lieber vor die
LED-Label setzen.

Und nicht zu Beginn springen, sondern zu "Taster1:".
Entprellt wird dein Tastendruck auch nicht.

Vielleicht solltest du dir vorm Programmieren mal einen Plan (auch
Struktogramm genannt) machen, um dir die Funktion des Programms
bildlich darzustellen.

von Peter D. (peda)


Lesenswert?

Da sind mehrere Sachen im Argen:

R1 ist 8 Bit breit, d.h. die Verzögerung ist gerade mal 768 Takte und
entspricht etwa 48µs bei 16MHz. Das kann kein Mensch sehen.
Für lange Verzögerungen ist eigentlich der Timer das optimale.


Vom Ablauf her ist das Programm wohl nicht das gewünschte. Du wartest
in  einem Programmteil auf das Ende einer Verzögerung und damit ist
solange die 2. Taste tot.

Üblich ist daher eine Hauptschleife, in der hintereinander Bedingungen
getestet werden und dann die gewünschten Aktionen ausgeführt werden.
D.h. auch wenn eine Bedingung noch nicht eingetroffen ist, wird
trotzdem zur Hauptschleife zurückgekehrt ohne die Aktion auszuführen.
Damit sind andere Programmteile nicht tot und es entsteht der Eindruck
das viele verschiedene Programme gleichzeizig laufen.


Ein Beispiel, was genau das macht, was Du willst:

http://www.mikrocontroller.net/forum/read-4-49709.html#new

Ist allerdings in C geschrieben und nicht so leicht zu verstehen.


Peter

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.