Antes de confeccionar el programa que va a controlar la actuación
del interfaz, vamos a analizar el proceso que se debe seguir, que será válido
para cualquier sistema microprocesador que se emplee y a continuación se
describirá un programa tipo escrito en lenguaje ensamblador para el
microprocesador M6800/6802.
En todos los sistemas controlados por microprocesador que parten de una configuración determinada, existe una clara dependencia hardware-software, que condiciona la elaboración del programa. En nuestro caso, partimos de un circuito hardware, como es el de la siguiente figura y pretendemos construir un algoritmo que sea capaz de realizar una serie de operaciones que cumplan las especificaciones determinadas por el circuito hardware.
Esquema del circuito del interfaz universal |
Así pues, tal y como está concebido el
circuito, las tareas que deberá cumplir el programa, son las siguientes:
1. Programación de la unidad de E/S.
2. Cargar el registro de salida de la PIA con el estado que
se desee en las ocho primeras líneas de salida.
3. Activar la señal de validación para retener la
información a la salida.
4. Cargar el registro de salida de la PIA para las
siguientes ocho líneas.
5. Volver al punto 3 si no se han completado las 64 líneas.
6. FIN.
Todo este proceso se representa en la siguiente imagen en forma de
diagrama de flujo.
Diagrama de flujo |
El listado del programa presentado al final muestra cómo programar el interfaz para obtener a la salida de las sesenta y cuatro líneas los estados que previamente han sido almacenados en una tabla llamada TDATOS. Esta tabla contiene los 64 estados (8 posiciones de memoria: de la 0000 a la 0007) y debe ser llenada antes de la ejecución del programa. La primera tarea llevada a cabo por éste, es la configuración de la unidad de E/S PIA cargando los registros de dirección de datos con $FF para que todas sus líneas actúen como salidas y a continuación se cargan los registros de datos con el valor $00.
La programación de las 64 salidas se realiza por acceso
indexado a la tabla de datos, depositando el valor leído en el registro de
salida de la PIA. Una vez hecho esto, se activa la línea de validación del
primer grupo de ocho bits mediante la salida PBO que previamente se ha colocado
al estado 1. Las dos instrucciones NOP tienen por objeto hacer un pequeño
retardo de 4 µseg, que es el tiempo en el que la información será
traspasada de la entrada de los biestables tipo D hasta la salida. Para lograr
retener la información a la salida, debe ponerse la línea de validación a cero
tal y como lo realiza la instrucción CLR PIABD.
La siguiente información se obtiene incrementando la dirección de la tabla de datos. Para que esta salga por las siguientes ocho líneas, hay que activar la siguiente línea de validación. Esta operación se realiza con la instrucción ASL B que desplaza la información contenida en el acumulador B, un bit a la izquierda. Esto significa que si inicialmente su contenido era 0000 0001, después de la operación de desplazamiento será 0000 0010 que, aplicado al registro de salida de la PIA, activará la siguiente línea de validación.
Este proceso se repite hasta haber colocado toda la
información de la tabla en las 64 salidas.
Para la utilización de este interfaz como parte integrante
de un programa que realice otras tareas de control, la inicialización de la PIA
puede incluirse en una subrutina de inicialización más general que programe las
distintas unidades de E/S de que disponga el sistema, mientras que el acceso a
la parte de programación de las 64 salidas se realizará cada vez que desee
cambiarse su estado, bien disponiendo de varias tablas de datos o bien
cambiando cada vez el contenido de ésta.
Si se desea aumentar el tiempo del retardo realizado por las
instrucciones NOP, puede sustituirse éste por una instrucción de salto a subrutina
relativo BSR y disponer una subrutina de retardo, adecuada al tiempo que se
desee.
Aquí damos por finalizada este artículo sobre la programación
de un interfaz universal utilizado con microprocesadores.
En la siguiente publicación vamos a explicar cómo realizar una ampliación de memoria para el módulo MEK 6802 D5E.
No hay comentarios:
Publicar un comentario