TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: CMARINV2006 en 18 de Agosto de 2006, 13:36:22

Título: 16f628 SE DESBORDA EL PROGRAMA
Publicado por: CMARINV2006 en 18 de Agosto de 2006, 13:36:22
HOLA A TODOS, TENGO UN PROGRAMA CON EL PIC 16F628 Y FUNCIONA CORRECTAMENTE, LO QUE PASA ES QUE SI LE AGREGO UNAS LÌNEAS MAS DE CODIGO QUEDA MAS LOCO QUE UNA CABRA, NO ENTIENDO LA RAZON, HE HECHO PROGRAMAS MUCHO MAS EXTENSOS CON EL 16F84 Y ME HAN FUNCIONADO BIEN, ADJUNTO UN TROZO DE CODIGO, SI ALGUIEN ME AYUDARA LES AGRADECERIA.
Título: Re: 16f628 SE DESBORDA EL PROGRAMA
Publicado por: BrunoF en 18 de Agosto de 2006, 14:08:38
Hola.
Este no es el lugar adecuado para publicar este mensaje. Deberia haber sido publicado en: http://www.todopic.com.ar/foros/index.php?board=1.0 (http://www.todopic.com.ar/foros/index.php?board=1.0)
Si el moderador de este sub-foro no lo mueve, lo movere pronto.

Con respecto a tu programa:
La tabla esta generando esos errores, porque al agregar lineas de codigo, la tabla queda mas alla de las 256 primeras posiciones de la memoria de programa del PIC, y salta incorrectamente dentro de la tabla.

Solución:

Mover esto:
Código: ASM
  1. tablita   addwf    pc,1     ;tabla que contiene el precio del minuto X 10
  2.           retlw    .10
  3.           retlw    .15
  4.           retlw    .20
  5.           retlw    .25
  6.           retlw    .30
  7.           retlw    .35
  8.           retlw    .40
  9.           retlw    .45
  10.           retlw    .50

y ponerlo debajo de esto:

Código: ASM
  1. org     0
  2.           goto    inicio
  3.           org     5
  4.  
  5.           org     4    
  6.           goto    interr

Tiene que quedar asi:

Código: ASM
  1. ...
  2.           ...
  3. ;============================================================================================
  4.  
  5.           org     0
  6.           goto    inicio
  7.           org     5
  8.  
  9.           org     4    
  10.           goto    interr  
  11.  
  12. tablita   addwf    pc,1     ;tabla que contiene el precio del minuto X 10
  13.           retlw    .10
  14.           retlw    .15
  15.           retlw    .20
  16.           retlw    .25
  17.           retlw    .30
  18.           retlw    .35
  19.           retlw    .40
  20.           retlw    .45
  21.           retlw    .50
  22.            
  23.          
  24. interr    btfss   intcon,2
  25.           goto    sale
  26.           nop
  27.           ...
  28.           ...

Saludos.
Título: Re: 16f628 SE DESBORDA EL PROGRAMA
Publicado por: CMARINV2006 en 01 de Octubre de 2006, 14:55:41
OK YA ENTENDI, SIN EMBARGO ME GUSTARIA SABER QU TANTO CODIGO PUEDO AGREGAR DONDE DIJISTE, Y SI HAY UNA MANERA DE DIRECCIONAR MANUALMENTE LOS BANCOS PARA NO TENER ESTOS PROBLEMAS

GRACIAS HOMBRE
Título: Re: 16f628 SE DESBORDA EL PROGRAMA
Publicado por: BrunoF en 02 de Octubre de 2006, 10:43:05
Hola CMARINV2006.

Puedes agregar tantas tablas siempre y cuando no excedan las primeras 256 posiciones de la memoria del PIC.
Es decir que la maxima posicion en la que puedes poner las tablas asi sin nada es 0xFF.

Si deseas ubicar las tablas en otro lugar, pues tendras antes que cargar manualmente el valor del PCLATH antes de hacer la llamada la tabla.

Aquí Maunix da 3 posibles soluciones al tema:

Manejo de tablas (http://www.todopic.com.ar/foros/index.php?topic=12345.msg74300#msg74300)

Aquí yo doy otra posible solución al problema(con ciertas limitaciones).

Varias tablas en una misma subrutina(gestor de tablas) (http://www.todopic.com.ar/foros/index.php?topic=13640.msg79775#msg79775)

Cualquier cosa preguntas.

Saludos.