Forum: Mikrocontroller und Digitale Elektronik Stackpointer Problem


von Matze0001 (Gast)


Lesenswert?

Hi!

hab ein Problem mit den Stack, und hoffe Ihr könnt mir helfen...


Also ich hab mein Programm. Der Übersicht-halber hab ich es so 
geschrieben:

Start:

Stackpointer Initialiesen (High und low)

dann weiter:

Main:


 rcall Programmteil_one
 rcall Programmteil_two
 rcall Programmteil_three
 rjmp Main


dann folgen die einzelnen Programmteile...
Nach jeden Programmteil steht ein "ret"

Wenn ich das Programm simuliere, springt der Pfeil nach Programmteil_one
nicht zu "rcall Programmteil_two" sondern fängt wieder beim 
Programm-Anfang an, also bei "Start"

ist evtl. der Programmteil_one zu groß oder an was kann das liegen?

Grüße Matze

von Matze0001 (Gast)


Lesenswert?

Ach ja, hab ich noch vergessen:
Ist ein Mega8 und das
Programm in Assembler

von Ben _. (burning_silicon)


Lesenswert?

stack nicht aufgeräumt? evtl. ein push oder ein pop zuviel oder zuwenig?

von Stefan E. (sternst)


Lesenswert?

Oder dieser Teil
> Stackpointer Initialiesen (High und low)
ist fehlerhaft implementiert.

Oder es ist im Simulator der falsche Controller eingestellt.

von Matze0001 (Gast)


Lesenswert?

eigentlich jetzt nicht mehr, hab ich jetzt ausgebessert...
jetzt sinds genauso viel pop wie push
jetzt springts mir aber wieder zum Anfang von Programmteil_one

von Matze0001 (Gast)


Lesenswert?

So sieht das Initialisieren aus:


    ldi   temp1, HIGH(RAMEND)
    out   SPH, temp1
    ldi   temp1, LOW(RAMEND)
    out   SPL, temp1

von Matze0001 (Gast)


Lesenswert?

Ah, warn doch die Push und Pop, hab da noch was übersehen...
Danke euch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.