79
UNIVERSIDAD AUT~NOMA METROPOLITANA IZTAPALAPA PROYECTO DE INVESTIGACI~N: Sistema'maestro esclavo 80188 - 8031 para aplicaciones - generales de control. /y Rojas García Víctor G. Cortés León Héctor Sinodal: Ing. Gonzalo Duch,.i Saiichez mayo 1998. cc)

Sistema'maestro esclavo 80188 8031 para aplicaciones

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistema'maestro esclavo 80188 8031 para aplicaciones

UNIVERSIDAD A U T ~ N O M A METROPOLITANA IZTAPALAPA

PROYECTO DE INVESTIGACI~N:

Sistema'maestro esclavo 80188 - 8031 para aplicaciones - generales de control.

/y Rojas García Víctor G. Cortés León Héctor

Sinodal: Ing. Gonzalo Duch,.i Saiichez

mayo 1998. cc)

Page 2: Sistema'maestro esclavo 80188 8031 para aplicaciones

ÍNDICE

Introducción, 1

La tarjeta de experimentación para microprocesador 80 188,4

El sistema mínimo con microprocesador 80 188,4

El Microprocesador 80188 de Intel, 7 La Unidad de Ejecución, 7

Los registros de propósito general, 7 Los registros índice apuntadores, 8 La unidad lógica y aritmética, 8 El registro de banderas, 8

Las banderas de estado, 8 Las banderas de control, 9

La unidad de interface del canal, 10 Los registros de segmento, 10 El sumador dedicado de 20 bits, 11 El apuntador de instrucciones, 11

Interface entre el sistema mínimo con el microcontrolador 803 1, 12

Breve descripción del sistema, 13

Descripción de los elementos principales de la interface, 14 Microprocesador 80 1 88, 14 microcontrolador 803 1, 15

Interacción entre el sistema mínimo y el microcontrolador, 16 Comandos y Estados, 17

Comandos, 17 Interrupción (bit7), 18 Operaciones (bits 3 a O), 18

Interrupción (bit O), 19 Operación de DMA (bit 1), 20 Error (bit 5),20 Evento (bits 4 a 2), 20

Estados, 19

I

Page 3: Sistema'maestro esclavo 80188 8031 para aplicaciones

Descripción de la implementación, 2 1 Reset, 21 Envío de Comandos, 21 Transferencias de DMA, 22 Lectura del registro de estado, 23

Conclusiones, 25

Bibliografía, 26

Apendice A Listados de Programas,

Programa para recibir archivos ejecutables en la UAM-188 (desempac . asm), Programa para descargar desde una PC un archivo ejecutable (descarga.c),

Programa controlador de motor de pasos para el MC 803 1 (ctrlmot.asm),

Programa de interface para controlar un motor de pasos, para la UAM-188 (intermot.asm),

Page 4: Sistema'maestro esclavo 80188 8031 para aplicaciones

INTRODUCCION

En un mundo cada vez mas automatizado* , es importante para los estudiantes de Ingeniería Electrónica conocer los dispositivos electrónicos y tecnologías utilizadas en dicha automatización. De esta manera, juzgamos importante el profundizar en el estudio y conocimiento de microcircuitos (MC) de alta y muy alta escala de integración (LSI y VLSI, respectivamente), y explorar algunas de las aplicaciones prácticas que estos dispositivos pueden tener en la actualidad.

El presente proyecto tiene como objetivo el realizar la combinación entre un sistema mínimo basado en el microprocesador &O 188 de Intel" (la plataforma mas utilizada en computadoras personales en todo el mundo actualmente) y un microcontrolador de la misma familia (80C3 1).

Sistemas que realizan procesamientos de entraddsalida y comunicación serial de datos requieren un tratamiento muy intensivo en cuanto a la programación.

En muchos sistemas convencionales, la unidad central de procesamiento (microprocesador) realiza la mayoría de las comunicaciones y las operaciones de entraddsalida, en adición a las tareas principales, resultando así en un sistema lento e ineficiente.

Una solución a este problema sería dividir las tareas entre procesadores para incrementar la eficiencia en la programación y el uso de los recursos del sistema mínimo. En el presente proyecto se propone como solución la combinación entre el microprocesador 80 188 y el microcontrolador 80C3 1 de Intel". Así, contaremos con un sistema donde el microprocesador 80188 contará con el poder de procesamiento y manipulación de la memoria, mientras que el microcontrolador proveerá al sistema de la inteligencia para las operaciones de entrada y salida y la comunicación de datos.

* Los autores del presente reporte hemos reflexionado acerca de las implicaciones sociales de la cada vez mas creciente automatización de las labores que anteriormente correspondían a las manos e inteligencia de los hombres. Pensamos en el creciente desempleo que puede generar el que las labores otrora de los humanos, sean ahora delegadas a las mgquinas electrónicas, si la nueva tecnología no es aplicada sabiamente. Sin embargo, confiamos en que la ética y la razón llevaran a los hacedores de conocimiento a contribuir en la mejor aplicación de las nuevas tecnologías por el bien de la especie humana. Nosotros, bajo el original espíritu universitario, pondremos nuestro granito de arena.. .

1

Page 5: Sistema'maestro esclavo 80188 8031 para aplicaciones

En el proyecto de ingeniería electrónica I se ,construyó el sistema mínimo basado en el microprocesador 80188, el cual cuenta con la capacidad de manejar 8 Kbytes de memoria ROM y 8 Kbytes de memoria RAM, el uso de un microcircuito controlador de teclado 8279, el empleo de un desplegado de cristal líquido, así como de una UART (8250) para la comunicación serial del sistema; adicionalmente se realizó la implementación para el manejo de 16 Kbytes de memoria dinámica (DRAM), incrementando así el manejo de memoria RAM.

Para la implantación del sistema mínimo se recurrió a la téciiica de soldadura sobre tarjeta de circuito impreso. La tarjeta utilizada fue elaborada por el área de Ing. Biomédica del Departamento de Ingeniería Electrónica de la U.A.M. Iztapalapa, y es utilizada comúnmente en los cursos de Sistemas Digitales que en la Universidad se imparten. Posteriormente haremos una descripción detallada de dicha tarjeta de experimentación.

En el proyecto de Ingeniería Electrónica 11 se construyó una interfaz lógica que permite la interconexión y acoplamiento entre el microprocesador 80 188 y el microcontrolador 803 1 , utilizando una configuración de inaestro- esclavo. De esta manera se obtuvo un nuevo sistema extendido que puede ser utilizado para diversas aplicaciones de control, comunicación de bajo nivel y/o procesamiento de entrada salida, y que al mismo tiempo cuenta con el poder de procesamiento para el manejo de grandes programas como puede ser el de una interfaz amigable para el usuario que requiera la utilización de teclado y di sp 1 ay.

Adicionalmente se encontró conveniente elaborar una utilería de software que permite transmitir, vía el puerto serial controlado por el microprocesador, programas ejecutables (reconocibles por el MC 80 1 88), desde una computadora personal hacia la memoria RAM del sistema. Finalizada la transferencia del programa ejecutable, el MC 80 188 puede pasar a ejecutar el programa recién instalado en RAM. De esta manera, se cuenta con un sistema que puede ser transportable, utilizando las baterías adecuadas, y con la gran posibilidad de elaborar variados programas de interfaz, para diversas aplicaciones de control, sin tener que recurrir al grabado de memorias ROM.

2

Page 6: Sistema'maestro esclavo 80188 8031 para aplicaciones

La utilería mencionada consta de dos programas:

0 Un programa elaborado en lenguaje C de alto nivel que permite abrir un archivo ejecutable y enviarlo, vía el puerto serial de una computadora personal, hacia el puerto serial del sistema maestro-esclavo 80 188-803 1 . Un programa elaborado en lenguaje ensamblador de bajo nivel y que se instala en la memoria ROM del sistema, inicializando el puerto serial, y encargándose de recibir el programa ejecutable enviado desde la PC y de instalarlo en memoria RAM. También se encarga este programa de transferir el control del microprocesador 80 188 de memoria ROM a memoria RAM (al programa ejecutable recién recibido).

Para la prueba final del sistema se escogió una aplicación de control de un motor de pasos. Un motor de este tipo puede ser manipulado para girar en uno u otro sentido, cambiar de velocidad de giro o producir una serie de movimientos muy precisos. Este tipo de control sobre motores de paso es muy utilizado en aparatos de gran precisión como pueden ser los reproductores de alta fidelidad de cintas magnéticas, reproductores de discos compactos, ploters, impresoras, etc.

3

Page 7: Sistema'maestro esclavo 80188 8031 para aplicaciones

LA TARJETA DE EXPERIMENTACION PARA MICROPROCESADOR 80188.

La tarjeta de circuito impreso para el montaje del sistema mínimo basado en el microprocesador 80188, utilizada en el proyecto de ingeniería, es un diseño elaborado en el paquete CAD SMART-WORKTM. Está construida con circuito impreso en ambas caras sin el proceso de trough-hole. De está manera, fue necesario iniciar la preparación de la tarjeta realizando manualmente el proceso de Trough-hole con el fin de interconectar ambas caras de la misma.

La tarjeta impresa es la parte principal para poder construir un sistema mínimo y que se diseñó pensando en los siguientes'objetivos:

Utilizar en aplicaciones específicas un microprocesador de la familia 8OX8X y los periféricos mas utilizados en las tarjetas madres de las computadoras personales. Desarrollar aplicaciones que sean trasladables a una computadora personal del tipo IBM y compatibles. Utilizar un microprocesador con varios periféricos integrados a fin de conocer las ventajas que tienen en el diseño y construcción de prototipos el utilizar dispositivos electrónicos de muy alta escala de integración.

EL SISTEMA MINIM0 CON MICROPROCESADOR 80188.

En una época en que los sistemas electrónicos tienden a la miniaturización con fines de transportabilidad, comodidad y fácil manejo, es necesario escoger en el diseño electrónico dispositivos VLSI (Muy Alta Escala de Integración). De esta manera, en el diseño del sistema mínimo se seleccionó un microprocesador 80188 de Intel que además de la Unidad Central de Procesamiento incluye los siguientes periféricos:

0 Un generador de reloj hasta una frecuencia de 8 Mhz. Dos canales independientes de Acceso Directo a Memoria (DMA). Un controlador de interrupciones programable. Tres temporizadores programables de 16 bits. Lógica programable para señales de habilitación tanto para memoria como para el espacio de entradaísalida.

4

Page 8: Sistema'maestro esclavo 80188 8031 para aplicaciones

Adicionalmente el microprocesador 80 1 88 proporciona, de manera simultánea, las señales de control en modo mínimo y modo máximo, dando al usuario la posibilidad de extender el sistema de acuerdo a sus propias necesidades.

El inicroprocesador 801 88 es un rnicrocircuito de 68 terminales y que se encuentra disponible en varias presentaciones de encapsulado. En este caso se seleccionó la presentación PLCC (Plastic Lead Chip Carrier), que es un MC de forma cuadrada (2.5 cm. por lado aproximadamente) con 17 terminales por lado y que se monta sobre una base. Se seleccionó esta presentación ya que es la que presenta, con las herramientas actuales, las mayores facilidades en el diseño y construcción de un circuito impreso. Adicionalmente, por las mejoras en su diseño, el empleo de un microprocesador 80188, permitió reducir considerablemente el número de microcircuitos adicionales.

Los periféricos integrados en el 801 88 se controlan mediante registros que forman parte de un bloque de control interno mapeado en las últimas doscientas cincuenta y seis localidades del espacio de entradaísalida (E/S). Dicho bloque de control tiene la posibilidad de ser reubicado, tanto en el inisino espacio de E/S, como en espacio de memoria. No se requiere de ninguna instrucción especial para tener acceso a los registros del bloque de control y pueden ser accesados en cualquier momento que el programador o usuario así lo requieran.

Además del microprocesador, la tarjeta de experimentación cuenta con las conexiones necesarias para poder integrar los siguientes componentes:

Una memoria ROM de 8 Kbytes (2764). Una memoria RAM estática de 8 Kbytes (3234).

0 Controlador de teclado y despliegue (8279). Controlador de comunicación serial, UART (8250). Cristal de cuarzo de 16 Mhz.

5

Page 9: Sistema'maestro esclavo 80188 8031 para aplicaciones

La tarjeta de experimentación, para mayor comodidad y flexibilidad, solo contiene los componentes básicos del sistema mínimo; sin embargo, se adicionaron conectores tipo peine, para poder acoplar teclado y display, y además una “ranura”, con una configuración de canal PC-XT, que permita agregar, en una tarjeta adicional de propósito general, la circuitería específica que requiera el usuario. En dicha “ranura” quedan a disposición del usuario todas las señales necesarias para realizar el acoplamiento con la tarjeta adicional de propósito general que pueden ser de teclado despliegue, adquisición, comunicación, etc.

ROM 27C64

Se presenta a continuación un diagrama a bloques del sistema iníniino con microprocesador 80 1 88.

RAM 62C64

- 80188

16Mhz

74LS373

UART 8250 Q ECLADO 8279

ii TECLADO

DIAGRAMA A BLOQUES DE SISTEMA MINIM0 CON MICROPROCESADOR 80 188.

