Autor Tema: Direcciones de las Tablas  (Leído 2425 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Desert

  • PIC10
  • *
  • Mensajes: 11
Direcciones de las Tablas
« en: 23 de Febrero de 2007, 20:48:42 »
Tengo otro problemilla y es que si pongo por ejemplo tres tablas o mas del tipo
addwf PCL,F
retlw 'D'                           
retlw 'E'

o de este otro tipo

Tabla_Mensajes:   movwf   PCL
Mens_2      equ   $      ;
      dt   "DESARROLLO ",0x00
cuando empiezo a coger los datos para mandarlos al LCD no puedo mandar nada mas ke 4 de ellos xq se reinicia el PIC el solo, nose si es xq se sobreesccriben los datos de la tabla o algo, y si es asi, como se hace para grabarlo en otra direccion del PIC las tablas, el simbolo $ redirecciona a una variable vacia o aleatoria?, me parece ke las tablas se deben de guardar en la ROM y si superan los 256 bytes(max direccion 0xff) el programa no puede funcionar correctamente, alguan solucion?
« Última modificación: 23 de Febrero de 2007, 21:01:52 por Desert »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Direcciones de las Tablas
« Respuesta #1 en: 23 de Febrero de 2007, 21:58:26 »
Este tema Desert se ha comentado muchisimas veces en el foro.

Lo mas simple seria intentar ubicar la tabla al principio de la memoria FLASH del PIC.

La directiva para ubicar codigo a partir de una posicion de memoria especifica es: ORG
Ej:

Código: ASM
  1. org     0x100
  2. Tabla   addwf   PCL,F
  3.         retlw   'D'
  4.         retlw   'E'
  5.         ...

Para llamar a esa tabla, que no esta ubicada en las primeras 256 posiciones de la FLASH,podrias hacer asi:

Código: ASM
  1. pageselw        Tabla
  2.         movwf   PCLATH
  3.         incf    Recorre,f
  4.         movf    Recorre,W
  5.         call    Tabla
  6.         ...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Direcciones de las Tablas
« Respuesta #2 en: 24 de Febrero de 2007, 02:39:14 »
el manejo de tablas implica un poco de paciencia, estimado Desert, en primer lugar debes ubicar tu tabla dentro de un rango de direccion de 255 lineas, es decir por ejemplo pondre unos errores clasicos:

direccion             codigo
1FD         tabla    addwf pcl,f
1FE                     retlw 'f'
1FF                     retlw 'o'
200                     retlw 'r'
201                     retlw 'o'

observas donde esta la falla?, entonces para corregir esto deberias hacer asi:

direccion             codigo
1FD         (vacio)
1FE         (vacio)
1FF          (vacio)
                         org    200
200         tabla    movlw   0x02
201                    movwf  pclath
202                     addwf pcl,f
203                     retlw 'f'
204                     retlw 'o'
205                     retlw 'r'
206                     retlw 'o'

ahora recuerda q el pcl solo maneja FF (hecxadecimal) valores o posiciones, entonces para q llegue hasta el 200 (hexadecimal) el registrop encargado de direccionar la parte alta (es decir el 2) se llama pclath. y se carga como te pongo en el ejemplo.
exitos!!1  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Desert

  • PIC10
  • *
  • Mensajes: 11
Re: Direcciones de las Tablas
« Respuesta #3 en: 24 de Febrero de 2007, 09:34:33 »
ok, gracias me pondre a probar pues aver si acierto

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Direcciones de las Tablas
« Respuesta #4 en: 24 de Febrero de 2007, 11:34:31 »
si no le das al clavo y ya te cansas de intentar pues posteas tu codigo pa ayudarte  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Desert

  • PIC10
  • *
  • Mensajes: 11
Re: Direcciones de las Tablas
« Respuesta #5 en: 25 de Febrero de 2007, 10:07:44 »
gracias a vosotros e conseguido poner muchas mas tablas pero llegan a un limite y entonces es donde tengo ke direccionar a otros lugares pero.. x mucho ke pruebe lo de org 0x100 o cualkiera de las libres ke vienen en los 4 bancos de registros no me funciona, uso el pic16f877 y uso esta manera de tablas.

Tabla_Mensajes2:   
movwf   PCL
Mens_5      equ   $      ;
      dt   "INTRODUZCA PIN",0x00
Mens_6      equ   $      ;
      dt   "[      ]",0x00
Mens_7      equ   $      ;
      dt   "PIN CORRECTO",0x00
Mens_8      equ   $      ;
      dt   "PIN ERRONEO",0x00


x supuesto e probao con el equ$ y sin el equ$ pero na

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Direcciones de las Tablas
« Respuesta #6 en: 25 de Febrero de 2007, 12:06:19 »
sube tu codigo amigo pues hay q depurarlo desde el mplab :mrgreen:, ponlo como archivo adjunto y zippealo pa q el codigo no se afecte. :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado julianjulia

  • PIC10
  • *
  • Mensajes: 5
Re: Direcciones de las Tablas
« Respuesta #7 en: 25 de Febrero de 2007, 17:47:13 »
aqui te pongo un programa (reloj-calendario-termometro), el cual usa varios tipos de tablas y en distintas paginas, espero que te ayude, un saludo


www.jr.es.mw


 

anything