Autor Tema: Rutina de PCL, no reconoce las posiciones  (Leído 3064 veces)

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

Desconectado kukkiv

  • PIC10
  • *
  • Mensajes: 10
Rutina de PCL, no reconoce las posiciones
« en: 02 de Agosto de 2016, 01:17:13 »
Buenas tardes,

Me encuentro en una situación un poco conflictiva para mí ya que me estoy iniciando en el mundo de los microcontroladores y he tratado de hacer lo posible por resolver, pero no me ha sido posible.

El programa que adjunto, se trata básicamente de mostrar en un Display 7 segmentos las letras del abecedario introduciendo en un teclado matricial dos dígitos, tomando en cuenta las tablas ASCII. Para la formación de cada letra solo realicé la cuenta desde el 41 (que comenzará con la respectiva letra "A") hasta el 66 (Z).
El problema está específicamente en el PCL, a cada letra le asigné una posición pero esta tabla no me reconoce ninguna de las posiciones previamente asignadas, yendose el programa a otras líneas de código que no son de las que debe continuar. Esperando que puedan ayudarme en algo,

Gracias,
« Última modificación: 12 de Agosto de 2016, 19:52:15 por kukkiv »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Rutina de PCL, no reconoce las posiciones
« Respuesta #1 en: 02 de Agosto de 2016, 01:59:39 »
500 lineas, de seguro que va a llevar un bueen tiempo verlo...

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Rutina de PCL, no reconoce las posiciones
« Respuesta #2 en: 02 de Agosto de 2016, 08:43:17 »
Me suena a que tu tabla quedó en otra página de memoria. La técnica del salto direccionado con PCL solo funciona si la tabla está en las primeras 256 direcciones de la memoria de programa, de lo contrario salta a cualquier lado... Podrías reubicarla al inicio de la primera página con la directiva "org 0x00" por ejemplo. Sino existen técnicas para direccionar tablas en direcciones de memoria mas allá de 0xFF. Para esto tendrás que tener en cuenta el PC completo (no solo PCL) En este foro se trató este tema

Desconectado kukkiv

  • PIC10
  • *
  • Mensajes: 10
Re:Rutina de PCL, no reconoce las posiciones
« Respuesta #3 en: 02 de Agosto de 2016, 11:32:12 »
500 lineas, de seguro que va a llevar un bueen tiempo verlo...

Profundice un poco más en el tema de los PCLATH, agregué las siguientes líneas de código, pero no me soluciona, disculpa la molestia, espero puedas ayudarme:

BUSCAR_LETRA

    MOVLW 1            ; PÁGINA 1
    MOVWF PCLATH           

    CLRF BUSCA
    BTFSS RESULT,6
    .
    .
    .

ASIG_LETRA

    ORG 0X100

    MOVF BUSCA,W
    ADDWF   PCL,1
   RETLW   B'01110111'        ;LETRA A1-41 Elemento "0"
   RETLW   B'01111100'
        .
        .
        .

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Rutina de PCL, no reconoce las posiciones
« Respuesta #4 en: 02 de Agosto de 2016, 15:09:04 »
Podrias indicar cual es el problema ahora ? A mi me parece bastante correcto.

A no ser que tu programa sea TAN largo que este sobre esa direccion. Proba ponerlo en una direccion mas lejana, como en 0x300

Ahi tendrias unos 700 lineas de codigo libre para lo que sea, ademas estarias usando los bits 0 y 1 del PCLATH el cual no te molestaria con los GOTO/CALL. Incluso podes ponerlo en 0x700 si queres. Y cargar el PCLATH con 0x7.

Desconectado kukkiv

  • PIC10
  • *
  • Mensajes: 10
Re:Rutina de PCL, no reconoce las posiciones
« Respuesta #5 en: 02 de Agosto de 2016, 15:47:35 »
Terminé resolviendo el problema del PCL, colocando la tabla en una dirección ORG 0X05 al comienzo del programa. Ahora ya este dejó de ser mi problema para entrar en otro :(


 

anything