6

Page 10: Sistema'maestro esclavo 80188 8031 para aplicaciones

EL MICROPROCESADOR 80188 DE INTEL.

La unidad central de procesamiento (CPU) del microprocesador 80 188 es prácticamente la misma que la del 8086 o la del 8088; sin embargo, el 801 88 tiene la particularidad el incorporar dos unidades independientes de procesamiento: una es la Unidad de Ejecución (EU), y la segunda es la Unidad de Interface del Canal (BIU). La EU decodifica y ejecuta las instrucciones y la BIU realiza todas las operaciones del canal del sistema como son los ciclos de recuperación de código (ciclos de FETCH), lectura y escritura de datos. Las dos unidades de la CPU pueden trabajar de manera independiente y paralela, que es una de las características de los microprocesadores de la tercera generación. Esta particularidad hace al 80 188 un' microprocesador mas veloz que sus predecesores pues, en la mayor parte de la ejecución de un programa, la unidad de ejecución tendrá disponible, en una cola de instrucciones que la BIU se encarga de llenar, el código de la siguiente instrucción a ejecutar.

L a Unidad de Ejecución.

La EU es la responsable de decodificar y ejecutar todas las instrucciones, básicamente está constituida por los cuatro registros de propósito general, dos registros base, dos registros apuntadores, un registro de banderas y una Unidad Aritmética Lógica (ALU). Debido a que la EU no tiene conexión directa con el canal del sistema, obtiene las instrucciones de una cola de cuatro bytes que forma parte de la BIU. Cuando una instrucción requiere accesar a la memoria o a un periférico, la BIU ejecuta los ciclos de canal necesarios ya sea para leer o escribir los datos.

Los registros de propósito general.

Se trata de los registros denominados : AX, BX, CX, DX y pueden ser utilizados completos o bien dividirse en una parte alta: AH, BH, CH, DH y en una parte baja: AL, BL, CL, DL. Es decir, que cada registro puede utilizarse como uno de 16 bits o como dos de 8 bits. Cualquiera de los registro sirve como acumulador en las operaciones aritméticas y lógicas. Sin embargo en algunas instrucciones es necesario utilizar ciertos registros específicos.

7

Page 11: Sistema'maestro esclavo 80188 8031 para aplicaciones

Los registro indice apuntadores.

Los registros BP, SP, SI y DI solo pueden ser utilizados coinpletos, es decir como registros de 16 bits. BP realiza la función de apuntador base en el segmento de pila y para varias formas de direccionamiento. SP es el apuntador del segmento de pila. SI es un apuntador a un arreglo fuente de datos y DI es un apuntador a un arreglo destino de datos. Los cuatro registros pueden ser utilizados en los diversos modos de dirreccionamiento del microgrocesador.

La Unidad lógica y aritmética.

En esta unidad se realizan todas las operaciones lógicas y aritméticas que puede ejecutar el microprocesador. El resultado de estas operaciones afecta a los diferentes bits del registro de banderas, lo cual resulta de utilidad en la ejecución de instrucciones condicionales de transferencia del programa.

El registro de banderas.

Este registro posee seis banderas de estado y tres banderas de control. Las banderas de estado reflejan el resultado de una operación aritmética o lógica y permiten al programa cambiar la secuencia de su ejecución, dependiendo del valor de alguna de dichas banderas.

Las banderas de Estado.

Las banderas de estados son las que se describen a continuación:

Bandera de Acarreo (CF). Cuando se activa esta bandera, en alto, indica que ocurrió un acarreo del bit mas significativo como resultado de una operación lógica o aritmética.

Bandera de Paridad (PF). Cuando se activa esta bandera, en alto, indica que el resultado de una operación tiene paridad par. Este hecho es utilizado para el chequeo de errores y solo se realiza en los 8 bits menos significativos.

Bandera de Acarreo Auxiliar (AF). Cuando se activa esta bandera, en alto, indica que ocurrió un acarreo del bit 3 al bit 4 en el registro destino. Esta bandera es utilizada por las instrucciones de ajuste decimal y ajuste ascii.

8

Page 12: Sistema'maestro esclavo 80188 8031 para aplicaciones

Bandera de Cero (ZF). Cuando se activa esta bandera, en alto, indica que el resultado de una operación aritmética o lógica fue cero.

Bandera de Signo (SF). Cuando se activa esta bandera, en alto, indica que el resultado de una operación aritmética es negativo. Las instrucciones que afectan a esta bandera se ejecutan en aritmética de complemento a 2, en las que el bit mas significativo indica el signo.

Bandera de Sobreflujo (OF). Cuando esta bandera se activa, en alto, indica que el resultado de una operación excede en tamaño al del registro destino.

Las banderas de control.

Las banderas de control son las que se describen a continuación:

Bandera de Trampa (TF). Cuando esta bandera se activa, en alto, el procesador pasa a ejecutar instrucción por instrucción con fines de depuración. Para poder activar esta bandera es necesario realizar un enmascaramiento sobre el registro de banderas.

Bandera de Habilitación de Interrupción. Cuando se activa esta bandera, en alto, se habilitan las interrupciones enmascarables que están dedicadas a los periféricos del sistema.

Bandera de Dirección. Cuando esta bandera se activa, en alto, las instrucciones de cadenas ejecutan un autodecremento de las direcciones fuente y destino. En otro caso, cuando la bandera es cero, las instrucciones se ejecutan con un incremento de las direcciones fuente y destino.

9

Page 13: Sistema'maestro esclavo 80188 8031 para aplicaciones

La Unidad de Interface del Canal.

La unidad de interface del canal (BIU) está constituida de cuatro registros de segmento, registros de comunicación interna, un apuntador de instrucciones, una cola de cuatro bytes, la lógica de control del canal y un sumador dedicado para formar la dirección fisica. La BIU se encarga de interactuar directamente con el canal del sistema, ejecutando todos los ciclos necesarios, y permite a la unidad de ejecución obtener el código, operandos y datos que requiere. De esta manera, mientras la unidad de ejecución decodifica y ejecuta una instrucción, la BIU ejecuta un ciclo de lectura, almacenando al mismo tiempo, en la cola, el byte contenido en la siguiente localidad de memoria. Es decir, que en un alto porcentaje del programa, la EU tiene disponible, en la cola de cuatro bytes, el código de la siguiente instrucción a ejecutar. Es así que se obtiene una mayor velocidad en la ejecución de los programas, pues la EU y la BIU trabajan de manera paralela.

Los registros de segmento.

Para poder direccionar al espacio de memoria del sistema, que para la familia 8086/8088 es de hasta 1 Mbyte, divididos en segmentos de 64 Kbytes, se recurre al uso de registros de segmento. Los registros de segmento disponibles son los siguientes:

Segmento de Código (CS). Contiene la dirección del segmento de 64 Kbytes donde se encuentra el programa en ejecución. Segmento de Datos (DS). Contiene la dirección,de un segmento de ineinoria que contenga datos de programa. Segmento Extra (ES). Usualmente es utilizado como un segmento de datos. Segmento de Pila (SS). Contiene la dirección del segmento de memoria donde se coloca la pila.

Hemos mencionado que el 80188 puede direccionar hasta 1 Mbyte de memoria, para lo cual son necesarios 20 bits de dirección; sin embargo, ni la EU ni la BIU contienen algún registro de 20 bits, por lo cual es necesario contar con un mecanismo para obtener la direccion de 20 bits y de esto se encarga el sumador dedicado que se describe a continuación.

10

Page 14: Sistema'maestro esclavo 80188 8031 para aplicaciones

El sumador dedicado de 20 bits.

La dirección fisica de memoria la forma el sumador dedicado contenido en la BIU. Para esto, hace uso del registro de segmento, mas un desplazamiento dado por el apuntador de instrucciones (IP). Para entender mejor el funcionamiento del sumador dedicado damos un ejemplo: en la inicialización, el 80188 comienza ejecutando el código contenido en la dirección FFFFOH. En este caso el contenido de todos los registros del 80188 es OOOOH, con excepción del CS que se inicializa en FFFFH. La dirección de 20 bits se forma en el sumador dedicado mediante la suma de CS, multiplicado por 16, mas el desplazamiento, esto es:

CS X 16 FFFFH X 16 = FFFFOH

IP OOOOH +

Dirección + FFFFOH .

El apuntador de instrucciones.

El registro apuntador de instrucciones (IP) es de 16 bits y siempre apunta a la dirección de la siguiente instrucción. Este registro no puede ser accesado directamente por alguna instrucción. Sin embargo, de manera indirecta, existe la posibilidad de cambiar su valor, guardar su valor e incluso sacarlo del segmento de pila.

11

Page 15: Sistema'maestro esclavo 80188 8031 para aplicaciones

INTERFACE ENTRE EL SISTEMA MÍNIMO CON EL MICROCONTROLADOR 8031

Sistemas que requieren procesamiento de entradaísalida y transmisión serial de datos necesitan un tratamiento muy intensivo referente a la programación. Este tipo de tareas consumen una gran cantidad de recursos e inteligencia, de tal suerte que, en varios sistemas convencionales, en adición a rutinas esenciales todas estas tareas son realizadas por la unidad central de procesamiento, provocando con ello sistemas lentos e ineficientes.

En un sistema ideal, la labores son divididas entre procesadores para incrementar el poder y flexibilidad de los recursos. Una solución interesante es la combinación entre el sistema mínimo basado en el microprocesador 80188 y el microcontrolador 803 1. En una combinación como esta, el microprocesador provee la inteligencia del sistema con su poder de procesamiento, mientras el microcontrolador realiza las fiinciones de entradaísalida. De esta forma el sistema no se limita al solo procesamiento del inicroprocesador, sino que mientras el microprocesador realiza ciertas tareas de proceso, el microcontrolador le ayuda coil el trabajo, llevando a cabo labores que demandarían tiempo y esfuerzo al microprocesador.

Este trabajo describe un método alterno para realizar la interface entre un microprocesador como el 801 88 y un microcontrolador como el 803 1. El circuito de interface se muestra en la Figura 1 , el cual puede realizarse con un dispositivo de lógica programable o con un arreglo de compuertas. Ambos procesadores trabajaran asíncronamente y a distintas velocidades. Con esta técnica, la transferencia de datos a 200 Kbyrtes por segundo puede lograrse entre el microcontrolador trabajando a 12MHz y el microprocesador trabajando a 8mhz.

12

Page 16: Sistema'maestro esclavo 80188 8031 para aplicaciones

BREVE DESCRIPCI~N DEL SISTEMA

Para llevar a cabo la implementaron de la interface entre el sistema mínimo y el microcontrolador existen tres configuraciones:

1) PILA (FIFO) 2) PUERTO DUAL (DPRAM) 3) MAESTROESCLAVO

En esta descripción no se discutirán las dos primeras configuraciones, por ser muy caras en cuanto a los recursos que demandan y a la complejidad para llevar a cabo su implementación, por sus bondades en cuanto al costo y a la complejidad de impleinentación, solo se mencionara la tercera configuración.

En la configuración maestro/esclavo el sistema mínimo trata al microcontrolador como un periférico mas, como un circuito con un bus de datos de 8 bits, y sin líneas de dirección. (ver Figura 1). El sistema mínimo puede leer estados de operación, y enviar comandos al microcontrolador en cualquier momento. De esta forma, el microcontrolador, se convierte en esclavo del microprocesador, mientras que el microprocesador disminuye así su carga de trabajo y conserva su poder de procesamiento para otras tareas.

Con este esquema, una de las potenciales ventajas que se tienen es que no es necesario estar programando en ensamblador para el microcontrolador cada vez que se requiera realizar una aplicación (esto es si se tienen operaciones básicas muy bien definidas para el microcontrolador). Con programar una vez las funciones que realizara el microcontrolador, el diseñador se tendrá que preocupar por solo mandar los comandos adecuados a la interface, y el resto lo hará el microcontrolador. Incluso personas ajenas al diseño solo tendrán que saber que comandos enviar para llevar a cabo cierta función, mientras que la manera en que se programa al microcontrolador (direccionamientos, instrucciones lógicas y aritméticas, etc.,) estará oculta para sus ojos, logrando con esto cierta abstracción.

13

Page 17: Sistema'maestro esclavo 80188 8031 para aplicaciones

DESCRIPCI~N DE LOS ELEMENTOS PRINCIPALES DE LA INTERFACE

Esta parte describe brevemente las características mas importantes de el microprocesador 80 1 88 y el microcontorlador 803 1. Para mas información acerca de estos componentes el lector puede referirse a los manuales de microcontroladores y a los manuales de componentes de microsisteinas de Intel. Para el caso del microprocesador, en los capítulos llamados: "SISTEMA MINIM0 CON MICROPROCESADOR 801 88 y EL MICROPROCESADOR 80188 DE INTEL" se tiene mas información. Si le son familiares estos componentes puede evitar la lectura de la siguiente descripción.

Microprocesador 80188

