Stack & Rücksprungadresse

Gast #57691
Lesenswert?

Hallo,

Ich habe folgenden Code bisher nur im Simulator vom AVR Studio getestet
( für den AT90S4433 ). Meine Frage ist, warum springt der Simulator
nicht an die im Stack abgelegte Sprungadresse (loop) , sondern an den
Reset Vektor?


.include "4433def.inc"
.def temp = r16

main:
ldi temp, RAMEND
out SPL, temp
rjmp test

loop: rjmp loop

test:
  ldi  temp,LOW(loop)
  push  temp
  ldi  temp,HIGH(loop)
  push  temp
  ret

Denkfehler? Tippfehler, Fehler im Simulator oder kann der AT90S4433 das
nich? (Wenn ich nen Mega8 auswähle gehts)

mfg Markus
Gast #57692
Lesenswert?

Hi,

schreib mal folgendes zwischen .def... und main:

.cseg
         rjmp reset           ; Reset Handler
         reti          ; IRQ0 Handler
         reti          ; IRQ1 Handler
         reti                 ; Timer1 Capture Handler
         reti                 ; Timer1 compare Handler
         reti                 ; Timer1 Overflow Handler
         reti                 ; Timer0 Overflow Handler
         reti                 ; SPI Transfer Complete Handler
         reti                 ; UART RX Complete Handler
         reti                 ; UDR Empty Handler
         reti                 ; UART TX Complete Handler
         reti                 ; ADC Conversion Complete Interrupt
Handler
         reti                 ; EEPROM Ready Handler
         reti                 ; Analog Comparator Handler

Sebastian

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