Probleme mit RCALL

Gast #59169
In meinem Programm werden sämtliche rcall-Anweisungen ignoriert. Sowohl
der Simulator als auch der Controller verhalten sich so als würden die
rcall-Anweisungen garnicht dastehen. Auch die normale call Anweisung
wird ignoriert. Ersetzt man rcall durch jjmp so erfolgt der Sprung.
Stackpointer ist aber korrekt gesetzt.

Habe dann das Beispiel von dieser Seite ins AVR Studio für den Atmega 8
gebraxht. Ergebnis: selbst bei diesem Beispielprogramm springt er
nicht! Was ist da los?

.include "m8def.inc"

.def temp = r16

         ldi temp, LOW(RAMEND)             ; LOW-Byte der obersten
RAM-Adresse
         out SPL, temp
         ldi temp, HIGH(RAMEND)            ; HIGH-Byte der obersten
RAM-Adresse
         out SPH, temp

         rcall sub1                        ; sub1 aufrufen

loop:    rjmp loop


sub1:
                                           ; hier könnten ein paar
Befehle stehen
         rcall sub2                        ; sub2 aufrufen
                                           ; hier könnten auch Befehle
stehen
         ret                               ; wieder zurück

sub2:
                                           ; hier stehen normalerweise
die Befehle,
                                           ; die in sub2 ausgeführt
werden sollen
         ret                               ; wieder zurück
Gast
Wie lässt Du den durchlaufen?

Wenn Du F10 im Debugger drückst dann geht er nicht in die Routinen rein
(bzw. arbeitet die zwar ab aber du siehst das nicht). Mit F11 kannst Du
dein komplettes Programm verfolgen. Ich denke auch hier liegt der
Fehler.

Und wie sieht der Stackpointer aus, wenn Du über "rcall loop 1"
gegangen bist?
Gast
DANKE! Alles funktioniert jetzt

Der Tip mit F11 brachte den Simulator zum Laufen. Dann habe ich wegen
mangelnder Konzentration auch noch das falsche HEXFile geflasht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.