Manejo de tablas de datos en lenguaje ensamblador en el microcontrolador 18F2550 utilizando la instrucción retlw.
|
MANEJO DE TABLAS DE DATOS EN EL 18F2550 CON LA INSTRUCCIÓN RETLW: El 18F2550 cuenta con una instrucción especial para el manejo de tablas de datos almacenadas en la memoria de código (instrucción tblrd). Sin embargo, también es compatible con la instrucción retlw utilizada para el mismo fin por los microcontroladores Midrange de la familia 16/.
Supongamos que deseamos crear una tabla de 4 elementos. Y que
estos 4 datos son los caracteres ASCII de las letras H,O,L y A. Para recuperar algún
elemento de la tabla, dentro del programa principal existirá una instrucción de
call que llama a la etiqueta que está al inicio de la tabla, como se muestra
en el listado de abajo.
Una vez que el el contador del programa
queda posicionado al inicio de la tabla, usamos la instrucción addwf PCL,f
para sumar a la parte baja del contador del programa, PCL, un número del 0 al
6, que debe
de estar almacenado en el registro W desde antes de la ejecución de la instrucción
call. Como consecuencia de la ejecución de esta misma instrucción (addwf
PCL,f), la parte alta del contador del programa PCH, se carga con el contenido del
registro PCLATH, según se describe con detalle más abajo, de tal forma que, al final de
la ejecución de la instrucción, el contador del programa queda posicionado apuntando al
elemento deseado de la tabla.
Ahora, mediante la instrucción
retlw (return from subroutine with literal in w),
regresamos al programa principal. El registro w, contiene el dato que aparece a la
derecha de la instrucción (alguno de los códigos ASCII de 'H','O','L' ó 'A'), y los cuales
forman parte de la tabla.
|
EJEMPLO DE NUMERO DE PAGINA | DIRECCIONES DE MEMORIA |
8 | 800-8FF |
9 | 900-9FF |
A | A00-AFF |
B | B00-BFF |
EJEMPLO DE CODIGO PARA PREPARAR EL ACCESO A LA TABLA:
movlw
9
;en este ejemplo, la tabla se encuentra en la página 9.
movwf
PCLATH
;carga el número de página en PCLATH
movlw 6
;debe de inicializarse w con el número de elemento de la tabla.
;el elemento referenciado es el w/2, en este ejemplo es el 3.
call tabla ;aquí se llama a la tabla para regresar con elemento deseado en w
..............
;en ésta línea regresa de la tabla con el dato en w.
..............
ORG 900H ;DIRECCION DEL INICIO DE LA TABLA QUE SE ENCUENTRA EN PÁGINA 9.
tabla:
addwf PCL,f ;ésta instrucción suma a PCL el contenido de w, y carga PCLATH en la parte
;alta del contador del programa.
retlw H ;éste es el elemento 0 de la tabla
retlw
O
retlw
L
retlw
A
Vea aquí un ejemplo completo de un programa realizado para el sistema Bolt 18F2550:
BOLT-MANEJO-DE-TABLAS-LEDS.asm