Autor Tema: Problemas con una tabla  (Leído 2039 veces)

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

Desconectado kurdo22

  • PIC10
  • *
  • Mensajes: 48
Problemas con una tabla
« en: 04 de Octubre de 2004, 13:33:00 »


    Alguien podria explicarme el funcionamiento de una tabla??

    Se que para una tabla con variables fijas es mejor que este en la ROM, y se utiliza la directiva DT

    Pero si es una tabla con variables que cambian durante el programa es mejor utilizar la RAM con direccionamiento indirecto.


    Ahora lo que no se es como la inicializo, como meto las variables, como la escribo y leo.  

    Lo que querria hacer es una tabla con una serie de datos fijos y  recorrerla comparandola con un dato.

    Si alguien puede darme una pista, donde buscar, informacion, etc... se lo agradeceria un monton

Un saludo

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Problemas con una tabla
« Respuesta #1 en: 04 de Octubre de 2004, 14:57:00 »
Hola

Por los conocimientos que tengo sobre el assembler (que no son muchos...) en el 16F88, se lo siguiente: (un ejemplo by me)
Codigo:

movlw NUMEROTABLA          "Movemos numero de dato

gosub BUSCAR                     "Saltamos a subrutina

... ...

BUSCAR:
movf PCL,W                   "Hace un salto tanto como NUMEROTABLA

retlw b"101"                   "Vuelve de la sub con un dato
retlw b"111"                   "... segun el valor de NUMEROTABLA
... ...                              " Tanto como quieras





No obstante, si manejas mas de 256 datos, precisaras del uso de PCLATH, o usar algun truquillo...

salu2

Desconectado javierjuanero

  • PIC10
  • *
  • Mensajes: 20
RE: Problemas con una tabla
« Respuesta #2 en: 04 de Octubre de 2004, 21:06:00 »
TBLA       ADDWF PCL, F
       RETLW  D"128"
       RETLW  D"131"
       RETLW  D"131"
       RETLW  D"131"
              RETLW  D"131"
       RETLW  D"131"
       RETLW  D"131"
       RETLW  D"159"

Generalmente las tablas son de ese estilo... de tal forma que cuando ud necesite un valor de la tabla carga en W el desplasamiento y llama a la subrutina TBLA que debe estar en las primeras posiciónes de la memoria de programa (lógicamente despues de x04) y no mas allá de 512 si no estoy mal.

De tal manera si quicieramos obtener el último valor de la tabla de arriba hariamos lo siguiente...
      movlw    0x07
      call         TBLA

y despues de esto tendríamos el valor en W


Lo anterio es solo para tablas de valores fijos.. para valores variables usarias la ram y es otro cuento.

Desconectado kurdo22

  • PIC10
  • *
  • Mensajes: 48
RE: Problemas con una tabla
« Respuesta #3 en: 05 de Octubre de 2004, 04:03:00 »

    Muchas gracias, creo que ya le pillado el tema de las tablas en la ROM.

    Seria mucho pedir que alguien me explicara como seria ahora una tabla en RAM .

Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: Problemas con una tabla
« Respuesta #4 en: 15 de Octubre de 2004, 11:05:00 »
Saludos...Las tablas en ram las haces con 2 registros especiales q se yaman INDF y FSR... lo que haces es cargar en FSR el valor que kieres guardar y en INDF la direccion... si vas a yenar una buna porcion de ram lo q tienes q hacer es ir cambiando los valores de FSR y cada vez que los cambias incrementas el INDF... si lo haces como rutina es muy facil!!!.... espero te ayude!!!

Desconectado kurdo22

  • PIC10
  • *
  • Mensajes: 48
RE: Problemas con una tabla
« Respuesta #5 en: 15 de Octubre de 2004, 11:50:00 »


     Pues muchas gracias, he probado tablas en ram y rom y me funcionan perfectamente. Un saludo