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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.