El 80188 es un procesador de 8-bits' comúnmente usado para aplicaciones de control, y básicamente tiene el mismo conjunto de instrucciones que su antecesor el 8088. El 80188 puede accesar hasta lMbyte de ineinoria y ejecutar instrucciones mas rápidamente que el 8088. Con una velocidad de selección de 8,lO y 12 Mhz este microprocesador es muy usado para tareas de control.

Entre sus atributos, tiene integrado un controlador de DMA con dos canales que pueden ser compartidos por miiltiples periféricos. Cada canal es capaz de transferir datos hasta 1 Mbyte de por segundo a 8Mliz. Este controlador de DMA puede ser programado para realizar una transferencia de un bloque de datos, transferencia tipo "ráfaga", y transferencias para intervalos de tiempo. También puede transferir datos por peticiones externas.

Junto con el controlador de DMA, el 80 188 cuenta con un controlador de interrupciones integrado, el que pude responder a fuentes internas y externas de interrupción, así como a peticiones de interrupción' de temporizadores y canales de DMA. El controlador de interrupciones puede ser configurado para generar direcciones de vectores de interrupción internas, tal como sucede con los microcontroladores o puede ser configurado para interrupciones externas como el popular controlador de interrupciones 8259.

14

Page 18: Sistema'maestro esclavo 80188 8031 para aplicaciones

El controlador de interrupciones puede ser configurado para ser un controlador esclavo de un controlador de interrupciones externo o puede ser maestro para uno o dos 8259’s cada uno de los cuales puede controlar a ocho 8259’s. Cuando se configura en la forma anteriormente descrita (maestro) puede soportar hasta 128 interrupciones externas.

Tres temporizadores son integrados al microprocesador en un chip. Los dos primeros temporizadores (O y 1) pueden ser configurados para ser contadores de 16 bits, o como contadores de eventos externos. Si se configuran como temporizadores, pueden ser activados por software o por un evento externo. Esos temporizadores tienen una terminal de salida, la cual presenta transiciones cada vez que uno de los temporizadores llega a una cuenta máxima, de tal forma que esa terminal externa puede ser usada para generar seííales lógicas. El teinporizador 2 es interno y no tiene terminal de salida, y puede ser usado como un preescalador para los otros temporizadores, así como también puede ser utilizado para generar peticiones de DMA al controlador de DMA.

Gracias a estas facilidades es que la lógica externa para construir un sistema mínimo se ve reducida drásticamente cuando se usan chips como estos.

Microcontrolador 8031

Sin tantas facilidades integradas, ni tan versátil, el 803 1 es un procesador de 8 bits, el cual puede accesar un espacio de memoria de 64 Kbytes. De forma un tanto extraña este procesador tiene dos espacios de memoria cada uno de 64Kbytes, el primero es destinado a memoria de programa (ROM) y el otro a datos (RAM).

Este micocontrolador cuenta con 4 puertos, cada uno de 8 bits, los cuales proporcionan 32 líneas de entradaísalida. Puesto que este microcontrolador no tiene terminales dedicadas para direcciones ni datos, es que se utilizan 2 puertos para servir como líneas multiplexadas de direcciones y datos.

15

Page 19: Sistema'maestro esclavo 80188 8031 para aplicaciones

A diferencia de otros miembros de su familia, este microcontrolador no tiene memoria de programa interna, por lo que necesariamente accesa las instrucciones externamente, cuenta con una memoria RAM interna de 128 bytes, los cuales pueden ser expandidos a 64Kbytes con ayuda de memoria externa.

Este procesador tiene integrado un controlador de interrupciones el cual solo soporta 5 interrupciones con 2 niveles de prioridad. También se tienen presentes dos temporizadores que pueden ser configurados como contadores de 8 o16 bits. Finalmente el 8031 cuenta con un, canal serial completamente bidireccional el cual proporciona la comunicación del microcontrolador con el mundo exterior.

INTERACCI~N ENTRE EL SISTEMA MÍNIMO Y EL MICROCONTROLADOR.

El sistema mínimo basado en el microprocesador 80 188 se comunica con de el microcontrolador atraves del sistema de memoria y de los registros

ComandolDato y de Estado.

Toda la lógica que “une” al sistema mínimo con el microcontrolador puede ser visto como una “caja negra”, como se indica en diagrama de la Figura 1 mostrada anteriormente, donde el bloque de chip de interface puede ser incluso un arreglo de compuertas o un circuito programable.

Las líneas de Chip select (CS) y de intekupción son usadas para la comunicación entre el microcontrolador y el sistema. La interrupción la utiliza el microcontrolador para atraer la atención del 80188, mientras que la línea de Chip select es usada por el 80188 para atraer la atención del microcontrolador hacia un nuevo comando.

Existen 2 tipos de transferencias en el bus de datos: CoinaiidoíEstado y transferencia de Datos. Las transferencias de CoinandoEstado siempre son realizadas por el microprocesador. Transferencias de Datos son requeridas por el microcontrolador y son llevadas a cabo por el controlador de DMA del microprocesador .

16

Page 20: Sistema'maestro esclavo 80188 8031 para aplicaciones

El 80 188 escribe un comando usando las líneas CS y WR e interrumpe al microcontrolador. Una vez interrumpido el microcontrolador realiza la lectura del comando, lo decodifica y realiza las acciones asociadas con él, en la terminación de sus actividades el microcontrolador reporta los resultados y los escribe en el registro de Estado lo que conduce a una interrupción al microprocesador 80 1 88, este cuando es interrumpido realiza la lectura del registro de Estado utilizando las líneas CS y RD y elimina la fuente de interrupción.

Cualquier dato o parámetro asociado con los comandos, si es que se necesitan, son transferidos entre el sistema de memoria y el microcontrolador usando Dh4A. Cuando el microcontrolador requiere acceso a la memoria para una transferencia de datos o parámetros, activa la línea de petición de DMA de el 80188 para que se lleve a cabo el proceso de transferencia. El 80188 prepara un bloque de datos en memoria, después se programa al controlador de DMA para transferir dicho bloque de datos y finalmente se transfiere.

COMANDOS Y ESTADOS

Esta parte especifica el formato de los comandos enviados al microcontrolador y la forma de los estados reportados por este en la completación de un evento. Estas definiciones están hechas en base a la aplicación que se considero dar al microcontrolador (control de un motor de pasos), si se quiere, se puede modificar la forma de estos comandos según la aplicación que se le quiera dar al microcontrolador.

Comandos

Un comando es proporcionado al microcontrolador, escribiéndolo en el registro ComandoDato e interrumpiendo al microcontrolador. El comando

puede ser proporcionado en cualquier momento, pero en caso de que no pueda ser aceptado, la operación es tratada como una instrucción NOP (no operar) y será ignorada. (aun cuando el microcontrolador haya realizado la decodificacion del comando).

17

Page 21: Sistema'maestro esclavo 80188 8031 para aplicaciones

Formato:

7 6 5 4 3 2 1 0

Interrupción (Bit 7)

El bit 7 INT, si se pone en alto junto a la primer linea de chip que va a la interface , produce una interrupción por hardware hacia el 803 1. Este es el único modo de interrumpir al microcontrolador, puesto que en el estado de reset este bit es O.

Operaciones (Bits 3 a O)

B3 B2 B1 Bo O 0 0 1

Movimiento a la derecha: Indica al microcontrolador que el movimiento de el motor a efectuarse será a la derecha.

O 0 1 0

Movimiento a la izquierda: Indica al microcontrolador que el movimiento de el motor a efectuarse será a la derecha.

0 0 1 1

Movimiento continuo: Indica al microcontrolador que el movimiento de el motor a ser efectuado será continuo hasta obtener la orden de paro, según el sentido elegido en alguno de los dos comandos anteriores.

18

Page 22: Sistema'maestro esclavo 80188 8031 para aplicaciones

0 1 0 0

Movimiento por pasos: Esta instrucción en conjunción con alguiio de dos primeros comandos, le indica al microcontrolador que el movimiento que deberá efectuar el motor será un cierto numero de pasos o anguloso de acuerdo a alguno de los dos sentidos. Para este comando no es necesaria la orden de paro después de el movimiento efectuado.

1 1 1 1

Detener movimiento: Ordena al microcontrolador que cese el movimiento de el motor si es que estaba trabajando en forma continua en algún sentido.

Estados

El microcontrolador provee la información acerca de la ultima operación que fue ejecutada, vía el registro de Estado.

El microcontrolador reporta los eventos, actualizando el registro de Estado y levantando la señal de INTERRUPCIÓN hacia el microprocesador. Al poner en 1 el bit O del registro de Estado, se interrumpe al 801 88 y en la rutina de atención a la interrupción, se lee el registro de Estado, al misino tiempo que se desactiva la seííal de interrupción.

Formato:

7 6 5 4 3 2 1

Interrupción (Bit O)

El bit de interrupción se pone en 1 junto a la interrupción por hardware. Levantando este bit se indica la ocurrencia de un evento. Este bit se limpia por software cuando el microprocesador 80 188 lee el estado y utiliza el registro de Comando para limpiar el bit de interrupción, poniendo un 1 en el bit 7 del registro de comando.

19

Page 23: Sistema'maestro esclavo 80188 8031 para aplicaciones

Operación De DMA (Bit 1)

El bit de DMA, cuando se pone en 1, indica que una operación de DMA esta en progreso. Este bit se pone en 1 si el comando recibido por el microcontrolador requiere una transferencia de datos o parámetros. En cambio si se limpia este bit, la línea que hace la petición de DMA, DRQ estará inactiva. Para resumir, el bit de DMA cuando esta limpio indica que no se requiere ninguna transferencia de datos/parámetros o que se completo una operación de DMA.

Error (Bit 5)

El bit de error E, cuando se pone en 1, indica que un evento generado por cierto comando tiene una advertencia o una posible fuente de error, o por otro lado indica que el comando que se le mando al inicrocontrolador no file valido.

Evento (Bits 4 a 2)

El campo de evento indica porque el microcontrolador necesita la atención del inicroprocesador.

Los siguientes eventos pueden ocurrir.

NOTA : De la forma en que se estructuro el programa de aplicación y al modo en que opera el motor de pasos, no fue necesario utilizar el registro de estados (favor de ver listados de programas), de manera que si el lector quisiera implementar este registro, debería adecuar10 a la aplicación que vaya a realizar, en nuestro caso no fue necesario configurar el registro.

20

Page 24: Sistema'maestro esclavo 80188 8031 para aplicaciones

DESCRIPCIÓN DE LA IMPLEMENTACIÓN

Para la implementación de la interface, existen 2 alternativas, la primera utiliza uno de los puertos de el microcontrolador para el manejo del registro de Estado, minimizando asi el Hardware.

Sin embargo, por la naturaleza de el 8031 aparte de ese puerto, hay que sacrificar otros dos para el direccionamiento del programa del microcontrolador, hay que añadir a esto que del ultimo puerto restante, hay algunas líneas que se utilizan para proveer señales de lectura y escritura de datos (por ejemplo de los comandos enviados por el microprocesador y del reporte de estado de una operación hecha por el microcontrolador). De este modo prácticamente todos los puertos están ocupados, por esta razóii no utilizamos esta implementacióii, a fin de ahorrar el uso de un puerto.

Como alternativa, utilizaremos un latch externo a fin de guardar el byte de estado en este latch. La figura 1 muestra el diagrama esquemático de la interface entre algunas líneas del microprocesador 80 1 88 y el microcontrolador 8031.

Después de el reset del 80188 por hardware, el inicrocoiitrolador también entra en su estado de reset. Los registros de ambos procesadores se inicializan tal como se detalla en los manuales de Intel. La señal de reset limpia también las interrupciones hacia el microprocesador y hacia el microcontrolador. FF3 (Flip-Flop3) y FF2 (Flip-Flop2) respectivameiite .

Envio De Comandos

Un latch bidireccional (74LS646) es usado para el registro de ComandoDato. Cuando el 80188 escribe un comando hacia el registro de ComandoDato, interrumpe al microcontrolador. La interrupción es generada solo cuando el bit 7 de el registro de comando es puesto a 1.

Cuando el 80188 activa las líneas PCS3 y WR para escribir un comando, el FF2 se pone en 1 y el FF3 se limpia. La salida de el FF2 es la interrupción hacia el inicrocoiitrolador, una transición de alto a bajo en esta línea interrumpirá al microcontrolador.

21

Page 25: Sistema'maestro esclavo 80188 8031 para aplicaciones

Dicha sefial de interrupción se limpia tan pronto como el microcontrolador lee y decodifica el comando de el registro de ComandoDato.

La salida de el FF3 es la interrupción hacia el 801 88 y al mismo tiempo es el bit 7 de el registro de comando (INT) esta interrupción, como la que interrumpe al microcontrolador, debe limpiarse de inmediato, indicando con esto que el estado reportado ya no es valido o actual.

Transferencias de DMA

Dentro de la rutina de atención a la interrupción, el comando es decodificado por el microcontrolador. Si dicho comando requiere una transferencia de DMA, el microcontrolador levantara el bit de DMA de el registro de Estado el cual activa la petición de DMA (DRQ). DRQ causa que el controlador de DMA realice una transfereiicia de datos o paráinetros. Cuando se hace una transferencia hacia o desde el registro de Comaiido/Dato la salida de el FF1 se pondrá en 1 y la seííal DRQ ira inactiva de nuevo.

El controlador de DMA transfiere un byte desde el sistema de memoria hacia el registro de ComandoDato. El dato es guardado cuando las líneas PCS4 y WR son activas. Cuando se activan PCS4 y WR limpian al FFI . El microcontrolador monitorea la salida de el FFI por poleo sobre el bit P3.3 del puerto 3. Cuando este bit se liinpia el microcontrolador lee el dato de el registro de ComandoDato.

Una transferencia inversa (desde el registro de ComandoíDato hacia memoria) se realiza activando las líneas PCS4 y RD. Otra vez cuando se activan estas líneas, vuelven a limpiar el registro de ComandoDato y así ahora, el microcontrolador escribirá el siguiente dato en el registro de Comando/Dato. (a diferencia cuando leía).-

Cuando se lleva la “completa” transferencia de datos, el microcontrolador limpia el bit de Dina del registro de Estado y así se deshabilita la seííal DRQ, de tal suerte que se actualiza de nueva cuenta el registro de estado, interrumpiendo al microprocesador.

22

Page 26: Sistema'maestro esclavo 80188 8031 para aplicaciones

Lectura Del Registro De Estado

El comando mandado al inicrocoiitrolador es escrito y el estado leído con la misma linea de Chip PCS3, aunque el estado es leído a través de el 74LS245 y el comando escrito a el registro de ComandoDato. El microcontrolador actualiza el byte de estado para cualquier cambio que ocurra en las tareas que completa o realiza. En orden para leer el el Estado, el 80188 activa la línea PCS3 y luego activa la línea RD. El contenido de el estado es puesto en el bus de datos a través de el 74LS245 y capturado posteriormente por el inicroprocesador, simultáneamente a la lectura del estado, el microprocesador cancela la interrupción externa provocada por el microcontrolador, y vuelve a estar listo para mandar comandos.

INTERFACE ENTRE EL MICROCONTROLADOR 8031 Y EL MOTOR DE PASOS

Las salidas de los pines de dispositivos programables tales como microprocesadores y microcontroladores, suelen ser muy bajas en cuanto a la cantidad de corriente . Si se desea controlar algunos elementos de potencia como luces, calentadores, solenoides y motores, es necesario adaptar las salidas de los pines de los dispositivos programables a los elementos de potencia por medio de una interface adecuada.

El diagrama “interface entre el motor y el microcontrolador 803 1 ”, muestra un circuito susceptible a ser utilizados para proveer de una interface entre el motor de pasos con el puerto numero 1 de el microcontrolador.

Desde que los buffers están invertidos (c.i 7406), un nivel alto en el puerto de salida de el microcontrolador producirá un nivel bajo en la salida de el buffer, este nivel bajo activa el transistor PNP el cual provee de corriente al terminal del motor al cual esta unido.

Suponiendo que SWl y SW2 están activados. Y después apagando SW2 y activando SW4 se producirá un paso en el motor. Cambiando a SW3 y SW2 a un nivel alto se producirá un nuevo paso en el sentido de las manecillas de el reloj. Después de eso, cambiando a SW2 y SWl en un nivel alto de nuevo se producirá otro paso en el mismo sentido. Se puede repetir la secuencia hasta que el motor haya girado hasta la posición deseada.

23

Page 27: Sistema'maestro esclavo 80188 8031 para aplicaciones

Para hacer girar el motor en sentido contrario solo es necesario ut misma secuencia de valores para los SW’s pero en dirección contraria.

lizar la

Una mirada mas cercana a la secuencia de las salidas de los buffers (SW’s) muestran un hecho interesante. Para tomar el primer paso en sentido de las manecillas de el reloj es necesario poner SW2 y SWI en nivel alto, mientras los demás bits están en nivel bajo. Para proseguir con el sentido de giro solo es necesario hacer una rotación de un bit hacia la derecha, por cada paso que se desee. El 1 de SW1 se pasa a SW4, el 1 de SW2 se pasa a SWI, y así con los demás bits. Para un giro en sentido contrario se sigue la misma secuencia, salvo que la rotación de bits, debe hacerse a la izquierda. La producción de estas secuencias puede ser fácilmente implementada por un programa hecho para el microcontrolador siguiendo el sentido de giro, segiiii se desee. Una nota importante es que después de que se emite cierto código para un paso, debe haber un retardo antes de poder emitir el siguiente código, esto a fin de evitar un traslape de códigos que “confiindan” al motor.

Dicho retardo debe implementarse según el tipo de motor de pasos que se este utilizando y la respuesta que este tenga, (el retardo adecuado para el usuario, deberá obtenerse mediante prueba y error).

Antes de terminar debe hacerse mención a algunos puntos de el circuito de interface. El motor que nosotros usamos tiene &un rango de voltaje nominal de 5.5 V. Esto significa que se pudo diseñar un circuito para operar con aproximadamente 6.5V en los emisores de los diversos transistores (5.5 V para el motor mas 1 V a través de el transistor). Para rangos bajos de pasos esto funciona bien, pero si se desean rangos mayores de pasos y una mayor torca, es necesario utilizar un voltaje mayor y por consiguiente unas resistencias limitadoras de corriente.

El hecho es que si se afiaden mas resistencias en serie, se decreinenta la constante de tiempo L R lo cual permite que la corriente en el motor cambie rápidamente.

24

Page 28: Sistema'maestro esclavo 80188 8031 para aplicaciones

CONCLUSIONES

Este trabajo mostró un método alternativo para la combinación entre dos procesadores, con lo cual buscamos hacer tin sistema eficiente, en cuanto a que las tareas de procesamiento y control fueron divididas, dejando el trabajo de control para un circuito dedicado como el microcontrolador 8031 y las tareas de procesamiento al microprocesador 80188. Así mismo se busco cierta independencia con respecto a herramientas para la grabación de memorias eprom, al elaborar un programa que transmitiera serialmente código objeto (elaborado en la computadora), a una región de la memoria del sistema mínimo para ser ejecutado posteriormente, de esta forma se garantiza cierta portabilidad de los programas al depender de pocas herramientas para su elaboración.

La configuración de la interface entre los dos procesadores es bastante general, y puede adaptarse a las necesidades que tenga cualquier usuario, no obstante, es absolutamente necesario que se configuren los comandos y los reportes de los resultados que tenga el sistema, según la aplicación que vaya a ser implementada.

Posiblemente la interface entre los dos procesadores pueda ser inejorada por otros métodos, distintos al expuesto en este trabajo, pero tanto la complejidad, como el costo de implementación de el sistema, lo hacen preferible a otros tipos de interface.

Finalmente los listados de todos los programas involucrados en el trabajo, así como los diagramas de la interface se muestran a continuación.

25

Page 29: Sistema'maestro esclavo 80188 8031 para aplicaciones

APENDICE A

LISTADOS DE PROGRAMAS

I11

Page 30: Sistema'maestro esclavo 80188 8031 para aplicaciones

PAGE 80,132 COMMENT *

ESTE PROGRAMA OBTIENE EL CODIGO EJECUTABLE DE UN ARCHIVO, VIA LOS PUERTOS SERIALES DE UNA PC (EL TRANSMISOR) Y DEL - SISTEMA UAM-188 (EL RECEPTOR). EL CODIGO EJECUTABLE ES COLOCADO EN MEMORIA DINAMICA Y TRANSFERIDO EL CONTROL DE -

- EJECUCION A LA DRAM. *

; REVISA HASTA QUE EL DISPLAY ... ; ESTE DESOCUPADO.

VERIFICAR MACRO LOCAL REVISA

PUSH BX MOV BX,AX MOV DX,0082H

REVISA: SUB AX,AX IN AL,DX AND AL,80H JNZ REVISA MOV DX,0080H MOV AX,BX POP BX

ENDM

LIMPIAR MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MOV AL,OlH VERIFICAR OUT DX,AL

; LIMPIA TODO EL DISPLAY Y... ; PONE CURSOR AL INICIO.

ENDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MENSAJE MACRO LOCAL MENS MENS: MOVAX,CX ; DESPLIEGA EL MENSAJE -

XLAT ; DE LA TABLA APUNTADA - MOV SI,BX VERIFICAR INC DX OUT DX,AL MOV BX,SI LOOP MENS

; POR BX ...

ENDM

LIMPIA-RENGLON MACRO LOCAL CLS

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MOV AL,OCSH ; COLOCA EL CURSON EN LA POS. 4 - VERIFICAR OUT DX,AL

; DEL RENGLON 2 DEL DISP.

ENDM

CHECKSUM MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LIMPIAR MOV AL,83H VERIFICAR OUT DX,AL

; LUGAR 3 DEL DISPLAY

Page 31: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV BX,OFFSET VER-ROM ; DESPLEGAR EL MENSAJE - MOV CX,OOO9H MENSAJE

; CHECK-ROM EN DISPLAY.. .

ENDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DIRECROM MACRO LOCAL SEGNUM,TRI,ESPERA

MOV AX,OFEOOH MOV DS,AX

MOV AL,46H VERIFICAR INC DX OUT DX,AL ; ESCRIBE F

MOV AX,DI AND AX,OFOOOH MOV DX,CX MOV CL,O4H SHR Ax,CL MOV CX,DX

JNE SEGNüM MOV AL,46H VERIFICAR INC DX OUT DX,AL JMP TRI

MOV AL,45H VERIFICAR INC DX OUT DX,AL

; PROTEGE VALOR DE CX

; REALIZA UN CORRIMIENTO A LA DERECHA ; RECUPERA VALOR DE CX

; DE LA DIRECCION ; ESCRIBE EL SEGUNDO NUMERO (F)

CMP AH,OlH ; VERIFICA EL SEGUNDO NUMERO -

SEGIWM: ; ESCRIBE EL SEGUNDO NUMERO (E)

TRI: MOVAX,DI AND AX,OFOOH XCHG AL,AH MOV BX,OFFSET NUMERO XLAT

VERIFICAR INC DX OUT DX,AL MOV DX,CX MOV AX,DI AND AX,OOFOH MOV CL,04H SHR Ax,CL MOV CX,DX

; ESCRIBE EL TERCER NUMERO ; PROTEGE EL VALOR DE CX

; RECUPERA EL VALOR DE CX

MOV BX,OFFSET NLTMERO

Page 32: Sistema'maestro esclavo 80188 8031 para aplicaciones

XLAT

VERIFICAR INC DX OUT DX,AL MOV AX,DI AND AX,OOOFH

; ESCRIBE EL CUARTO NUMERO

; BUSCA EL QUINTO NUMERO

MOV BX,OFFSET NUMERO XLAT

VERIFICAR INC DX OUT DX,AL MOV BX,CX ;PROTEGEELVALORDECX

; ESCRIBE EL QUINTO NUMERO

MOV CX,0050H ESPERA: LOOP ESPERA

MOV CX,BX ENDM

; RECUPERA EL VALOR DE CX

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ERR-ROM MACRO

LIMPIAR

MOV BX,OFFSET ROM-MAL ; DESPLIEGA EL MENSAJE - MOV CX,0009H MENSAJE

; ERROR-ROM EN DISPLAY.. .

ENDM

ROMBIEN MACRO LOCAL REPITE,AQUI

SUB cx,cx LIMPIAR

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MOV BX,OFFSET ROM-OK ; ESCRIBE EL MENSAJE - MOV CX,0008H MENSAJE

; ROM-BIEN EN DISPLAY.. .

MOV BL, 10D ; GENERA - REPITE: MOV CX,60000D ;UN - AQUI: LOOP AQUI ; RETARDO ...

DEC BL CMP BL,OOD JNZ REPITE

ENDM

CHEKRAM MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LIMPIAR MOV AL,83H VERIFICAR OUT DX,AL

; LUGAR 3 DEL DISPLAY

MOV BX,OFFSET VER-RAM DESPLIEGA EL MENSAJE -

Page 33: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV CX,0009H MENSAJE

; CHECK-RAM EN DISPLAY..

MOV AL,OC4H VERIFICAR OUT DX,AL

ENDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DIRECRAM MACRO LOCAL DESP_l,B3,B2,B 1,AGUANTA

MOV AX,OFEOOH MOV DS,AX

MOV AX,DI AND AX,OFOOOH MOV CL,04H SHR AX,CL CMP A H , O 1 H E DESP-1 MOV A X , ' O ' VERIFICAR INC DX OUT DX,AL JMP B3

DESP-1: MOV AX,'l' VERIFICAR INC DX OUT DX,AL

AND AX,OOFOOH MOV CL,OSH S H R AX.CL

; ESCRIBE CUARTO NUMERO (O)

; ESCRIBE CUARTO NUMERO (1)

B3: MOVAX,DI

MOV BX,OFFSET NUMERO XLAT VERIFICAR INC DX OUT DX,AL

AND AX,OOOFOH MOV CL,O4H SHR AX,CL

; ESCRIBE TERCER NUMERO B2: MOVAX,DI

MOV BX,OFFSET NüMERO XLAT VERIFICAR INC DX OUT DX,AL ; ESCRIBE SEGUNDO NUMERO

B1: MOVAX,DI AND AX,OOOOFH MOV BX,OFFSET NUMERO

