Autor Tema: Duda con Pic 16f84A en .ASM "stack overflow executing call instruction"  (Leído 5129 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BELINSKI22

  • PIC10
  • *
  • Mensajes: 5
Hola! amigos les cuento que soy nuevo, tengo apenas 17 años y mi hermano me ha introducido en este fascinante tema, sin embargo buscando proyectos he tenido un problema seguido al momento de simular en proteus. Se repite una y otra vez "stack overflow executing call instruction"

A continuación yo necesito activar RA0 para que un led se active en RB6 con un parpadeo de 0.5 segundos y RA1 se active para que el led en RB7 se active con un retardo de 1 segundo.

les dejo lo que he logrado programar, sin problemas al compilar en mplab. (los retardos los he conseguido en un website que me ha generado los códigos)


  INCLUDE <P16F84A.INC>

    cblock
   d1
   d2
   d3
    endc

    ORG 0X00

    BSF  STATUS,5
    BSF  TRISA,0 ;RAO ENTRADA
    BSF  TRISA,1 ;RA1 ENTRADA
    BCF  TRISB,6 ;RB6 SALIDA
    BCF  TRISB,7 ;RB7 SALIDA
    BCF  STATUS,5


PARTIDA
    BTFSS PORTA,0 ; PREGUNTO SI LA ENTRADA RA0 ESTA EN UNO
    GOTO  PARTIDAI
    GOTO  PRENDE ;  PRENDE EL LED
   
PARTIDAI
    BTFSS PORTA,1 ; RA1 1?
    GOTO PARTIDA
    GOTO  PRENDEI ; SI ENTONCES SE PRENDE

PRENDE;PARPADERO 0,5 SEG
    BSF   PORTB,6
    CALL  RETARDOI
    BCF   PORTB,6
    CALL  RETARDOI
    GOTO  PARTIDA

PRENDEI; 1 SEG
    BSF   PORTB,7
    CALL  RETARDOII
    BCF   PORTB,7
    CALL  RETARDOII
    GOTO  PARTIDAI

RETARDOI
             ;499994 cycles
   movlw   0x03
   movwf   d1
   movlw   0x18
   movwf   d2
   movlw   0x02
   movwf   d3
Delay_0
   decfsz   d1, f
   goto   $+2
   decfsz   d2, f
   goto   $+2
   decfsz   d3, f
   goto   Delay_0

         ;6 cycles
   goto   $+1
   goto   $+1
   goto   $+1

    RETURN

RETARDOII
         ;999997 cycles
   movlw   0x08
   movwf   d1
   movlw   0x2F
   movwf   d2
   movlw   0x03
   movwf   d3
Delayy_0
   decfsz   d1, f
   goto   $+2
   decfsz   d2, f
   goto   $+2
   decfsz   d3, f
   goto   Delayy_0

         ;3 cycles
   goto   $+1
   nop

    RETURN

    END

Bueno amigos, según mi lógica no puedo identificar el error, para que proteus rechace la programación, espero sus comentarios y que me puedan orientar en este grandioso mundo. Que esten bien Saludos!


Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Duda con Pic 16f84A en .ASM "stack overflow executing call instruction"
« Respuesta #1 en: 22 de Octubre de 2014, 07:07:13 »
Mira a ver si el fallo esta aqui:

  cblock
   d1
   d2
   d3
    endc

Ponlo asi:

  cblock  0X20
   d1
   d2
   d3
    endc

Porque si no creo que asume que d1 va en 0X00 y siguientes y estas escribiendo en registros propios del PIC.

Desconectado BELINSKI22

  • PIC10
  • *
  • Mensajes: 5
Re: Duda con Pic 16f84A en .ASM "stack overflow executing call instruction"
« Respuesta #2 en: 22 de Octubre de 2014, 11:07:26 »
Muchas gracias!!!...ahora en proteus funciona sin ningún problema ((:-))

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Duda con Pic 16f84A en .ASM "stack overflow executing call instruction"
« Respuesta #3 en: 22 de Octubre de 2014, 13:07:15 »
Me alegro  :-/ :-/

¿Te das cuenta de cual es el problema? lo digo para que no te pase mas veces.

Desconectado BELINSKI22

  • PIC10
  • *
  • Mensajes: 5
Re: Duda con Pic 16f84A en .ASM "stack overflow executing call instruction"
« Respuesta #4 en: 23 de Octubre de 2014, 00:44:27 »
Claro, es por donde yo di el comienzo en 0x00, d1 asume ese inicio y comienza a sobre escribir como me lo explicaron, era tan evidente, pero tan dificil de ver antes de tener la respuesta.


 

anything