Tiny13 Stackpointer/subroutine

Gast #838156
Lesenswert?

Moin,moin.

Ich habe ein kleines Problem mit meinem Tiny13. Er springt nicht mehr 
aus einer subroutine zurück ins Hauptprogramm. Habe den StackPointer per 
Software initialisiert, so funktioniert es auch wunderbar in den 
90S2313. Warum hier nicht?
1
.include "tn13def.inc"
2
.def temp=r18
3
.ORG 0x00
4
ldi temp, RAMEND
5
out SPL, temp
6
ldi temp, 0xFF
7
out DDRB, temp
8
ldi temp, 0xFF
9
out PORTB, temp
10
rjmp loop
11
ldi temp, 0x00
12
out PORTB, temp
13
ende: rjmp ende
14
loop: nop
15
      ret

Was nun passiert ist folgendes: Die Ports sind alle gesetzt. Erwarten 
würde ich eigentlich, dass sie zum Ende nicht mehr gesetzt sind.

Ich hoffe, mir kann jemand helfen!!!

Lg GrinzPrinz
#838167
Lesenswert?

GrinzPrinz wrote:
> Danke, mit rcall klappt das jetzt :)
>
> Wo liegt denn genau der Unterschied zwischen rcall und rjmp für mich zum
> Verständnis?

Jmp    Sprung zu einer anderen Programmstelle.
       Die Programmausführung wird dort fortgesetzt

Call   Aufruf einer Subroutine
       Die Programmausführung wird an der angegebenen Stelle
       fortgesetzt. Zusätzlich wird aber die aktuelle Position
       im Programm zb. in einem Stack abgelegt, damit nach Beendigung
       der Subroutine wieder an die Stelle nach dem Call zurückgekommen
       werden kann (mittels 'ret')

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