www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prog.problem mit 90


Autor: Robert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µC ist ein 90S8515

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.