Problem mit verschachtelten Subroutinen

Gast #256671
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.