Probleme mit RCALL

Gast #59169
Lesenswert?
• ▲
▼
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 #59170
Lesenswert?
• ▲
▼
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren