TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jaime_cr en 13 de Julio de 2004, 18:59:00

Título: directiva DT
Publicado por: jaime_cr en 13 de Julio de 2004, 18:59:00
 Hola alguien sabe explicarme mas o menos como funciona la directiva DT, en el manual dice que es para definir tablas, pues muy bien, pero no he entendido como hago para accesar cada uno de los campos de la tabla, por ejemplo:

Tabla1 DT "Un mensaje", 0

si yo hago call Tabla1, esto me retorna "U" en el W, pero ahora como hago para obtener los siguientes caracteres?.
Título: RE: directiva DT
Publicado por: todopic en 13 de Julio de 2004, 21:42:00
Hola, se emplea igual que una tabla formada por RETorne con Literal en W  retlw
seria por ejemplo

TABLA   ADDWF   PCL,F   
   DT "O123456789"   

en este caso te iria mostrando los valores de 0 a 9

Norberto
Título: RE: directiva DT
Publicado por: adrian2a1 en 14 de Julio de 2004, 09:42:00
Para simplificar el uso de las instrucciones retlw  el ensamblador MPASM facilita la directiva  DT  (Define Tabla) que sustituye el empleo repetitivo de muchas instrucciones  retlw. Su sintaxis es:

DT <expr> [, <expr>, …., <expr>]

Esta directiva genera durante la fase de ensamblado instrucciones retlw, una instrucción por cada  <expr>. Cada carácter de una cadena es almacenado en su propia instrucción  retlw.
Ejemplo:

   DT "MaR", 0x10, .15

Esta directiva genera las instrucciones:

   retlw    0x4D   ; (‘M’ en ASCII)
   retlw    0x61   ; (‘a’ en ASCII)
   retlw    0x52   ; (‘R’ en ASCII)
   retlw    0x10   ; (16 en decimal)
   retlw    0x0F   ; (15 en decimal)


Debes tener cuidado de situar todas las directivas DT dentro de las primeras 256 posiciones del programa para no tener problemas, de esta forma:


ORG  0x00
goto  Inicio

ORG 0x04
goto  Interrupcion    ; Aquí el salto a la subrutina de atención a la interrupción

Tabla1
addwf   PCL,F
DT .....           ;Aquí las directivas DT

Tabla2
addwf   PCL,F
DT .......

Inicio            ; Aquí el inicio real del programa

.....

movlw PosicionTal       ; Aquí recoge los valores de la tabla.
call Tabla1 ....
......

movlw PosicionCual
call Tabla2
....


Espero haberte ayudado.

Adrian.