Problem mit Subroutine CALL-RET.

OP #3090388
Lesenswert?

Hallo....

Ich habs geschafft mein EBAY-ISP mit meinem mega128A-Board zum Laufen 
bekommen...JUHU

Ein bisschen Bit-schupserei klappt aber ich habe Probleme mit meiner 
delay
subroutine.

Aufrufen mit CALL funzt, aber den Befehl "RET" führt er nicht aus, und 
bleibt einfach stehen.

wenn ich statt RET einen RJMP xy eintrage funktioniert es...

Mach ich was grundlegenes falsch?

Gruss...... Andre
OP #3090420
Lesenswert?

.include  "m128adef.inc"
.org    0x00
    rjmp main

init:
  ldi    r16,0xFF
  out    DDRC,r16
  nop
  ldi    r16,0xFE
  out   DDRB,r16

main:
  ldi    r21,0x08
  ldi    r16,0xFE
  sec
main5:
  out    PORTC,r16
  rol    r16
  call  delay
  out    PORTC,r21
  call  delay
  rjmp  main5


delay:
    ldi  r18,0x04
    ldi  r19,0xFF
    ldi  r20,0xFF
L1: dec  r20
    brne L1
    dec  r19
    brne L1
    dec  r18
    brne L1
;  rjmp main5
    ret



Exteted Fuse ist FD
Watchdog 1
M103C    0

andere Kombinationen gehen gar nicht..... komisch....
OP #3090445
Lesenswert?

.include  "m128adef.inc"
.org    0x00
    rjmp main

RESET:
  ldi    r16, high(RAMEND)    ; Main program start
  out    SPH,r16          ; Set stack pointer to top of RAM
  ldi    r16, low(RAMEND)
  out    SPL,r16
  sei              ; Enable interrupts


init:
  ldi    r16,0xFF
  out    DDRC,r16
  nop
  ldi    r16,0xFE
  out   DDRB,r16

main:
  ldi    r21,0x08
  ldi    r16,0xFE
  sec
main5:
  out    PORTC,r16
  rol    r16
  call  delay
  out    PORTC,r21
  call  delay
  rjmp  main5


delay:
    ldi  r18,0x04
    ldi  r19,0xFF
    ldi  r20,0xFF
L1: dec  r20
    brne L1
    dec  r19
    brne L1
    dec  r18
    brne L1
  ret



so sieht es jetzt aus....... und so bleibt er in der delay "hängen",
und wenn ich die Fuses auf FF setzte, dann geht gar nichts mehr....

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