www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit verschachtelten Subroutinen


Autor: Dominik Platz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Ich schreibe gerade an einem Programm (in Assabler) das insgesamt 8
bytes verschickt. Ich habe diese Routine des verschickens mit einer
Subroutine aufgerufen (rcall byte) unten dran steht auch ret damit es
danach wieder zurück kommt. Nun muss ich aber noch pausen von
verschiedenster länge in diese Subroutine einbauen. Gesagt getan:
Gleiches spiel wie mit der Subroutine selbst. Hier mal ein beispiel
Programm wie ich es habe:

------------------------------------------
.include "2313def.inc"
        ldi r16, 0b11111111
         out DDRB, r16
        ldi r16, 0b00000000
         out PORTB, r16
         rcall loop
         rjmp ende
loop:
         rcall pause
        ret
pause:
        ldi r16, 0b11111111
         out PORTB, r16
  ret
ende:
        ldi r16, 0b11110000
         out PORTB, r16
rjmp ende
------------------------------------------
Wenn die subroutinen logisch abgearbeitet werden würden, dann würde das
Programm bis zur ende schleife kommen und die letzten 4 LEDs würden nur
leuchten. Sonst wenn es hängenbleibt zwischen alle an und alle aus hin
und her wechseln. Auf grund der Geschwindigkeit, müsste also alles
leuchtend erscheinen. Dies tut es auf dem programmierten
Mikrocontroller und beim Simulator vom AVR Studio nicht.

Nun meine Frage: Was mache ich falsch? Ist es überhaupt möglich
subroutinen zu verschachteln? Wenn ja wie?


Gruß Dominik

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du den Stack initialisiert ?

Gruß Thomas

Autor: Dominik Platz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ein Stack und wie initialisiert man ihn?

Autor: Dominik Platz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs gefunden ... hätte ich das tutorial ganz gelesen, wäre die frage
überflüssig gewesen!

Danke! :)

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.