was ist hier falsch?

Gast #27946
Hallo,
ich habe mir ein Assemblerprogramm geschrieben das eine LED zu blinken 
bringen soll aber sie leuchtet nur.
Hier ist das Assemblerprogramm:


.include "4433def.inc"     ;bzw. 2333def.inc

         ldi r16, 0xFF
         out DDRB, r16     ;Port B durch Ausgabe von 0xFF ins
                           ;Richtungsregister DDRB als Ausgang 
konfigurieren
         ldi r16, 0b11110111
     ldi r17, 0b11111111
loop:
        out PORTB, r16

         rcall sub1
    out PORTB, r17

         rcall sub1

     rjmp loop
;pause 2sec mit dem AVR-wartenschleifergenarator gemacht
sub1:
          ldi  R20, $48
WGLOOP0:  ldi  R21, $BC
WGLOOP1:  ldi  R22, $C4
WGLOOP2:  dec  R22
          brne WGLOOP2
          dec  R21
          brne WGLOOP1
          dec  R20
          brne WGLOOP0

          ldi  R20, $02
WGLOOP3:  dec  R20
          brne WGLOOP3

          nop
          nop
ret

Ende des programms
Peter
Gast
Hi !

knall mal die zwei zeilen an den anfang deines programms:

  ldi  r16,RAMEND
  out  SP,r16

damit initialisierst du den stackpointer, das musst du machen damit du 
überhaupt calls verwenden kannst...

ich denke das sollte dein problem beheben.
lg
Gast
Hallo,
jetzt geht es.
Die 2 Zeilen muss ich dann immer rein machen wenn ich rcall benutzen 
will oder sehe ich das falsch?

Peter
Gast
Hallo peter2

nein, das siehtst du richtig. Bei sprüngen wie rcall muß der Prozessor 
ja wissen, wohin er wieder zurück springen soll, bei ret. Diese Adressen 
schreibt er dann auf den SP.

MFG
Dieter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.