b selecciona el bit del registro f, (valor de 0 a 7)
INSTRUCCIONES MANEJO DE CONSTANTES:
k es la constante en la instrucción.
INSTRUCCIONES CALL Y GOTO:
k es la dirección inmediata en 11 bits.
14.3 MANEJO DE TABLAS:
Es importante recordar que el microcontrolador 16F628 opera con una arquitectura HARVARD. Lo anterior hace que
el manejo de tablas sea distinto a procesadores con arquitectura VON NEUMANN, en donde la memoria de código y datos es
compartida, y a través de direccionamiento indirecto es posible recuperar los datos de la tabla. En el caso de la arquitectura
Harvard, la tabla se encuentra en la memoria de código (programa) y debe entonces de manejarse como parte del programa
ejecutable. La forma de resolverlo es como se indica en el siguiente ejemplo. La tabla forma parte de una subrutina que en este
ejemplo lleva la etiqueta TABLA.
Supongamos que deseamos crear una tabla de 4 datos. Y que estos 4 datos son los caracteres ASCII de las letras H,O,L
y A. 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, para
sumar a la parte baja del contador del programa, PCL, un número del 1 al 4, que debe de estar almacenado en el registro w desde
antes de la ejecución de la instrucción de "call". Al ejecutarse dicha instrucción (addwf), el contador del programa queda
posicionado en la localidad deseada de la tabla.
Ahora, mediante la instrucción "retlw" (return from subroutine with literal in w), regresamos al programa principal,
pero el registro W, contiene ahora el dato que aparece a la derecha de la instrucción (los códigos ASCII de la H,O,L ó A), y los
cuales forman parte de la tabla.
Es decir que el registro W contiene, antes de la instrucción de "call", el desplazamiento (offset) deseado sobre la
dirección de inicio de la tabla, (que en el ejemplo, puede ser un valor del 1 a 4). Aquí es muy importante señalar que en la
instrucción de suma (addwf), se está afectando la parte baja PCL (8 bits) y también la alta (3 bits) del contador del programa, la
cual se carga con el contenido de PCLATH. Es necesario entonces cargar previamente también el registro PCLATH para que
contenga el valor de la página en donde se encuentra la tabla, que pueden ser los valores entre 0 ...7.
.......
movlw 1
movw,f PCLATH
.............
call
..............
..............
TABLA addwf PCL
retlw
retlw
retlw
retlw
15. Puesta en marcha:
PASO 1: REVISION DE COMPONENTES Y PRUEBA INICIAL DE LA TARJETA EDUPIC:
Revise por favor que el kit incluya lo indicado en la caja. Para poder usar el disco de aplicación, necesita una
computadora con Windows 98, XP, ó Vista, con una unidad lectora de CD, y un puerto serial con conector DB9 (no cable de interfaz
USB-Serial). Mueva el selector del eliminador de baterías a 6 ó 7.5 volts y conéctelo a la tarjeta EDUPIC.
13
13
;aquí se encuentra el programa principal
;en este ejemplo, la tabla se encuentra en la página 1 de la memoria de código.
;carga el número de página en PCLATH
;en esta zona del programa, debe de inicializarse W con el desplazamiento.
TABLA
;en ésta línea regresa la subrutina TABLA con el dato de la tabla en W.
;ésta instrucción suma a PCL, el contenido de w, y carga PCLATH en la parte al
;ta del contador del programa.
'H'
;regresa de la subrutina con el código ASCII de alguno de los elementos de
'O'
;la tabla almacenado en w.
'L'
'A'
EDUPIC 16F628 Punto Flotante, S.A. 2010
19
OPCODE
b (bit)
8
7
OPCODE
11 10
OPCODE
k (literal)
f (file register)
0
k (literal)
0