Sistema`maestro esclavo 80188

Anuncio
UNIVERSIDAD A U T ~ N O M AMETROPOLITANA
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)
Í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 188, 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
Estados, 19
Interrupción (bit O), 19
Operación de DMA (bit 1), 20
Error (bit 5),20
Evento (bits 4 a 2), 20
I
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),
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 l a 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
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 inaestroesclavo. 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
disp1ay.
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 188), 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
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-8031 .
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
LA
TARJETA
DE
MICROPROCESADOR 80188.
EXPERIMENTACION
PARA
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
Adicionalmente el microprocesador 80 188 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 80188 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 80188 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:
0
Una memoria ROM de 8 Kbytes (2764).
Una memoria RAM estática de 8 Kbytes (3234).
Controlador de teclado y despliegue (8279).
Controlador de comunicación serial, UART (8250).
Cristal de cuarzo de 16 Mhz.
5
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.
Se presenta a continuación un diagrama a bloques del sistema iníniino
con microprocesador 80 188.
ROM
27C64
RAM
62C64
74LS373
80188
16Mhz
-
Qii
UART 8250
ECLADO 8279
TECLADO
DIAGRAMA A BLOQUES DE SISTEMA MINIM0
CON MICROPROCESADOR 80 188.
6
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 80188
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,D X 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
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
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
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 l a direccion de 20 bits y de esto se
encarga el sumador dedicado que se describe a continuación.
10
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
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 80188 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
BREVE DESCRIPCI~NDEL 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
DESCRIPCI~NDE LOS ELEMENTOS
PRINCIPALES DE LA INTERFACE
Esta parte describe brevemente las características mas importantes de el
microprocesador 80 188 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 80188 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
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
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~NENTRE EL SISTEMA MÍNIMO
Y EL MICROCONTROLADOR.
El sistema mínimo basado en el microprocesador 80 188 se comunica con
el microcontrolador atraves del sistema de memoria y de los registros de
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
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 188, 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
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
movimiento de el motor a efectuarse será a la derecha.
0
0
1
que el
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
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 80188 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
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
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 80188 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
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 80188 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
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
Para hacer girar el motor en sentido contrario solo es necesario ut lizar la
misma secuencia de valores para los SW’s pero en dirección contraria.
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 &unrango 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
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
APENDICE A
LISTADOS DE PROGRAMAS
I11
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.
-
*
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
; REVISA HASTA QUE EL DISPLAY ...
; ESTE DESOCUPADO.
.............................................................................
LIMPIAR MACRO
MOV AL,OlH
VERIFICAR
OUT DX,AL
ENDM
; LIMPIA TODO EL DISPLAY Y...
; PONE CURSOR AL INICIO.
.............................................................................
MENSAJE MACRO
LOCAL MENS
MENS: MOVAX,CX
XLAT
MOV SI,BX
VERIFICAR
INC DX
OUT DX,AL
MOV BX,SI
LOOP MENS
ENDM
; DESPLIEGA EL MENSAJE ; DE LA TABLA APUNTADA ; POR BX ...
.............................................................................
LIMPIA-RENGLON MACRO
LOCAL CLS
MOV AL,OCSH
VERIFICAR
OUT DX,AL
ENDM
; COLOCA EL CURSON EN LA POS. 4
; DEL RENGLON 2 DEL DISP.
-
.............................................................................
CHECKSUM MACRO
LIMPIAR
MOV AL,83H
VERIFICAR
OUT DX,AL
; LUGAR 3 DEL DISPLAY
; DESPLEGAR EL MENSAJE MOV BX,OFFSET VER-ROM
; CHECK-ROM EN DISPLAY.. .
MOV CX,OOO9H
MENSAJE
ENDM
.............................................................................
DIRECROM MACRO
LOCAL SEGNUM,TRI,ESPERA
MOV AX,OFEOOH
MOV DS,AX
MOV AL,46H
VERIFICAR
INC DX
OUT DX,AL
MOV AX,DI
AND AX,OFOOOH
MOV DX,CX
MOV CL,O4H
SHR Ax,CL
MOV CX,DX
CMP AH,OlH
JNE SEGNüM
MOV AL,46H
VERIFICAR
INC DX
OUT DX,AL
; ESCRIBE F
; PROTEGE VALOR DE CX
; REALIZA UN CORRIMIENTO A LA DERECHA
; RECUPERA VALOR DE CX
; VERIFICA EL SEGUNDO NUMERO ; DE LA DIRECCION
; ESCRIBE EL SEGUNDO NUMERO (F)
JMP TRI
SEGIWM:
MOV AL,45H
VERIFICAR
INC DX
OUT DX,AL
TRI:
; ESCRIBE EL SEGUNDO NUMERO (E)
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
; ESCRIBE EL TERCER NUMERO
; PROTEGE EL VALOR DE CX
SHR Ax,CL
MOV CX,DX
; RECUPERA EL VALOR DE CX
MOV BX,OFFSET NLTMERO
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
MOV CX,0050H
ESPERA: LOOP ESPERA
MOV CX,BX
ENDM
; ESCRIBE EL QUINTO NUMERO
;PROTEGEELVALORDECX
; RECUPERA EL VALOR DE CX
.............................................................................
ERR-ROM MACRO
LIMPIAR
; DESPLIEGA EL MENSAJE MOV BX,OFFSET ROM-MAL
; ERROR-ROM EN DISPLAY.. .
MOV CX,0009H
MENSAJE
ENDM
.............................................................................
ROMBIEN MACRO
LOCAL REPITE,AQUI
SUB cx,cx
LIMPIAR
MOV BX,OFFSET ROM-OK
MOV CX,0008H
MENSAJE
; ESCRIBE EL MENSAJE
; ROM-BIEN EN DISPLAY.. .
; GENERA
MOV BL, 10D
REPITE: MOV CX,60000D
AQUI: LOOP AQUI
DEC BL
CMP BL,OOD
JNZ REPITE
ENDM
;UN -
-
-
; RETARDO...
.............................................................................
CHEKRAM MACRO
LIMPIAR
MOV AL,83H
VERIFICAR
OUT DX,AL
; LUGAR 3 DEL DISPLAY
MOV BX,OFFSET VER-RAM
DESPLIEGA EL MENSAJE
-
; CHECK-RAM EN DISPLAY..
MOV CX,0009H
MENSAJE
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 1H
E DESP-1
MOV AX,'O'
VERIFICAR
INC DX
OUT DX,AL
JMP B3
DESP-1: MOV AX,'l'
VERIFICAR
INC DX
OUT DX,AL
B3: MOVAX,DI
AND AX,OOFOOH
MOV CL,OSH
S H R AX.CL
B2:
; ESCRIBE CUARTO NUMERO (O)
; ESCRIBE CUARTO NUMERO (1)
MOV BX,OFFSET NUMERO
XLAT
VERIFICAR
INC DX
OUT DX,AL
; ESCRIBE TERCER NUMERO
MOVAX,DI
AND AX,OOOFOH
MOV CL,O4H
SHR AX,CL
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
XLAT
VERIFICAR
INC DX
OUT DX,AL
; ESCRIBE PRIMER NUMERO
MOV CX,0050H
AGUANTA: LOOP AGUANTA
ENDM
.............................................................................
ERROR-RAM MACRO
LIMPIAR
; DESPLIEGA EL MENSAJE
MOV BX,OFFSET RAM-MAL
; ERROR-RAM EN DISPLAY ...
MOV CX,0009H
MENSAJE
-
ENDM
.............................................................................
RAM-OK MACRO
LOCAL REP,AQ
LIMPIAR
; DESPLIEGA EL MENSAJE
MOV BX,OFFSET RAM-OKEY
MOV CX,0008H
; RAM-BIEN EN DISPLAY ...
MENSAJE
MOV BL, 10D
REP: MOV CX,60000D
AQ: LOOPAQ
DEC BL
CMF' BL,OOD
JNZ REP
; GENERA -
;UN
-
; RETARDO...
ENDM
CODESG SEGMENT
ASSUME CS:CODESG,SS:STACK
ORG lFFOH
MOV DX,OFFAOH
MOV AX,OFE3DH
OUT DX,AL
DB OEAH
D W OOOOOH
D W OFEOOH
; PROGRAMACION DEL UMCS : CON TRES CICLOS DE ESPERA
-
ORG OOOOH
MOV DX,OFFA2H
MOV AX,OO 1FDH
OUT DX,AL
MOV DX,OFFA4H
MOV AX,0003DH
OUT DX,AL
; PROGRAMACION DEL LMCS ; CON TRES CICLOS DE ESPERA
; 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
XOR AX,AX
MOV SS.AX
; INICIALIZACION DE LA
; PILA ...
-
..........................................................................
; 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
MOV DX,OFFC4H
MOV AX,0500H
MOV AX,OOOOH
OUT DX,AX
; PARTE ALTA DEL DMA DESTINO
; 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
MOV DX,OFF62H
; SE ESTABLECE CADA TIEMPO DE INT.
MOV AX3D
OUT DX,AX
; TERMINA INICIALIZACION DE REFRESCO DE MEMORIA
MOV DX,0080H .
MOV CX,OAOOOH
RTDO: LOOP RTDO
MOV AL,38H
OUT 80H.AL
; ESTABLECE MODO DE DISPLAY
MOV CX,O5000H
LOOP
RTD 1
RTD 1 :
OUT 80H,AL
RTD2:
MOV CX,02500H
LOOP RTD2
OUT 80H.AL
MOV AL,38H
VERIFICAR
OUT DX,AL
MOV AL,OFH
VERIFICAR
OUT DX,AL
LIMPIAR
MOV AL,O6H
VERIFICAR
OUT DX.AL
MOV AL,85H
VERIFICAR
OUT DX,AL
......................
; PARA 2 LINEAS Y CARACTERES : DE 5x7
; HABILITA DISPLAY Y CURSOR
; MODO DE DESPLAZAMIENTO DEL
; CURSOR
: 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
DB OEAH
; ESCRIBE CHEKSUM EN DISP.
D W 1OOOH
DW OFEOOH
ORG lOOOH
LIMPIA-RENGLON
DIRECROM
MOV AL,ES:[DI]
ADD CX,AX
INC DI
CMP DI, lFFEH
JNE SALTO
JMP SIGUE
SALTO: DB OEAH
D W 1OOOH
DW OFEOOH
SIGUE:
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
ERROR-ROM: ERR-ROM
HLT
ROMFINE: ROM-BIEN
; 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.
: REGRESA A SUMAR MIENTRAS
; DI<=lFFFD...
-
; SI EXISTE ERROR EN ROM
; SI NO EXISTE ERROR EN ROM
CONTI: MOV AX,OOOOH
MOV ES,AX
S U B DI,DI
SUB cx,cx
S U B 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
; ESCRIBE EN CADA LOCALIDAD 20H
NOP
: CODIGO DE LOS ESPACIOS EN BLANCO.
NOP
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
OKRAM: RAM-OK
: SI HUBO ALGUN ERROR
_-__________--_
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
IN AL,DX
AND AL,7FH
OUT DX,AL
MOV DX, 104H
MOV AL,OBH
OUT DX,AL
; CONFIGURA PALABRA DE 8 BITS CON 2 BITS
; DE PARADA Y SIN PARIDAD.
; MODIFICA EL VALOR DE DLAB PARA PONERLO
: EN O.
; APUNTA AL REGISTRO DE CONTROL DE MODEM
; PARA LEVANTAR LAS LINEAS RTS,DTR Y OUT2
DB O E M
DW 035OH
DW OFEOOH
ORG 035OH
CALL CHECKDRAM
CALL LIW-PUERTO
CALL INICIO
CALL PROCESS
CALL MENSA-FINAL
DB OEAH
DW OOOOH
DW 800OH
; LIMPIAR PUERTO.
; INICILIZAR CAPTURA.
; REALIZAR CAPTURA DE CODIGO.
; 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
; DESPLIEGA EL MENSAJE
MOV BX,OFFSET VER-DRAM
; CHECK-RAM EN DISPLAY.. .
MOV CX,OOOAH
MENSAJE
MOV AL,OC4H
VERIFICAR
OUT DX,AL
MOV AX,800OH
MOV ESAX
SUB DI,DI
SUB cx,cx
SUB AX,Ax
CELDA:
-
LIMP1A-RENGLON
CALL DELOY
MOV AL,20H
; ESCRIBE EN CADA LOCALIDAD 20H
MOV ES:[DI],AL
; CODIGO DE LOS ESPACIOS EN BLANCO.
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
; LEE EN BL EL VALOR DE CADA LOCALIDAD
MOV BL,ES: [DI]
; COMPARA SI:VALOR ESCRITO=VALORLEIDO
CMP BL,AL
; NO, ENTONCES HAY ERROR EN RAM
JNEDRAMMAL
JMP OK2
OK2:
INCDI
CMP DI,4000H
JB CELDA
: SALTA A COMPARAR MIENTRAS SI<2000H
JMP OKDRAM
DRAMMAE:
ERROR-RAM
HLT
OKDRAM: RAM-OK
: SI HUBO ALGUN ERROR
; SI DRAM CORRECTA
POP ES
POP DX
POP cx
POP BX
POP A x
RET
CHECKDRAM ENDP
DESCARGA PROC NEAR
PUSH CX
PUSH BX
PUSH DX
PUSH DS
MOV CX,8000H
MOV DS,CX
XOR CX,CX
MOV SI,CX
; INICIALIZA EL DS Y SI PARA LA
; DESCARGA. (LOCALIDAD SOOOH)
CICLO:
CALL RECIVEBYTE
CMP AL,255
JNE METE
MOV BL,DS:[SI-11
CMP AL,BL
JNEMETE
MOV BL,DS:[SI-2]
CMP AL,BL
JE FIN-DESCAR
; R E C I E UN BYTE DE CODIGO
; OBJETO
; VERIFICA QUE EL VALOR RECIVIDO NO
; SEA FIN DE ARCHIVO
; SALTA A METER DATO.
; 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
CHEQUEO:
IN AL,DX
; TESTE0 PARA VERIFICAR LA
; POSIBILIDAD DE HABER "DESPERTADO"
AND AL,OOOOOOO 1B
CMP AL,OOOOOOO 1B
JNE CHEQUEO
; SI APENAS HABIA SALIDO DE SU
; ESTADO DE RESET. SE LIMPIA EL
; PUERTO DEL 8250.
MOV DX, 1OOH
IN AL,DX
FINAL:
POP DX
POP A x
RET
LIMPPUERTO ENDP
_-___-___---INICIALIZA
A C PTUR DE COD
INICIO PROC NEAR
PUSH AX
PUSH BX
PUSH CX
LIMPIAR
; ESCRIBE EL MENSAJE
MOV BX,OFFSET ESP-DESC
; 'ESPERANDO DESCARGA'
MOV CX, 15D
MENSAJE
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
;ESCRIBE EL MENSAJE
MOV BX,OFFSET DESCANDO
; 'DESCARGANDO....I
MOV CX, 15D
MENSAJE
-
; PROCEDIMIENTO QUE REALIZA
CALL DESCARGA
; LA DESCARGA D E I CODIGO
; EJECUTABLE EN LA RAM
LIMPIAR
;ESCRIBE EL MENSAJE
MOV BX,OFFSET FIN-DESC
; 'FIN DE DESCARGA'
MOV CX, 15D
MENSAJE
-
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
TESTEA :
IN AL,DX
AND AL,00000001B
CMP AL,00000001B
JNE TESTEA
MOV DX, lOOH
IN AL,DX
RET
RECIVE-BYTE ENDP
; TESTE0 PARA VERIFICAR LA
; POSIBILIDAD DE RECIvlR DATO
; RECIVE VALOR DEL PUERTO
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
; DESPLIEGA EN DISPLAY EL
MOV CX, 13
; MENSAJE: "EJECUTANDO EL MOV BX,OFFSET EJECUTA
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
; TABLA PARA DESPLEGAR VALOR DB 54,55,56,57
; 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'
ROM-OK : DB ' NEIB-MOR'
RAM-OKEY DB ' NEIB-MAR'
VER-DRAM DB ' MARD-KCEHC'
; MENSAJES QUE SE DESPLIEGAN
-
: DURANTE LA VERIFICACION DE ; LA MEMORIA ROM ;Y DURANTE LA ; VERIFICACION DE LA MEMORIA ; RAM...
ESP-DESC : DB ' .CSED ODNAREPSE'
: MENSAJES QUE SE DESPLIEGAN DESCANDO DB ' ....ODNAGRACSED'
; DURANTE LA DESCARGA DEL PROFIN-DESC : DB ' AGRACSED ED NIF'
; GRAMA EJECUTABLE ...
EJECUTA : DB ' LE ODNATUCEJE'
EJECUTA2 : DB ' MARD NE AMARGOW
............................................................................
CODESG ENDS
END
...........................................................................
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/97
...........................................................................
#include <stdlib. h>
#include <stdio.h>
#include <string. h>
#include <conio.h>
#include <graphics.h>
#define MIN-X
#define M A X X
#define MIN-Y
#define MAX-Y
10
70
5
20
#define MAXNOM 30
#define MAX-RET 19
/* Referentes a la ventana de presentacion
/* resultados.
*/
*/
/* Maxima longitud del nombre del archivo a
/* transmitir.
*I
/* Maxima cantidad de tiempo en los retardos. */
void inicializacion();
void ventana
0;
void apertura
(); /* Funciones necesarias para realizar el pro- */
void puntos
(); I* grama de descarga.
*/
void mensaje-inial ();
void proceso
();
void mensaje-final ();
void envia
();
FILE *archivo;
/* Referentes al nombre del archivo a abrir */
char nombre[MAX-NOM]; /* y su apuntador de archivo asociado.
*/
main()
{
clrscr();
inicializacion();
textmode(2);
textmode(C80);
ventana ();
apertura();
I* realiza la apertura de cierto archivo ejecuta*!
ble para su posterior transmision.
mensaje-inial() ;
/* realiza la transmision del archivo serialmente
proceso();
byte por byte hacia la tarjeta.
*I
mensaje-final();
envia();
textmode(2);
/* restablece el modo texto original. , */
return( 1);
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 a s
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
asm int 14h
/* INIC. DEL PUERTO SERIAL */
I* A 600 BAUDS.
*I
asm sor as,ax
asm mov ds,03fSh
asm in al,ds
asm pop d s
asm pop c s
asm pop b s
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++)
{
I
a
for (mg=MIN-X; mg <= MAX-X; mg++)
cprintf (" ");
cprintf ("\n");
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
gotohy (21,3);
scanf ("%sol,
nombre);
\not);
/* 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
gotoxy (18,6);
delline();
insline();
cprintf ("%s",nombre);
getch(): clrscr();
textinode(2);
exit( I);
1:
%SI');
,
void puntos(void)
......................................................................
Descripcion: Utilizada para la presentacion de resultados en las comparaciones.
.....................................................................
{
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 archivo ejecutable.
.....................................................................
{
puntos();
gotoxy (18,lO);
cprintf (" Descarga Finalizada\n");
gotoxy (1,111;
1
void mensaje-inial(void)
......................................................................
Descripcion: Despliega mensaje sobre el proceso de descarga del archivo ejecutable.
.....................................................................
goto'q (17,6);
cprintf ("Descargando archivo %s",nombre);
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
asrn mov dx,03f8h
asm out dx,al
delay (MAX-RET);
/* MANDA EL PRIMER CARACTER CO- */
/* MO AVISO DE QUE EL PROCESO */
/* DE DESCARGA VA A COMENZAR. */
while (caracter != EOF)
{
asrn mov bx,O
asm mov ax,caracter
asm mov dx,03fgh
asrn out dx,al
delay (MAX-RET);
caracter = getc(archiv0);
delay (MAX-RET) ;
/* ESTE CICLO MANDA A PUERTO */
/* SERIAL EL ARCHIVO HASTA */
/*LLEGAR AL ULTIMO BYTE */
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 d s
asrn pop cx
asm pop bx
asmpogas 1
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
asm out ds,al
1
while (caracter!='q');
asm pop dx
asm pop cx
asm pop bs
asm pop ax
/* MANDAR A PUERTO SERIAL EL VALOR */
/* DEL CAñACTER TECLEADO...
*/
...........................................................................
;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
INICIO:
SETB EX0
SETB EA
MOV SP,#56H
; HABILITA INTERRUPCION EXT. O
; HABILITA LAS INTERRUPCIONES
; INICIALIZA EL STACK
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
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
; INICIALIZA LOS REGISTROS
; CONTADOR (54H)Y REG-AUX(55H).
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
SALIDA:
MOV R 1,#02H
RET1
...........................................................................
; RUTINA DEL COMANDO 2. MLJEVE MOTOR EN SENTIDO DE LAS MANECILLAS DEL
RELOJ;
ADELANTE
JMP AVANZA
AVANZA:
CLR P1.0
CLR P1.1
SETB P1.2
SETB P1.3
MOVR5,#35H
.
JMP ETIQUETA
ETIQUETA:
MOV R7,#35H
DJNZ R7,$
DJNZ R5,ETIQUETA
SETB P1.0
CLR P1.l
CLR P1.2
SETB P1.3
MOV R5,#35H
JMP ETIQUETA 1
ETIQUETA 1:
MOV R7,#35H
DJNZ R7,$
DJNZ R5,ETIQUETAl
SETB P1.0
SETB P1.l
CLR P1.2
CLR P1.3
MOV R5,#35H
JMP ETIQUETA2
ETIQUETA2:
MOV R7,#35H
DJNZ R7,$
DJNZ RS,ETIQUETA2
CLR P1.0
SETE3 P1.l
SETB P1.2
CLR P1.3
MOV R5,#35H
JMP ETIQUETA3
ETIQUETA3 :
MOV R7,#35H
DJNZ R7,$
DJNZ RS,ETIQUETA3
RET
...........................................................................
: RUTINA DEL COMANDO 2. MUEVE MOTOR EN CONTRA DE MANECILLAS DEL RELOJ
ATRAS:
JMP RETROCEDE
RETROCEDE:
CLR P1.O
CLR P1.l
SETB P1.2
SETB P1.3
MOV R5,#35H
JMP ETIQUETA4
ETIQUETA4:
MOV R7,#35H
DJNZ R7,$
DJNZ RS,ETIQUETA4
CLR P1.O
SETB P1.l
SETB P1.2
CLR P1.3
MOV R5,#35H
JMP ETIQUETA5
ETIQUETA5 :
MOV R7,#35H
DJNZ R7,$
DJNZ R5,ETIQUETAS
SETB P1.O
SETB P1.l
CLR P1.2
CLR P1.3
MOV R.5,#3.5H
JMP ETIQUETA6
ETIQUETAG:
MOV R7,#35H
DJNZ R7,$
DJNZ R5,ETIQUETAó
SETB P1 .O
CLR P1.l
CLR P1.2
SETB P1.3
MOV R5,#35H
JMP ETIQUETA7
ETIQUETA7:
MOV R7,#35H
DJNZ R7,$
DJNZ RS,ETIQUETA7
RET
...........................................................................
; 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
ETIQUETAS:
MOV R7,#50H
DJNZ R7,$
DJNZ R5,ETIQUETAS
DEC A
CJNE A,#OOH,PASOD2
JMP SAL-PAS-AD
PASOD2:
SETB Pl.0
CLRP1.l
CLR P1.2
SETB P1.3
MOV R5,#50H
JMP ETIQUETA9
ETIQUETA9 :
MOV R7,#50H
DJNZ R7,$
DJNZ RS,ETIQUETA9
DEC A
CJNE A,#OOH,PASOD3
JMF’ SAL-PAS-AD
PASOD3
SETB P1.0
SETB P1.l
CLR P1.2
CLR P1.3
MOV R5,#50H
JMP ETIQUETA 1O
ETIQUETA10:
MOV R7,#50H
DJNZ R7,$
DJNZ R5,ETIQUETAlO
DEC A
CJNE A,#OOH,PASOD4
JMP SALPAS-AD
PASOD4
CLR P1.0
SETB P1.l
SETB P1.2
CLR P1.3
MOV R5,#50H
JMP ETIQUETA 1 1
ETIQUETA 11:
MOV R7,#50H
DJNZ R7,$
DJNZ R5,ETIQUETAll
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 P I . l
SETB P1.2
SETB P1.3
MOV R5,#50H
JMP ETIQUETA 12
ETIQUETA 12:
MOV R7,#50H
DJNZ R7,$
DJNZ RS,ETIQUETAl2
DEC A
CJNE A,#OOH,PASOT2
JMP SALPAS-AT
PASOT2
CLR P1.0
SETB P1.l
SETB P1.2
CLR P1.3
MOV R5,#50H
JMP ETIQUETA 13
ETIQUETA 13:
MOV R7,#50H
DJNZ R7,$
DJNZ RS,ETIQUETA13
DEC A
CJNE A,#OOH,PASOT3
JMP SALPAS-AT
PASOT3
SETB P1.0
SETB P1.l
CLR P1.2
CLR P1.3
MOV R5,#50H
JMP ETIQUETA 14
ETIQUETA 14:
MOV R7,#50H
DJNZ R7,$
DJNZ RS,ETIQUETAl4
DEC A
CJNE A,#OOH,PASOT4
JMP SALPAS-AT
PASOT4
SETB P1.0
CLR P1.l
CLR P1.2
SETB P1.3
MOV R5,#50H
JMP ETIQUETA 15
ETIQUETA 15:
MOV R7,#50H
DJNZ R7,$
DJNZ R5,ETIQUETAlS
DEC A
CJNE A,#OOH,RETROCEDEPASS
SALPAS-AT
RET
...........................................................................
; RUTINA QUE OBTIENE EL NUMERO DE PASOS QUE SE MOVERA EL MOTOR
OBTEN-NüM:
; RESPALDO DE R2
MOV 52H,R2
INC 54H
; CONTADOR DE TIPO DE NLJM.
MOV R2,54H
CJNE R2,#OlH,SEG-NüM
MOV 55H,A
MOV R2,52H
RET
SEG-NUM:
SWAP A
ADD A35H
MOV R2,#02H
RET
END
; FIN DEL PROGRAMA
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
MOV AL,ODOH
OUT OIH,AL
MOV AL,90H
OUT OlH,AL
; PROGAMA RELOJ PARA EL 8279
; PARA LIMPIAR RENGLONES DE DISPLAY RAM
; PROGRAMA Read FIFO/Sensor RAM
COMIENZO:
CALL MENUPRINCIPAL
: PROCEDIMIENTOS UTILIZADOS:
; LLAMA AL MENU PRINCIPAL
MENU-PRINCIPAL PROC NEAR
; este procedimiento desplliega el men&principal
; de inicio.
-
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
INIMENS 1:
; DESPLIEGUE DEL MENU INICIAL:
CALL LIMPIAR
;
"MOVER
MOTOR
MOV CX, 12
MOV BX,OFFSET MENU1-1
; 1.DER 2.IZQ"...
CALL MENSAJE
-
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
; OBTIENE RESPUESTA DEL TECLADO.
; SACA DATO OBTENIDO AL DISPLAY.
JE MENU3
JMP INIMENS1
MENU2 :
MOV AL,81H
J M P SALMENUl
MENU3:
MOV AL,82H
SALMENUl:
CALL LIW-PUERTO
CALL COMANDO-AL
CALL MENU-2
POP DS
POP DX
POP cx
POP BX
POP Ax
RET
MEW-PRINCIPAL ENDP
; LIMPIAR PUERTO.
; MANDAR DATO HACIA EL MICROC.
; LLAMAR AL MENU 2
PUSH BX
PUSH CX
PUSH DX
PUSH DS
INIMENU2:
;DESPLIEGA EN DISPLAY EL CALL LIMPIAR
MOV CX, 15
; MENU:
; 1.PASOS 2.CONT.
MOV BX,OFFSET MENU2-1
; 3.SALIR " ...
CALL MENSAJE
'I
CALL RENGLON2
MOV CX,8
MOV BX,OFFSET MENU2-2
CALL MENSAJE
CICLO2: CALL TECLA
CALL SACA-DISPLAY
CMP AL,49D
JB CICLO2
; VERIFICA QUE EL COMANDO
; ESTE ENTRE 1 Y 2.
CMP AL3 1D
JA CICLO2
CMP AL,49
JE PASOS
CMP AL,50
JE CONT
CMP AL,51
JE SALIDA
JMP INIMENUZ
SALIDA:
DB OEAH
DW 00150H
D W 08000H
; SI SE ESCOGIO OPCION 3 SE ; SALTA AL MENU INICIAL.
PASOS:
; SI SE ESCOGIO OPCION 1 SE MOV AL,84H
; ENVIA COMANDO DE RECONOCI-CALL LIW-PUERTO
; MIENTO (MOVIMIENTO A PASOS) CALL COMANDO-AL
; Y SE LLAMA AL SIGUIENTE MENU.
CALL MENU-3
JMP sALMENu2
-
; SI SE ESCOGIO OPCION 2 SE
CONT:
; ENVIA COMANDO DE RECONOCI-MOV AL,83H
; MIENTO (MOVIMIENTO CONTINUO) CALL LIMPPUERTO
; Y SE LLAMA AL SIGUIENTE MENU.
CALL COMANDO-AL
CALL MEW4
sALMENu2:
POP DS
POP DX
POP cx
POP BX
RET
MENU-2 ENDP
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
; DESPLEGAR EN DISPLAY EL MENCALL LIMPIAR
; SAJE:
MOV CX, 15
MOV BX,OFFSET MENU3-1
; CUANTOS PASOS ...
CALL MENSAE
I'
'I
CALL RENGLON2
MOV CX, 1
MOV BX,OFFSET MENu3-2
CALL MENSAJE
CICLO3 :
CALL OBTEN-NüM
SUB AH,AH
MOV AH&
AND AL,OFH
OR AL,OSOH
CALL LIMPPUERTO
CALL COMANDO-AL
MOV &,AH
AND AX,OOOFOH
SHR AX,OlH
; OBTENER EL W R O DE PASOS ; QUE VA A REALIZAR EL MOTOR
; Y ENVIAR DICHO NUMERO HACIA ; EL MICROCONTROLADOR...
-
S H R AX,OIH
SHR AX,OlH
S H R Ax.0lH
OR AL,080H
CALL LIMPPUERTO
CALL COMANDO-AL
DB O E A H
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
; DESPLIEGA EN DISPLAY EL ; MENSAE " SALIR Y ES-MOV CX, 12
MOV BX,OFFSET MENU4-2
; PERA A QUE EL USUARIO PRE; SIONE UNA S, MOMENTO EN EL CALL MENSAJE
; CUAL SE MANDA A PARAR AL MO; TOR ...
CICLO4: CALL TECLA
CALL SACA-DISPLAY
'I
CMP AL,'s'
JE SALIR
CMP AL,'S'
.JE SALIR
JMP INIMENUS
SALIR:
MOV AL,SFH
SALMEIWS: CALL LIMP-PUERTO
CALL COMANDO-AL
DB OEAH
DW 00 150H
DW 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
OUT DX,AL
; MANDA A PUERTO 181 EL VALOR CONTENIDO ; 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
AND &,O 1lOOOOOB
CMP A L , O 11OOOOOB
JE FINAL
; POSIBILIDAD DE HABER "DESPERTADO"
CHEQUEO:
IN AL,DX
AND AL,OOOOOOO 1B
; SI APENAS HABIA SALIDO DE SU
CMP AL,OOOOOOO 1B
; ESTADO DE RESET. SE LIMPIA EL
JNECHEQUEO
; PUERTO DEL 8250.
MOV DX, lOOH
IN AL.DX
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
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
CALL VERIFICAR
OUT DX,AL
; COLOCA EL CURSON EN LA POS. 4
: 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
CALL VERIFICAR
OUT DX,AL
; COLOCAR EL CURSOR AL INICIO
; DEL RENGLON 2 DEL DISPLAY.
-
-
POP DX
POP AX
RET
RENGLON2 ENDP
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
MENS: MOVAX,CX
XLAT
CALL VERIFICAR
INC DX
OUT DX,AL
LOOP MENS
; DESPLIEGA EL MENSAJE
; DE LA TABLA APUNTADA ; POR BX
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
-
PUSH DX
PUSH SI
INI-OBTEN-NUM:
XOR AX,AX
MOV SI,AX
BUSCANUM:
CALL TECLA
CMP AL,'E'
JE RETURNVAL
NüMVAL: CMPAL,39H
JA BUSCANUM
JMP SACANüMS
RETURNVAL:
CMP S1,OOOOH
JE BUSCANUM
JMP OBTENVAL
; SI LA TECLA OPRIMIDA ES ENTER ; SE MANDA A VALIDAR ESTA TECLA ...
; SI LA TECLA OPRIMIDA NO ES UN
; NUMERO (AL>39), SE REGRESA A ; OBTENER NUEVO VALOR.. .
-
; SI SI (REGISTRO) = O, NO HAN ; ENTRADO NUMEROS, ENTONCES ; EL RETURN AUN NO ES VALIDO...
SACANLJMS:
; SE MANDA A DISPLAY EL NUMERO CALL SACA-DISPLAY
; QUE SE TECLEO ...
SUB AL,30H
PUSH AX
INC SI
CMP SI,0003H
JE OBTENVAL
JB BUSCANUM
; SE OBTIENE EL VALOR DECIMAL DE ; LA TECLA OPRIMIDA ( S I E M P F DIGITO) ; Y SE GUARDA EN PILA
; SI SI (REGISTRO) = 3. NO SE ; ESPERAN MAS ENTRADAS;
; SI S K 3 , SE ESPERA RETURN...
:AHORASE OBTIENE EL VALOR DECIMAL, DEL NUMERO ENTRADO DESDE EL TECLADO
OBTENVAL: XOR BX,BX
UNIDAD: POPAX
ADD BX,AX
DEC SI
CMP S1,OOOOH
JA DECENA
JMP TERM
DECENA: POPAX
MOV CX, 10D
MUL cx
ADD BX,AX
: SE SACA UNIDAD
; SUMAR A BX UNIDADES
; SI SI >= 2, EXISTEN DECENAS ...
; SE SACA DECENA (EN AX)
; AX <- AX*10
; SUMAR A BX DECENAS
DEC SI
CMP S1,OOOOH
JA CENTENA
JMP TERM
CENTENA: POPAX
MOV CX, lOOD
MUL cx
ADD BX,AX
DEC SI
TERM: MOVAX,BX
CMP AX,lD
JB OBTEN
CMP AX,200D
JA OBTEN
JMP SAL-OBTEN-NUM
; SI SI =< 1, EXISTEN CENTENAS ...
; SE SACA CENTENA
; AX <- AX*100
; S U M A R A BX CENTENAS
; MOVER A AX EL RESULTADO
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
MOV AL,SOH
OUT OlH,AL
IN AL,OIH
AND AL,07H
JZ VUELVE
; PREPARA PARA RECIBIR SEYAL ; DE UNA TECLA
: VERIFICA SI SE HA OPRIMIDO TECLA
; WELVE HASTA QUE SE OPRIME TECLA
XOR AX,=
OBTIENE DE LA TABLA COD-TECLA
MOV BX, OFFSET COD-TECLA
; EL CODIGO DE LA TECLA OPRIMIDA..
IN AL,OOH
~
-
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 ' .TNOC.2 SOSAP. 1'
MENü3-1
MENü3-2
: DB ' :?SOSAP SOTNAUC'
: DB' '
MENü4-1
MENU4-2
: DB ' ?)s/S( RILAS'
BLANCO
:DB'
: DB ' RiLAS.3'
: DB ' RARAP. 1'
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 '-','Q','E','U','T','O,'+',2Oh
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
;(
4
c
H
2
K
a
PO
O
n
\/
I
I
4NtOU
mmmm
4 N bl
Iu1 iD Pm
aaaaaaaa v
m
aI
-4b
I 1
A L BUS D E D A T O S
D E L MC 8 0 1 8 8
WR
RD
I
1 I
I
L-pp-1
I
VICTOR
ROJAS
GARCIA / HECTOR
CORTES LEON
T i t l e
CONTROL D E U E M O R I A DINRMICA
S r z e pocument
A
Number
FE
l
....... .....
..
ROJQ-BLñNCO
I
j
1w12
j 11.5U
:STEP: I.
D R I V E R P ñ R ñ EL M O T O R DE P A S O S
ñ
at-:
November
27. 19971S h e e t
Of
I
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, 1991.
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 188
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
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 186/80 188
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
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 1isr .litin
Example 805 1 Board Desisgti, A low-cost development system
Dirección:
http://www .ece.orst.edu/-pau1/805 1-goodies/dev-board-testing.htin1
About the 805 1 microcoiitroller
Dirección: littp://www.proaxis.com/-iguanalabs/8051pin.jpg
28
Descargar