Autor Tema: No retorna del "call"  (Leído 2578 veces)

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

Desconectado s11o

  • PIC10
  • *
  • Mensajes: 2
No retorna del "call"
« en: 31 de Agosto de 2021, 23:21:50 »
Hola. Este programa ya compila, pero no funciona en la práctica. Porque por alguna razón, se queda atorado en el call. Estoy migrando de MPASM a Pic assembler, ya cheque la guía de microchip y no encontré algún cambio con esta instrucción. Espero puedan ayudarme, gracias
Este es el código.

PROCESSOR 18F4685
#include <xc.inc>

CONFIG OSC = XT
CONFIG PWRT = ON
CONFIG WDT = OFF
CONFIG LVP = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF

//----------------vector reset---------------

PSECT resetVec,class=CODE,reloc=2
resetVec:
    PAGESEL main
    goto main
   
   
PSECT code
main:
    //Zona de declaracion de registros || constantes
    /*
    CBLOCK
    display
    ENDC
    */
    display EQU 0x00
   
    PAGESEL no_8
    ORG 0x000
    movlw 0x0f
    movwf ADCON1
    clrf TRISA
    clrf TRISB
    clrf TRISC
    clrf TRISD
    clrf TRISE
   
    //Input PORTE
    bsf TRISE, 0
    bsf TRISE, 1
    bsf TRISE, 2
   
    //Input PORTB
    bsf TRISB, 0
    bsf TRISB, 1
    bsf TRISB, 2
    bsf TRISB, 3
   
    //Input PORTA
    bsf TRISA, 0
    bsf TRISA, 1
    bsf TRISA, 2
    bsf TRISA, 3
   
    clrf PORTA
    clrf PORTB
    clrf PORTC
    clrf PORTD
    clrf PORTE
   
    bsf PORTA, 5; Pin de testeo
   
    clrf display; limpio la variable
    goto no_8
   
 loop:
    btfss PORTE, 0
    goto loop
   
    esp:
   btfsc PORTE, 0
   goto esp
   
   incf display, 1
   incf display, 1
   btfss display, 3
   goto no_8
   clrf display
   
 no_8:
    movf display, 0 //mueve display al acumulador ("w")
    call Tabla
    bsf PORTC, 0; enciendo este led para saber si sale de "tabla"..., y no lo hace
    movwf PORTD
    goto loop
   
 Tabla:
    addwf PCL, 1
    retlw 0x76;0
    retlw 0x3F;2
    retlw 0x38;4
    retlw 0x77;6

END resetVec

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:No retorna del "call"
« Respuesta #1 en: 31 de Agosto de 2021, 23:48:52 »
¿No será que estás intentando recuperar un valor más allá del máximo de la tabla?

¿Puedes debugar y ver que valor tiene el acumulador antes de llamar a Tabla?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re:No retorna del "call"
« Respuesta #2 en: 01 de Septiembre de 2021, 11:49:57 »
Asegurate que el led esté bien poralizado y ande.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 110
Re:No retorna del "call"
« Respuesta #3 en: 01 de Septiembre de 2021, 17:29:05 »
En primera ese programa está MAL ESCRITO, por decirlo de manera políticamente correcta...

En segunda, estas usando un PIC serie 18, y quieres hacer los retornos de tabla como si se tratara de una serie 16, lo cual NO es así (PCL es PAR, no es NON)

En tercera, escribes código que da migraña nada más de verlo, porque las variables NO se declaran en la zona de código, NO estas respetando ninguna de las localidades asignadas a los vectores de interrupciones y un largo etc etc etc...

De hecho más bien, sería sorprendente que funcionara ese código

Desconectado s11o

  • PIC10
  • *
  • Mensajes: 2
Re:No retorna del "call"
« Respuesta #4 en: 02 de Septiembre de 2021, 01:34:42 »
Asegurate que el led esté bien poralizado y ande.
El led no es. eso ya lo había checado. pero gracias

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:No retorna del "call"
« Respuesta #5 en: 02 de Septiembre de 2021, 09:14:34 »
Asegurate que el led esté bien poralizado y ande.
El led no es. eso ya lo había checado. pero gracias

¿Por qué no debugas y pones un punto de ruptura antes de llamar a tabla y ver que tiene el acumulador?

¿O no sabes como debugar?

Lo que posiblemente pase es que w tenga un valor mayor que cuatro y al llamar a tabla salta a una localidad de la memoria flash vacía y ahi se queda en contador de programa.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re:No retorna del "call"
« Respuesta #6 en: 02 de Septiembre de 2021, 14:03:55 »
Que tal, en efecto es pic 18. No 16F y son diferentes. Te comparto este video donde explican el uso de tablas en PIC18F:


Desconectado Eduardo Rodas

  • PIC12
  • **
  • Mensajes: 62
    • Kit electronica
Re:No retorna del "call"
« Respuesta #7 en: 02 de Septiembre de 2021, 16:18:09 »
Deberías darle un delay después de encender el led, por si el puerto C,0 se borra
de alguna manera ... al menos sabrías si va a la tabla y regresa.


 

anything