www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny13 Stackpointer/subroutine


Autor: GrinzPrinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
.include "tn13def.inc"
.def temp=r18
.ORG 0x00
ldi temp, RAMEND
out SPL, temp
ldi temp, 0xFF
out DDRB, temp
ldi temp, 0xFF
out PORTB, temp
rjmp loop
ldi temp, 0x00
out PORTB, temp
ende: rjmp ende
loop: nop
      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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GrinzPrinz wrote:

> rjmp loop

ein rjmp ist kein Unterprogrammaufruf

Autor: GrinzPrinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, mit rcall klappt das jetzt :)

Wo liegt denn genau der Unterschied zwischen rcall und rjmp für mich zum 
Verständnis?

Lg GrinzPrinz

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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')

Autor: GrinzPrinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, für die schnelle Hilfe!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.