468x60

PROGRAMACIÓN DEL INTERFAZ UNIVERSAL UTILIZADO CON MICROPROCESADORES

Una vez construido nuestro interfaz, el siguiente paso que debemos abordar es el de la programación. Aunque ya habíamos explicado que la unión entre éste y el sistema microprocesador podía hacerse con cualquier tipo de unidad de entradas - salidas tipo PIA, PIO o VIA, cada una de éstas requerirá una programación distinta en orden a configurar correctamente la actuación de sus líneas. En nuestro caso, y a modo de ejemplo, la programación se ha hecho para una unidad PIA MC6820 empleando como sistema microprocesador el módulo MEK6802DSE de Motorola.

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.

Escrito por Archie Tecnology
Si te ha gustado esta entrada y te ha sido de utilidad, por favor, ayuda a otros a encontrarnos con un Me Gusta en Facebook, o , un Twitter. Además para que puedas estar informado puntualmente de nuestras novedades puedes hacerte seguidor de este blog y seguirnos en nuestras redes sociales. Muchas gracias por su confianza, que es por lo que trabajamos y hace superarnos día a día.
  ARTÍCULOS RELACIONADOS

No hay comentarios:

Publicar un comentario

Colaboración comercial