Page 34: Sistema'maestro esclavo 80188 8031 para aplicaciones

XLAT VERIFICAR INC DX OUT DX,AL ; ESCRIBE PRIMER NUMERO

MOV CX,0050H AGUANTA: LOOP AGUANTA ENDM

ERROR-RAM MACRO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LIMPIAR

MOV BX,OFFSET RAM-MAL ; DESPLIEGA EL MENSAJE - MOV CX,0009H MENSAJE

; ERROR-RAM EN DISPLAY ...

ENDM

RAM-OK MACRO LOCAL REP,AQ

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LIMPIAR

MOV BX,OFFSET RAM-OKEY ; DESPLIEGA EL MENSAJE - MOV CX,0008H MENSAJE

; RAM-BIEN EN DISPLAY ...

MOV BL, 10D ; GENERA - REP: MOV CX,60000D ;UN - AQ: LOOPAQ ; RETARDO ...

DEC BL CMF' BL,OOD JNZ REP

ENDM

CODESG SEGMENT ASSUME CS:CODESG,SS:STACK

ORG lFFOH MOV DX,OFFAOH MOV AX,OFE3DH OUT DX,AL

; PROGRAMACION DEL UMCS - : CON TRES CICLOS DE ESPERA

DB OEAH D W OOOOOH D W OFEOOH

Page 35: Sistema'maestro esclavo 80188 8031 para aplicaciones

ORG OOOOH MOV DX,OFFA2H

OUT DX,AL MOV AX,OO 1 FDH ; PROGRAMACION DEL LMCS -

; CON TRES CICLOS DE ESPERA

MOV DX,OFFA4H MOV AX,0003DH OUT DX,AL

; PROGRAMACION DE PACS

MOV DX,OFFA6H MOV AX,81FDH OUT DX,AL

; PROGRAMACION DEL MMCS

MOV DX,OFFA8H MOV AX,883DH OUT DX,AL

; INICIALIZACION DE MPCS

MOV SP,2000H ; INICIALIZACION DE LA - XOR AX,AX ; PILA ... MOV SS.AX

.......................................................................... ; INICIALIZACION DEL REFRESCO DE MEMORIA.

XOR AX,AX

MOV DX,OFFCAH MOV AX, I47FH ; REGISTRO DE CONTROL DEL DMA

OUT DX,AX

MOV DX,OFFCóH MOV AX,OOOOH MOV DX,AX

; PARTE ALTA DEL DMA DESTINO

MOV DX,OFFC4H MOV AX,0500H MOV AX,OOOOH OUT DX,AX

; PARTE BAJA DEL DMA DESTINO

MOV DX,OFFC2H MOV AX,0008H OUT DX,AX

; PARTE ALTA DEL DMA FUENTE

MOV DX,OFFCOH MOV AX,OOOOH OUT DX,AX

; PARTE BAJA DEL DMA FUENTE

MOV DX,OFF66H MOV AX,OCOO 1H OUT DX,AX

; PALABRA DE CONTROL DEL TIMER2

Page 36: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV DX,OFF62H MOV AX3D OUT DX,AX

; SE ESTABLECE CADA TIEMPO DE INT.

; TERMINA INICIALIZACION DE REFRESCO DE MEMORIA

MOV DX,0080H . MOV CX,OAOOOH

MOV AL,38H OUT 80H.AL

RTDO: LOOP RTDO

MOV CX,O5000H LOOP RTD 1 OUT 80H,AL

RTD 1 :

MOV CX,02500H RTD2: LOOP RTD2

OUT 80H.AL

MOV AL,38H VERIFICAR OUT DX,AL

; ESTABLECE MODO DE DISPLAY

; PARA 2 LINEAS Y CARACTERES - : DE 5x7

MOV AL,OFH VERIFICAR OUT DX,AL LIMPIAR

; HABILITA DISPLAY Y CURSOR

MOV AL,O6H VERIFICAR ; CURSOR OUT DX.AL

; MODO DE DESPLAZAMIENTO DEL

MOV AL,85H VERIFICAR OUT DX,AL

: LUGAR 6 DEL DISPLAY

...................... RUTINA DE VERIFICACION DE ROM .......................

MOV AX,OFEOOH MOV DS,AX MOV ES,AX SUB DI,DI SUB cx,cx SUB Ax,= CHECKSUM ; ESCRIBE CHEKSUM EN DISP.

DB OEAH

Page 37: Sistema'maestro esclavo 80188 8031 para aplicaciones

D W 1 OOOH DW OFEOOH

ORG lOOOH LIMPIA-RENGLON DIRECROM MOV AL,ES:[DI] ADD CX,AX INC DI CMP DI, lFFEH JNE SALTO JMP SIGUE

; LIMPIA SEGUNDO RENGLON DEL DISP. ; DESPLIEGA DIRECCION QUE SE C E C A . ; CARGA VALOR DE DIRECCION ACTUAL.

; SUMA A CX EL VALOR EN AL OBTENIDO.

SALTO: DB OEAH : REGRESA A SUMAR MIENTRAS - D W 1 OOOH D W OFEOOH

DEC DI XOR BX,BX MOV BH,ES:[DI+2] MOV BL,ES:[DI+lJ CMP CX,BX JNE ERROR-ROM J M P ROMFINE

; DI<=lFF FD...

SIGUE:

ERROR-ROM: ERR-ROM HLT

; SI EXISTE ERROR EN ROM

ROMFINE: ROM-BIEN ; SI NO EXISTE ERROR EN ROM

CONTI: MOV AX,OOOOH MOV ES,AX

S U B DI,DI SUB cx,cx SUB AX.Ax

C H E W ; ESCRIBE MENSAJE CHECKRAM EN DISPLAY

DB OEAH DW l9OOH DW OFEOOH

ORG 1900H LIMPIA-RENGLON CALL DELOY DIRECRAM MOV AL,20H MOV ES:[DI],AL NOP NOP

; ESCRIBE EN CADA LOCALIDAD 20H : CODIGO DE LOS ESPACIOS EN BLANCO.

Page 38: Sistema'maestro esclavo 80188 8031 para aplicaciones

NOP NOP NOP NOP NOP NOP NOP MOV BL,ES:[DI] CMP BL,AL JNE BRINCO1 JMP OK

; LEE EN BL EL VALOR DE CADA LOCALIDAD : COMPARA SI: VALOR ESCRITO=VALOR LEIDO : NO, ENTONCES HAY ERROR EN RAM

BRINCO 1 : DB OEAH DW 1700H DW OFEOOH

OK: INCDI

CIW DI,2000H JF3 BRINCO2 JMPOKRAM

; SALTA A COMPARAR MIENTRAS SI<2000H

BRINC02: DB OEAH DW 1900H DW OFEOOH

ORG 1700H ERROR-RAM HLT

: SI HUBO ALGUN ERROR

OKRAM: RAM-OK

_-__________--_ PROGRAMACION DEL 8250 (CONTROLADOR UART) ------------------

MOV DX, 103H MOV AL,80H OUT DX.AL

; PONE DLAB EN I

MOV DX,O lOOH MOV AX, 192 OUT DX,AX

: ESCOGE EL BAUD GENERADOR EN 600

MOV DX, 103H MOV AL,87H OUT DX,AL

; CONFIGURA PALABRA DE 8 BITS CON 2 BITS ; DE PARADA Y SIN PARIDAD.

IN AL,DX AND AL,7FH : EN O. OUT DX,AL

; MODIFICA EL VALOR DE DLAB PARA PONERLO

MOV DX, 104H MOV AL,OBH OUT DX,AL

; APUNTA AL REGISTRO DE CONTROL DE MODEM ; PARA LEVANTAR LAS LINEAS RTS,DTR Y OUT2

Page 39: Sistema'maestro esclavo 80188 8031 para aplicaciones

DB O E M DW 035OH D W OFEOOH

ORG 035OH

CALL CHECKDRAM CALL LIW-PUERTO ; LIMPIAR PUERTO. CALL INICIO ; INICILIZAR CAPTURA. CALL PROCESS CALL MENSA-FINAL

; REALIZAR CAPTURA DE CODIGO.

DB OEAH D W OOOOH D W 800OH

; REALIZA UN SALTO HACIA EL ; PROGRAMA EJECUTABLE BAJADO

; EN LA RAM.

HLT

__---------------- PROCEDIMIENTO DE VERIFICACION DE DRAM ------------------

CHECKDRAM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH ES

LIMPIAR MOV AL,82H VERIFICAR OUT DX,AL

; LUGAR 2 DEL DISPLAY

MOV BX,OFFSET VER-DRAM ; DESPLIEGA EL MENSAJE - MOV CX,OOOAH MENSAJE

; CHECK-RAM EN DISPLAY.. .

MOV AL,OC4H VERIFICAR OUT DX,AL

MOV AX,800OH MOV ESAX

SUB DI,DI SUB cx,cx SUB AX,Ax

CELDA:

Page 40: Sistema'maestro esclavo 80188 8031 para aplicaciones

LIMP1 A-RENGLON CALL DELOY MOV AL,20H MOV ES:[DI],AL NOP NOP NOP NOP NOP NOP NOP NOP NOP MOV BL,ES: [DI] CMP BL,AL JNEDRAMMAL JMP OK2

; ESCRIBE EN CADA LOCALIDAD 20H ; CODIGO DE LOS ESPACIOS EN BLANCO.

; LEE EN BL EL VALOR DE CADA LOCALIDAD ; COMPARA SI: VALOR ESCRITO=VALORLEIDO

; NO, ENTONCES HAY ERROR EN RAM

OK2: INCDI

CMP DI,4000H JB CELDA JMP OKDRAM

DRAMMAE: ERROR-RAM HLT

OKDRAM: RAM-OK

: SALTA A COMPARAR MIENTRAS SI<2000H

: SI HUBO ALGUN ERROR

; SI DRAM CORRECTA

POP ES POP DX POP cx POP BX POP Ax RET

CHECKDRAM ENDP

DESCARGA PROC NEAR

PUSH CX PUSH BX PUSH DX PUSH DS

MOV CX,8000H MOV DS,CX ; INICIALIZA EL DS Y SI PARA LA XOR CX,CX MOV SI,CX ; DESCARGA. (LOCALIDAD SOOOH)

Page 41: Sistema'maestro esclavo 80188 8031 para aplicaciones

CICLO: CALL RECIVEBYTE ; RECIE UN BYTE DE CODIGO

; OBJETO

CMP AL,255 JNE METE MOV BL,DS:[SI-11 CMP AL,BL JNEMETE

; VERIFICA QUE EL VALOR RECIVIDO NO ; SEA FIN DE ARCHIVO

; SALTA A METER DATO.

MOV BL,DS:[SI-2] CMP AL,BL JE FIN-DESCAR ; SALTA AL FINAL DE LA DESCARGA.

METE: NOP NOP NOP NOP NOP NOP NOP NOP MOV DS:[SI],AL INC SI JMP CICLO

; COMO VALOR RECIVIDO NO FUE FIN DE : ARCHIVO, ENTONCES METE EL VALOR

: EN LA RAM Y VA POR OTRO VALOR.

FIN-DESCAR:

POP DS POP DX POP BX POP cx RET

DESCARGA ENDP

_-______-_ LIMPIA EL PUERTO SERIAL PARA UNA CORRECTA RECEPCION ------------

LIMPPUERTO PROC NEAR PUSH AX PUSH DX

MOV DX. 105H

IN AL,DX AND AL,Ol lOOOOOB CMP A L , O 1 lOOOOOB JE FINAL

; TESTE0 PARA VERIFICAR LA ; POSIBILIDAD DE HABER "DESPERTADO"

CHEQUEO: IN AL,DX

Page 42: Sistema'maestro esclavo 80188 8031 para aplicaciones

AND AL,OOOOOOO 1B CMP AL,OOOOOOO 1 B JNE CHEQUEO

MOV DX, 1 OOH IN AL,DX

FINAL: POP DX POP Ax RET

LIMPPUERTO ENDP

_-___-___---- INICIALIZA

INICIO PROC NEAR PUSH AX PUSH BX PUSH CX

LIMPIAR

A C PTUR

; SI APENAS HABIA SALIDO DE SU ; ESTADO DE RESET. SE LIMPIA EL

; PUERTO DEL 8250.

DE COD

MOV BX,OFFSET ESP-DESC ; ESCRIBE EL MENSAJE - MOV CX, 15D MENSAJE

; 'ESPERANDO DESCARGA'

CALL RECIVE-BYTE ; ESPERA HASTA RECIBIR UN BYTE

POP cx POP BX POP AX RET

INICIO ENDP

PROCESS PROC NEAR ; REALIZA LA TAREA DE RECEPCION DEL CODIGO OBJETO EN ALGUNA POSICION ; CONOCIDA DE LA MEMORIA RAM.

PUSH BX PUSH CX

LIMPIAR MOV BX,OFFSET DESCANDO MOV CX, 15D MENSAJE

; ESCRIBE EL MENSAJE - ; 'DESCARGANDO ....I

; PROCEDIMIENTO QUE REALIZA ; LA DESCARGA DEI CODIGO

; EJECUTABLE EN LA RAM CALL DESCARGA

Page 43: Sistema'maestro esclavo 80188 8031 para aplicaciones

LIMPIAR MOV BX,OFFSET FIN-DESC MOV CX, 15D MENSAJE

; ESCRIBE EL MENSAJE - ; 'FIN DE DESCARGA'

CALL RETARDO

POP cx POP BX RET

PROCESS ENDP

-------------- RETARDO PARA PODER VISUALIZAR EL DISPLAY -------------------

RETARDO PROC NEAR

MOV BX,OOOEH CIERO: MOV CX,60000D FINAN : LOOP FINAN

DEC BX CMP BX,OOOOH JNE CIERO RET

RETARDO ENDP

-------- RETARDO UTILIZADA0 EN LA REVISION DE MEMORIA DINAMICA -------------

DELOY PROC NEAR PUSH CX

CIER: MOV CX,60D FINA: LOOP FINA

POP cx RET

DELOY ENDP

--------------- RECIBE UN BYTE A TRAVES DEL PUERTO SERIAL -----------------

RECIVE-BYTE PROC NEAR

MOV DX, 105H

IN AL,DX AND AL,00000001B CMP AL,00000001B JNE TESTEA

TESTE A : ; TESTE0 PARA VERIFICAR LA

; POSIBILIDAD DE RECIvlR DATO

MOV DX, lOOH IN AL,DX RET

RECIVE-BYTE ENDP

; RECIVE VALOR DEL PUERTO

Page 44: Sistema'maestro esclavo 80188 8031 para aplicaciones

POSICIONA PROC NEAR ; POSICIONA EL CURSOR EN LA COLUMNA CERO DEL RENGLON DOS.

MOV AL,OCOH VERIFICAR OUT DX,AL RET

POSICIONA ENDP

MENSAFINAL PROC NEAR ; DESPLIEGA COMO ULTIMO MENSAJE ("EJECUTANDO EL PROGRAMA EN RAM")

LIMPIAR

MOV CX, 13 MOV BX,OFFSET EJECUTA

; DESPLIEGA EN DISPLAY EL - '

; MENSAJE: "EJECUTANDO EL - MENSAJE . ; PROGRAMA EN RAM'' ...

CALL POSICIONA

MOV CX, 16 MOV BX,OFFSET EJECUTA2 MENSAJE

CALL RETARDO LIMPIAR RET

MENSAFINAL ENDP

.......................................................................... NUMERO: DB 48,49,50,51,52,53

DB 54,55,56,57 ; TABLA PARA DESPLEGAR VALOR -

; DE LA DIRECCION QUE SE - DB 65,66,67,68,69,70 : CHECA.

............................................................................ VER-ROM : DB ' MOR-KCEHC' VER-RAM : DB ' MAR-KCEHC' ROM-MAL : DB ' M O R - R O W ' RAMMAL DB ' MAR-RORRE' ; VERIFICACION DE LA MEMORIA -

; MENSAJES QUE SE DESPLIEGAN - : DURANTE LA VERIFICACION DE - ; LA MEMORIA ROM ;Y DURANTE LA -

ROM-OK : DB ' NEIB-MOR' ; RAM... RAM-OKEY DB ' NEIB-MAR' VER-DRAM DB ' MARD-KCEHC'

ESP-DESC : DB ' .CSED ODNAREPSE' DESCANDO DB ' .... ODNAGRACSED'

: MENSAJES QUE SE DESPLIEGAN - ; DURANTE LA DESCARGA DEL PRO-

FIN-DESC : DB ' AGRACSED ED NIF' EJECUTA : DB ' LE ODNATUCEJE' EJECUTA2 : DB ' MARD NE AMARGOW

; GRAMA EJECUTABLE ...

............................................................................

Page 45: Sistema'maestro esclavo 80188 8031 para aplicaciones

CODESG ENDS END

Page 46: Sistema'maestro esclavo 80188 8031 para aplicaciones

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripcion: Programa encargado de descargar (transmitir serialmente)

un programa ejecutable realizado en la P.C a la memoria ram del sistema minimo como medio de optimizar el uso de la P.C.

CORTES LEON HECTOR ROJAS GARCIA VICTOR

PROYECTO I1 PROF. GONZALO DUCHEN

/ m / 9 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

#include <stdlib. h> #include <stdio.h> #include <string. h> #include <conio.h> #include <graphics.h>

#define MIN-X 10 #define M A X X 70 /* Referentes a la ventana de presentacion */

#define MAX-Y 20 #define MIN-Y 5 /* resultados. */

#define MAXNOM 30

#define MAX-RET 19

/* Maxima longitud del nombre del archivo a /* transmitir. *I /* Maxima cantidad de tiempo en los retardos. */

void inicializacion(); void ventana 0; void apertura ();

void mensaje-inial (); void proceso (); void mensaje-final (); void envia ();

/* Funciones necesarias para realizar el pro- */ void puntos (); I* grama de descarga. */

FILE *archivo; char nombre[MAX-NOM]; /* y su apuntador de archivo asociado. */

/* Referentes al nombre del archivo a abrir */

Page 47: Sistema'maestro esclavo 80188 8031 para aplicaciones

main() { clrscr();

inicializacion() ; textmode(2); textmode(C80);

ventana (); apertura();

mensaje-inial() ; proceso();

mensaje-final(); envia(); textmode(2); /* restablece el modo texto original. , */

I* realiza la apertura de cierto archivo ejecuta- ble para su posterior transmision.

byte por byte hacia la tarjeta.

*!

/* realiza la transmision del archivo serialmente *I

return( 1);

Page 48: Sistema'maestro esclavo 80188 8031 para aplicaciones

void inicializacion(void)

Descripcion: Inicializacion del puerto serie de la P.C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

I* inicializa el UART de la P.C a 600 baudios con dos bits de parada y sin paridad con interrupcion del BIOS *I

asm push as asm push bx asm push c s asm push d s

asm sor ax,ax asm mov bs,as asm mov cs,as asm mov ds,as asm mov a1,0110011 lb I* A 600 BAUDS. *I asm int 14h

/* INIC. DEL PUERTO SERIAL */

asm sor as,ax asm mov ds,03fSh asm in al,ds

asm pop d s asm pop c s asm pop bs asm pop a s

I

void ventana() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Descripcion: Establece la ventana donde se realizaran las operaciones

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . del programa.

{ int fg,mg; testmode (CSO); textcolor(BLACK) ; textbackground(3);

window (MIN-X,MIN-Y,MAX-X,MAX-Y); for (fg=MIN-Y; fg <= MAX-Y; fg++) { for (mg=MIN-X; mg <= MAX-X; mg++) cprintf (" "); cprintf ("\n");

a I

Page 49: Sistema'maestro esclavo 80188 8031 para aplicaciones

void apertura(void) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripcion: Hace la peticion al usuario sobre el nombre del archivo

a ser transferido hacia el sistema minimo. En caso de no existir dicho archivo se abortara el programa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

gotoxy (18,2); delhe(); insline(); cprintf ("Anote el nombre del archivo

scanf ("%sol, nombre);

\not); gotohy (21,3);

/* verifica que la extension del archivo sea .ese *I

if (!strstr (nombre,".exe") && ! strstr (nombre,".EXE")) { gotoxy (18,4); dellineo; insline(); cprintf ("El nombre del archivo es erroneo \n"); getch(); testmode(2); /* restablece el modo texto original. */ exit( 1);

3;

I* abre el archivo en caso de esistir */ if ((archivo = fopen (nombre,"rb")) == NüLL) { ,

goto,xy (18,5); dellhe(); insline(); cprintf ("No puedo abrir el archivo %SI');

gotoxy (18,6); delline(); insline(); cprintf ("%s",nombre); getch(): clrscr(); textinode(2); exit( I);

1:

Page 50: Sistema'maestro esclavo 80188 8031 para aplicaciones

void puntos(void) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripcion: Utilizada para la presentacion de resultados en las com-

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . paraciones.

{ int indice = O;

for (indice = O; indice<= 45; indice++) { cprintf ("."); delay (MAX-RET); 1

void mensaje-final(void) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripcion: Despliega mensaje sobre el exito en la descarga del ar-

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {

chivo ejecutable.

puntos(); gotoxy (18,lO);

gotoxy (1,111; cprintf (" Descarga Finalizada\n");

1

void mensaje-inial(void) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Descripcion: Despliega mensaje sobre el proceso de descarga del ar-

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . chivo ejecutable.

goto'q (17,6); cprintf ("Descargando archivo %s",nombre);

Page 51: Sistema'maestro esclavo 80188 8031 para aplicaciones

void proceso (void)

Descripcion: Realiza l a transferencia del archivo hacia el sistema

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

minimo byte por byte.

{ int caracter;

delay (MAX-RET) ; asm push as asrn push bx asm push cx asm push dx

caracter = getc(archiv0); asm mov bx,O asrn inov ax,caracter /* DE DESCARGA VA A COMENZAR. */ asrn mov dx,03f8h asm out dx,al delay (MAX-RET);

/* MANDA EL PRIMER CARACTER CO- */ /* MO AVISO DE QUE EL PROCESO */

while (caracter != EOF) {

asrn mov bx,O /* ESTE CICLO MANDA A PUERTO */ asm mov ax,caracter /* SERIAL EL ARCHIVO HASTA */ asm mov dx,03fgh /*LLEGAR AL ULTIMO BYTE */ asrn out dx,al delay (MAX-RET); caracter = getc(archiv0); delay (MAX-RET) ; 1 fclose(arc1iivo);

/* envia los dos ultimos bytes (bandera) para indicar la finalizacion de la transferencia del archivo */

delay(MAX-RET); caracter = 255; asm mov bs,O asm mov ax,caracter asm mov dx,03fgh asrn out dx,al

delay(MAX-RET); asm mov bx,O asrn mov as,caracter asm mov dx,03fSh asm out dx,al

asm pop ds asrn pop cx asm pop bx asmpogas 1

Page 52: Sistema'maestro esclavo 80188 8031 para aplicaciones

void envia(void) { int caracter;

asm push a s asm push bx asm push cx asm push dx

do { asm mov bx,O caracter=getche(); asm mov ax,caracter asm mov dx,03füh /* DEL CAñACTER TECLEADO.. . */ asm out ds,al 1 while (caracter!='q');

/* MANDAR A PUERTO SERIAL EL VALOR */

asm pop dx asm pop cx asm pop bs asm pop ax

Page 53: Sistema'maestro esclavo 80188 8031 para aplicaciones

........................................................................... ; PROGRAMA QUE SE INSTALA EN LA MEMORIA ADJUNTA AL MICROCONTROLADOR 803 1; ; ELPROGRAMA SE ENCARGA DE RECIBIR ORDENES ENVIADAS DESDE EL SISTEMA ; MINIMO; CON MICROPROCESADOR 80188 Y PRODUCIR LAS SALIDAS A UN PUERTO DEL ; 803 1 PARA CONTROLAR UN MOTOR DE PASOS.

CORTES LEON HECTOR ROJAS GARCIA VICTOR G.

; vectores de intempcion

ORG OOH A M P INICIO

; VECTOR DE INTERRUPCION DEL RESET

ORG 03H AJMP COMANDO

; VECTOR DE INTERRUPCION EXTERNA O

; codigo principal

ORG 2BH

SETB EX0 SETB EA MOV SP,#56H

INICIO: ; HABILITA INTERRUPCION EXT. O ; HABILITA LAS INTERRUPCIONES

; INICIALIZA EL STACK

MOV 53H,#00H MOV 54H,#00H MOV 55H,#00H

; INICIALIZA LOS REGISTROS ; CONTADOR (54H)Y REG-AUX(55H).

TESTEOa MOV R2,#03H

TESTE0 CJNE R2,#02H,TESTEO CJNE Rl,#OlH,RUTINA2

RUTINA 1 CJNE RO,#OlH,PASOSDER CALL ADELANTE CJNE R 1 ,#02H,RUTINA 1 JMP TESTEOa

PASOSDER CALL PASOS-ADELANTE MOV 54H,#00H MOV 55H,#00H JMP TESTEOa

Page 54: Sistema'maestro esclavo 80188 8031 para aplicaciones

RUTINA2 CJNE RO,#OlH,PASOSIZQ CALL ATRAS CJNE R1,#02H,RUTINA2 JMP TESTEOa

PASOSIZQ CALL PASOSATRAS MOV 54H,#00H MOV 55H,#00H JMP TESTEOa

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : RUTINA DE ATENCION A LA INTERRUPCION EXTERNA

COMANDO: MOV DPTR,#lOOH MOVX A,@DPTR ANL A,#OFH

; SELECCIONA REGISTRO PARA LECTURA

; ENMASCARA EL COMANDO.

CJNE R2,#OFH,COMANDOl CALL OBTEN-- RETI

COMANDO1 CJNE A,#OlH,COMAND02 MOV Rl,#OlH RETI

COMAND02: CJNE A,#02H,COMAND03 MOV R 1 ,#OOH RETI

COMANDO3 : CJNE A,#03H,COMAND04 MOV RO,#OlH MOV R2,#02H RETI

COMAND04: CJNE A,#04H,COMANDO5 MOV RO,#OOH MOV R2,#OFH RETI

COMANDOS: CJNE A,#04H,SALIDA MOV RO,#OOH MOV R2,#02H RET1

Page 55: Sistema'maestro esclavo 80188 8031 para aplicaciones

SALIDA: MOV R 1 ,#02H RET1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; RUTINA DEL COMANDO 2. MLJEVE MOTOR EN SENTIDO DE LAS MANECILLAS DEL RELOJ;

ADELANTE

JMP AVANZA

CLR P1.0 CLR P1.1 SETB P1.2 SETB P1.3

AVANZA:

MOVR5,#35H .

JMP ETIQUETA

MOV R7,#35H DJNZ R7,$ DJNZ R5,ETIQUETA

ETIQUETA:

SETB P1.0 CLR P1.l CLR P1.2 SETB P1.3

MOV R5,#35H JMP ETIQUETA 1

MOV R7,#35H DJNZ R7,$ DJNZ R5,ETIQUETAl

ETIQUETA 1 :

SETB P1.0 SETB P1.l CLR P1.2 CLR P1.3

MOV R5,#35H JMP ETIQUETA2

MOV R7,#35H DJNZ R7,$ DJNZ RS,ETIQUETA2

ETIQUETA2:

CLR P1.0 SETE3 P1.l SETB P1.2 CLR P1.3

Page 56: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV R5,#35H JMP ETIQUETA3

MOV R7,#35H DJNZ R7,$ DJNZ RS,ETIQUETA3 RET

ETIQUETA3 :

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : RUTINA DEL COMANDO 2. MUEVE MOTOR EN CONTRA DE MANECILLAS DEL RELOJ

ATRAS:

RETROCEDE: JMP RETROCEDE

CLR P1.O CLR P1.l SETB P1.2 SETB P1.3

MOV R5,#35H JMP ETIQUETA4

MOV R7,#35H DJNZ R7,$ DJNZ RS,ETIQUETA4

ETIQUETA4:

CLR P1.O SETB P1.l SETB P1.2 CLR P1.3

MOV R5,#35H JMP ETIQUETA5

MOV R7,#35H DJNZ R7,$ DJNZ R5,ETIQUETAS

ETIQUETA5 :

SETB P1.O SETB P1.l CLR P1.2 CLR P1.3

MOV R.5,#3.5H JMP ETIQUETA6

MOV R7,#35H DJNZ R7,$ DJNZ R5,ETIQUETAó

ETIQUETAG:

Page 57: Sistema'maestro esclavo 80188 8031 para aplicaciones

SETB P1 .O CLR P1.l CLR P1.2 SETB P1.3

MOV R5,#35H JMP ETIQUETA7

MOV R7,#35H DJNZ R7,$ DJNZ RS,ETIQUETA7 RET

ETIQUETA7:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; RUTINA DEL COMANDO 4. QUE MOVERA CIERTO NUMERO DE PASOS A LA DERECHA AL ; MOTOR

PASOS-ADELANTE

JMP AVANZAPASS

AVANZA-PAS S :

CLR P1.0 CLRP1.l SETB P1.2 SETB P1.3

MOV R5,#50H JMP ETIQUETAS

MOV R7,#50H DJNZ R7,$ DJNZ R5,ETIQUETAS DEC A CJNE A,#OOH,PASOD2 JMP SAL-PAS-AD

ETIQUETAS :

PASOD2: SETB Pl.0 CLRP1.l CLR P1.2 SETB P1.3

MOV R5,#50H JMP ETIQUETA9

MOV R7,#50H DJNZ R7,$ DJNZ RS,ETIQUETA9 DEC A CJNE A,#OOH,PASOD3 JMF’ SAL-PAS-AD

ETIQUETA9 :

Page 58: Sistema'maestro esclavo 80188 8031 para aplicaciones

PASOD3 SETB P1.0 SETB P1.l CLR P1.2 CLR P1.3

MOV R5,#50H JMP ETIQUETA 1 O

MOV R7,#50H DJNZ R7,$ DJNZ R5,ETIQUETAlO DEC A CJNE A,#OOH,PASOD4 JMP SALPAS-AD

ETIQUETA10:

PASOD4 CLR P1.0 SETB P1.l SETB P1.2 CLR P1.3

MOV R5,#50H JMP ETIQUETA 1 1

MOV R7,#50H DJNZ R7,$ DJNZ R5,ETIQUETAll

ETIQUETA 1 1 :

DEC A CJNE A,#OOH,AVANZAPASS

SAL-PAS-AD RET

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; RUTINA DEL COMANDO 4. QUE MOVERA CIERTO NUMERO DE PASOS A LA IZQUIERDA ; ALMOTOR

PASOS-ATRAS:

JMP RETROCEDE-PASS

RETROCEDEPASS :

CLR P1.0 CLR PI . l SETB P1.2 SETB P1.3

Page 59: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV R5,#50H JMP ETIQUETA 12

MOV R7,#50H DJNZ R7,$ DJNZ RS,ETIQUETAl2 DEC A CJNE A,#OOH,PASOT2 JMP SALPAS-AT

ETIQUETA 12:

PASOT2 CLR P1.0 SETB P1.l SETB P1.2 CLR P1.3

MOV R5,#50H JMP ETIQUETA 13

MOV R7,#50H DJNZ R7,$ DJNZ RS,ETIQUETA13 DEC A CJNE A,#OOH,PASOT3 JMP SALPAS-AT

ETIQUETA 13 :

PASOT3

SETB P1.0 SETB P1.l CLR P1.2 CLR P1.3

MOV R5,#50H JMP ETIQUETA 14

MOV R7,#50H DJNZ R7,$ DJNZ RS,ETIQUETAl4 DEC A CJNE A,#OOH,PASOT4 JMP SALPAS-AT

ETIQUETA 14:

PASOT4

SETB P1.0 CLR P1.l CLR P1.2 SETB P1.3

Page 60: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV R5,#50H JMP ETIQUETA 15

MOV R7,#50H DJNZ R7,$ DJNZ R5,ETIQUETAlS DEC A CJNE A,#OOH,RETROCEDEPASS

ETIQUETA 15 :

S ALPAS-AT RET

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; RUTINA QUE OBTIENE EL NUMERO DE PASOS QUE SE MOVERA EL MOTOR

OBTEN-NüM: MOV 52H,R2 INC 54H MOV R2,54H CJNE R2,#OlH,SEG-NüM MOV 55H,A MOV R2,52H RET

; RESPALDO DE R2 ; CONTADOR DE TIPO DE NLJM.

SEG-NUM: SWAP A ADD A35H MOV R2,#02H RET

END ; FIN DEL PROGRAMA

Page 61: Sistema'maestro esclavo 80188 8031 para aplicaciones

COMMENT * PROGRAMA DE INTERFACE PARA CONTROLAR UN MOTOR DE PASOS: DESPLIEGA LOS MENSAJES PARA MOVER EL MOTOR EN EL SENTIDO DE LAS MANECILLAS DEL RELOJ O EN SENTIDO CONTRARIO. SE PUEDE ESCOGER ENTRE MOVER EL MOTOR EN FORMA CONTINUA O POR PASOS (MAXIM0 200 PASOS). EL PROGRAMA SE ENCARGA DE ENVIAR SEYALES HACIA EL MICROCONTROLADOR 803 1 INDICANDOLE QUE ACCION REALIZAR CON EL MOTOR.

ROJAS GARCIA VICTOR G. CORTES LEON HECTOR *

CODSG SEGMENT ASSUME CS:CODSG

___-__--__-_-______ INICIA CODIGO PNNCIPAL ------------------ ORG OOOOH

PUSH E S PUSH DS

MOV AX,8000H MOV DS,AX

MOV AL,3FH OUT O 1H.AL

; PROGAMA RELOJ PARA EL 8279

MOV AL,ODOH OUT OIH,AL

; PARA LIMPIAR RENGLONES DE DISPLAY RAM

MOV AL,90H OUT OlH,AL

; PROGRAMA Read FIFO/Sensor RAM

COMIENZO: CALL MENUPRINCIPAL ; LLAMA AL MENU PRINCIPAL

: PROCEDIMIENTOS UTILIZADOS:

Page 62: Sistema'maestro esclavo 80188 8031 para aplicaciones

MENU-PRINCIPAL PROC NEAR ; este procedimiento desplliega el men& principal - ; de inicio.

PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS

INIMENS 1 :

CALL LIMPIAR

MOV BX,OFFSET MENU1-1 ; 1.DER 2.IZQ" ... CALL MENSAJE

; DESPLIEGUE DEL MENU INICIAL: MOV CX, 12 ; "MOVER MOTOR -

CALL RENGLON2

MOV CX, 12 MOV BX,OFFSET MENU1-2 CALL MENSAJE

CICLO: CALL TECLA CALL SACA-DISPLAY CMP AL,49 JE MENU2 CMP AL30 JE MENU3 JMP INIMENS1

; OBTIENE RESPUESTA DEL TECLADO. ; SACA DATO OBTENIDO AL DISPLAY.

MENU2 : MOV AL,81H J M P SALMENUl

MENU3: MOV AL,82H

SALMENUl: CALL LIW-PUERTO ; LIMPIAR PUERTO. CALL COMANDO-AL

; LLAMAR AL MENU 2 ; MANDAR DATO HACIA EL MICROC.

CALL MENU-2

POP DS POP DX POP cx POP BX POP Ax RET

MEW-PRINCIPAL ENDP

Page 63: Sistema'maestro esclavo 80188 8031 para aplicaciones

PUSH BX PUSH CX PUSH DX PUSH DS

INIMENU2:

CALL LIMPIAR ; DESPLIEGA EN DISPLAY EL - MOV CX, 15 ; MENU: MOV BX,OFFSET MENU2-1 CALL MENSAJE ; 3.SALIR " ...

; 'I 1.PASOS 2.CONT.

CALL RENGLON2

MOV CX,8 MOV BX,OFFSET MENU2-2 CALL MENSAJE

CICLO2: CALL TECLA CALL SACA-DISPLAY

CMP AL,49D JB CICLO2 CMP AL3 1D JA CICLO2

; VERIFICA QUE EL COMANDO ; ESTE ENTRE 1 Y 2.

CMP AL,49 JE PASOS CMP AL,50 JE CONT CMP AL,51 JE SALIDA JMP INIMENUZ

SALIDA: ; SI SE ESCOGIO OPCION 3 SE - DB OEAH DW 00150H D W 08000H

; SALTA AL MENU INICIAL.

PASOS: ; SI SE ESCOGIO OPCION 1 SE - MOV AL,84H CALL LIW-PUERTO

; ENVIA COMANDO DE RECONOCI-- ; MIENTO (MOVIMIENTO A PASOS) -

CALL COMANDO-AL

JMP sALMENu2

; Y SE LLAMA AL SIGUIENTE MENU. CALL MENU-3

Page 64: Sistema'maestro esclavo 80188 8031 para aplicaciones

CONT: ; SI SE ESCOGIO OPCION 2 SE - MOV AL,83H CALL LIMPPUERTO

; ENVIA COMANDO DE RECONOCI-- ; MIENTO (MOVIMIENTO CONTINUO) -

CALL COMANDO-AL CALL MEW4 sALMENu2:

; Y SE LLAMA AL SIGUIENTE MENU.

POP DS POP DX POP cx POP BX RET

MENU-2 ENDP

PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS

CALL LIMPIAR ; DESPLEGAR EN DISPLAY EL MEN- MOV CX, 15 ; SAJE: MOV BX,OFFSET MENU3-1 CALL MENSAE

; I' CUANTOS PASOS 'I ...

CALL RENGLON2

MOV CX, 1 MOV BX,OFFSET MENu3-2 CALL MENSAJE

CICLO3 : ; OBTENER EL W R O DE PASOS - CALL OBTEN-NüM SUB AH,AH

; QUE VA A REALIZAR EL MOTOR - ; Y ENVIAR DICHO NUMERO HACIA -

MOV AH& AND AL,OFH OR AL,OSOH

; EL MICROCONTROLADOR ...

CALL LIMPPUERTO CALL COMANDO-AL

MOV &,AH AND AX,OOOFOH

SHR AX,OlH

Page 65: Sistema'maestro esclavo 80188 8031 para aplicaciones

SHR AX,OIH SHR AX,OlH S H R Ax.0lH

OR AL,080H CALL LIMPPUERTO CALL COMANDO-AL

DB OEAH DW 00150H D W 08000H

; SALIR AL MENU PRINCIPAL.

POP DS POP DX POP cx POP BX POP Ax RET

MENU-3 ENDP

............................................................................ M E N U 4 PROC NEAR ; este procedimiento despliega el men& n£mero cuatro ; del programa y espera respuesta del usuario.

PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS

INIMENUS:

CALL LIMPIAR

MOV CX, 12 MOV BX,OFFSET MENU4-2 CALL MENSAJE

; DESPLIEGA EN DISPLAY EL - ; MENSAE " SALIR 'I Y ES--

; PERA A QUE EL USUARIO PRE- ; SIONE UNA S, MOMENTO EN EL -

; CUAL SE MANDA A PARAR AL MO- ; TOR ...

CICLO4: CALL TECLA CALL SACA-DISPLAY

CMP AL,'s' JE SALIR CMP AL,'S' .JE SALIR JMP INIMENUS

Page 66: Sistema'maestro esclavo 80188 8031 para aplicaciones

SALIR: MOV AL,SFH

SALMEIWS: CALL LIMP-PUERTO CALL COMANDO-AL

DB OEAH DW 00 150H D W 08000H

POP DS POP DX POP cx POP BX POP A x RET

MENU-4 ENDP

............................................................................ COMANDO-AL PROC NEAR ; este procedimiento realiza la ejecucign del comando indicado por ; el cgdigo de AL

PUSH CX PUSH DX PUSH DS

MOV DX,0181H ; MANDA A PUERTO 181 EL VALOR CONTENIDO - OUT DX,AL ; EN EL REGISTRO AL.

AND AL,OFH OUT DX,AL

POP DS POP DX POP cx RET

COMANDO-AL ENDP

............................................................................ LIMPPUERTO PROC NEAR ; este procedimiento limpia el puerto serial.

PUSH AX PUSH DX PUSH DS

MOV DX, 105H

IN L , D X ; TESTE0 PARA VERIFICAR LA

Page 67: Sistema'maestro esclavo 80188 8031 para aplicaciones

AND &,O 1 lOOOOOB CMP A L , O 1 1 OOOOOB JE FINAL

; POSIBILIDAD DE HABER "DESPERTADO"

CHEQUEO: IN AL,DX AND AL,OOOOOOO 1B CMP AL,OOOOOOO 1B JNE CHEQUEO

MOV DX, lOOH IN AL.DX

; SI APENAS HABIA SALIDO DE SU ; ESTADO DE RESET. SE LIMPIA EL

; PUERTO DEL 8250.

FINAL: POP DS POP DX POP Ax RET

LIMPPUERTO ENDP

............................................................................ VERIFICAR PROC NEAR ; este procedimiento realiza la verificacien de disponibilidad ; del display

PUSH AX PUSH BX PUSH DS

MOV DX,0082H REVISA: SUB AX,AX

IN AL,DX AND &,SOH JNZ REVISA MOV DX,0080H

; REVISA HASTA QUE EL DISPLAY.. ; ESTE DESOCUPADO.

POP DS POP BX POP Ax

RET VERIFICAR ENDP

............................................................................ LIMPIAR PROCNEAR ; este procedimiento limpia todo el display y coloca el cursor al inicio.

PUSH AX PUSH DX PUSH DS

Page 68: Sistema'maestro esclavo 80188 8031 para aplicaciones

MOV AL,OlH CALL VERIFICAR OUT DX.AL

; LIMPIA TODO EL DISPLAY Y.. ; PONE CURSOR AL INICIO.

POP DS POP DX POP Ax RET

LIMPIAR ENDP

............................................................................ LIMPIA-RENGLON PROC NEAR ; este procedimiento limpia el rengien 2 del display y coloca el cursor ; en la posicien 4.

PUSH AX PUSH, DX PUSH DS

MOV AL,OCSH ; COLOCA EL CURSON EN LA POS. 4 - CALL VERIFICAR OUT DX,AL

: DEL RENGLON 2 DEL DISP.

POP DS POP DX POP Ax RET

LIMPIA-RENGLON ENDP

PUSH AX PUSH DX

MOV AL,OCOH CALL VERIFICAR OUT DX,AL

MOV CX, 16 ; LIMPIAR EL RENGLON 2 DEL - MOV BX,OFFSET BLANCO ; DISPLAY. CALL MENSAE

MOV AL,OCOH ; COLOCAR EL CURSOR AL INICIO - CALL VERIFICAR OUT DX,AL

; DEL RENGLON 2 DEL DISPLAY.

Page 69: Sistema'maestro esclavo 80188 8031 para aplicaciones

POP DX POP AX RET

RENGLON2 ENDP

PUSH AX PUSH BX PUSH CX PUSH DX PUSH DS

MENS: MOVAX,CX ; DESPLIEGA EL MENSAJE - XLAT ; DE LA TABLA APUNTADA - CALL VERIFICAR ; POR BX INC DX OUT DX,AL LOOP MENS

POP DS POP DX POP cx POP BX POP AX RET

MENSAJE ENDP

............................................................................ SACA-DISPLAY PROC NEAR ; envja a display el caracter contenido en el registro AL.

CALL VERIFICAR INC DX OUT DX.AL

RET

SACA-DISPLAY ENDP

PUSH BX PUSH CX

Page 70: Sistema'maestro esclavo 80188 8031 para aplicaciones

PUSH DX PUSH SI

INI-OBTEN-NUM:

XOR AX,AX MOV SI,AX

BUSCANUM: CALL TECLA

JE RETURNVAL CMP AL,'E' ; SI LA TECLA OPRIMIDA ES ENTER -

; SE MANDA A VALIDAR ESTA TECLA ...

NüMVAL: CMPAL,39H ; SI LA TECLA OPRIMIDA NO ES UN - JA BUSCANUM ; NUMERO (AL>39), SE REGRESA A - JMP SACANüMS ; OBTENER NUEVO VALOR.. .

RETURNVAL: CMP S1,OOOOH JE BUSCANUM

; SI SI (REGISTRO) = O, NO HAN - ; ENTRADO NUMEROS, ENTONCES -

JMP OBTENVAL ; EL RETURN AUN NO ES VALIDO ...

SACANLJMS: CALL SACA-DISPLAY ; SE MANDA A DISPLAY EL NUMERO -

; QUE SE TECLEO ...

SUB AL,30H PUSH AX

; SE OBTIENE EL VALOR DECIMAL DE - ; LA TECLA OPRIMIDA (SIEMPF DIGITO) -

INC SI ; Y SE GUARDA EN PILA

CMP SI,0003H ; SI SI (REGISTRO) = 3. NO SE - JE OBTENVAL JB BUSCANUM

; ESPERAN MAS ENTRADAS; ; SI S K 3 , SE ESPERA RETURN...

:AHORA SE OBTIENE EL VALOR DECIMAL, DEL NUMERO ENTRADO DESDE EL TECLADO

OBTENVAL: XOR BX,BX

UNIDAD: POPAX : SE SACA UNIDAD ADD BX,AX DEC SI CMP S1,OOOOH JA DECENA JMP TERM

; SUMAR A BX UNIDADES

; SI SI >= 2, EXISTEN DECENAS ...

DECENA: POPAX ; SE SACA DECENA (EN AX) MOV CX, 10D MUL cx ADD BX,AX

; AX <- AX*10 ; SUMAR A BX DECENAS

Page 71: Sistema'maestro esclavo 80188 8031 para aplicaciones

DEC SI CMP S1,OOOOH JA CENTENA JMP TERM

; SI SI =< 1, EXISTEN CENTENAS ...

CENTENA: POPAX MOV CX, lOOD MUL cx ADD BX,AX DEC SI

; SE SACA CENTENA

; AX <- AX*100 ; S U M A R A BX CENTENAS

TERM: MOVAX,BX ; MOVER A AX EL RESULTADO CMP AX,lD JB OBTEN CMP AX,200D JA OBTEN JMP SAL-OBTEN-NUM

OBTEN: CALL RENGLON2 JMP INI-OBTEN-NUM

SALOBTEN-NUM:

POP SI POP DX POP cx POP BX RET

OBTEN-NUM ENDP

PUSH BX PUSH DX PUSH DS

MOV AX,08000H MOV DS,AX

WELVE: XOR AX,AX

OUT OlH,AL MOV AL,SOH ; PREPARA PARA RECIBIR SEYAL -

; DE UNA TECLA

IN AL,OIH AND AL,07H JZ VUELVE

: VERIFICA SI SE HA OPRIMIDO TECLA ; WELVE HASTA QUE SE OPRIME TECLA

XOR AX,=

IN AL,OOH MOV BX, OFFSET COD-TECLA OBTIENE DE LA TABLA COD-TECLA -

; EL CODIGO DE LA TECLA OPRIMIDA.. ~

Page 72: Sistema'maestro esclavo 80188 8031 para aplicaciones

XLAT

POP DS POP DX POP BX RET

TECLA ENDP

............................................................................ ; mensajes utilizados para el despliegue de men&.

MENU1-1 MENü1-2

: DB ' :ROTOM REVOM' : DB ' QZI.2 RED.1'

MENü2-1 MENü2-2 : DB ' RiLAS.3'

: DB ' .TNOC.2 SOSAP. 1'

MENü3-1 MENü3-2 : DB' '

: DB ' :?SOSAP SOTNAUC'

MENü4-1 MENU4-2

: DB ' RARAP. 1 ' : DB ' ?)s/S( RILAS'

BLANCO : D B ' I

............................................................................ ; tabla para codificar el teclado utilizado con el sistema minimo.

COD-TECLA : DB ',',20h,20h,'V','X','N','/"40h DB '.',20h,'Z','B','C','M',20h,20h DB ':',20h,'S','H','F','K1,'=',20h

DB 'L',20h,'A','G','D',",';',20h DB 'P',20h,'W,'Y','R','I','*',131~ DB 20h,'2','4','8','6','0',20h,20h DB 20h,'1','3','7','j','9',20h,OSh

DB '-','Q','E','U','T','O,'+',2Oh

Page 73: Sistema'maestro esclavo 80188 8031 para aplicaciones
Page 74: Sistema'maestro esclavo 80188 8031 para aplicaciones

4

c 2 H K ;(

a

I

n O

\ / I

P O

4NtOU mmmm

aaaaaaaa v 4 N bl I u1 iD P m

m aI -4b

I 1

Page 75: Sistema'maestro esclavo 80188 8031 para aplicaciones

I WR 1 I

I

A

RD L-pp-1

l

A L BUS D E DATOS D E L MC 8 0 1 8 8

I VICTOR ROJAS GARCIA / HECTOR CORTES LEON

T i t l e

S r z e p o c u m e n t Number

CONTROL D E U E M O R I A DINRMICA

FE

Page 76: Sistema'maestro esclavo 80188 8031 para aplicaciones

. . . . . . . .. . .. . . ROJQ-BLñNCO j 1w12

I

j 11.5U :STEP: I.

DRIVER P ñ R ñ EL MOTOR DE PASOS

ñ I at-: November 27. 19971 Sheet Of

Page 77: Sistema'maestro esclavo 80188 8031 para aplicaciones

BIBLIOGRAFÍA

LIBROS Y PUBLICACIONES

0 Microprocesosrs and interfacing. Programing and hardware Douglas V. Hall Segunda Edición Editorial McGraw-Hill E.U.A., 1992.

Lenguaje ensamblador para microcomputadoras IBM J. Terry Godfi-ey Traducción de la primera edición en inglés Editorial Prentice-Hall Hispanoamericana México, 199 1.

0 Desarrollo y Programación de Sistemas Digitales, Familia de microprocesadores Intel MCS5 1 SO3 1 - SO5 1 - 875 1

Victoriano Angel Martínez Sánchez Editorial Addison- Wesley Iberoamericana U.S.A, 1993.

Tarjeta de Experimentación Para un Microprocesador SO 1 88 Silverio E. León Julio, Agustín Suárez F., Enrique Hernández M. Editado por la UAM, unidad Iztapalapa, Dpto de Ing. Eléctrica Mexico, D. F.

Microprocessors Systems M. Sami, L. Thompson, L. Mezzalira (Eds.)

Digital position control by means of a dedicated microcomputer J. Billingsley and H. Singli

North - Holland Publishing Company O EUROMICRO, England, 1980.

26

Page 78: Sistema'maestro esclavo 80188 8031 para aplicaciones

MANUALES

Fast and LS TTL Quinta edición, segunda impresión Editado por @Motorola, Inc. U.S.A., 1992.

Application Note, Small DC Motor Control Jafar Modares, Eco Aplications Editado por @Intel Co. U.S.A., 1988.

Application Brief, DRAM RefresldControl with the 80 1 86/80 1 88 Steve Farrer, Applications Engineer Editado por @Intel Co. U.S.A., 1987.

Application Note, An Introduction to the Intel MCS-5 1 Single-Chip Microcomputer Fainily

John Wharton, Microcontroller Aplications Editado por @Intel Co. U.S.A., 1980.

0 80 188 High Integration 8-bit Microprocessor Editado por @Intel Co. U.S.A., 1989.

0 Character LCD Modules Interface Data, LCD Matrix Modules Editado por @AND Co. U.S.A., 1991.

27

Page 79: Sistema'maestro esclavo 80188 8031 para aplicaciones

PÁGINAS EN INTERNET

The 805 1 inicrocontroller, A Resourse and Tutorial for the 805 1 Developer Provided courtesy of Vault Information Services

Dirección: http ://www .vaultbbs. com/-csteiner/80 5 1 isr .litin

Example 805 1 Board Desisgti, A low-cost development system

http://www .ece.orst.edu/-pau1/805 1 -goodies/dev-board-testing.htin1 Dirección:

About the 805 1 microcoiitroller Dirección: littp://www.proaxis.com/-iguanalabs/805 1 pin.jpg

28