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