TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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?.
-
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
-
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.