Вы находитесь на странице: 1из 20

UNIVERSIDAD DE LAS FUERZAS

ARMADAS “ESPE”

DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA

MIRCROPROCESADORES

Tema:
FABRICA HYNDAI MOTORS CON 8086
Nombre:

Jácome Nicolás
Docente:
Ing. Miroslava Aracely Zapata Rodríguez

NRC:
2085

Sangolquí, 20 de Febrero del 2018


Abstract

The following project shows the development of communications serially (DB9) and
parallel (DB25) in conjunction with Visual Basic, Proteus and assembly language
programmed in the software emu8086
Keywords: 8086, VisualBasic ,Assembler Language

Resumen

En el siguiente proyecto se muestra el desarrollo de comunicaciones de manera serial(DB9) y


paralela(DB25) en conjunto con Visual Basic, Proteus y lenguaje ensamblador programado en
el software emu8086

Palabras claves: 8086, VisualBasic ,Lenguaje Ensamblador


Contenido
1. Tema ...................................................................................................................................... 4
2.1 Objetivo General ........................................................................................................... 4
2.2 Objetivos Específicos .......................................................................................................... 4
3. Diagrama de Bloques ............................................................................................................ 4
4. Funcionamiento ......................................................................................................................... 4
4.1 Visual Basic: ....................................................................................................................... 4
4.2 Programación EMU8086 : .................................................................................................. 9
4.3 Circuito en Proteus: ........................................................................................................... 14
6. Conclusiones y Recomendaciones .......................................................................................... 19
6.1 Conclusiones ......................................................................................................................... 19
6.2 Recomendaciones .................................................................................................................. 19
7. Bibliografía ......................................................................................................................... 20
1. Tema
División de dos números utilizando conjunto de instrucciones del
microprocesador z80
2. Objetivos
2.1 Objetivo General
Diseñar un circuito en conjunto con la creación de software en Visual Basic
utilizando comunicación serial , paralelo y el controlador de puertos 8255
conectado al microprocesador 8085 programado en lenguaje ensamblador .

2.2 Objetivos Específicos

 Programar en lenguaje ensamblador el microprocesador 8086


mediante la utilización del software (emu 8086).
 Realizar comunicación serial en visual basic para después mediante la
comunicación en paralelo empalmar Visual y Proteus (Isis).
 Mostrar mediante el microprocesador 8086 el modelo y color
seleccionado del carro.

3. Diagrama de Bloques
MICRO

8086

Ingreso de datos DATOS(AD0-AD15)


Envio de datos a proteus
por Visual Basic mediante puerto Salida
de manera Serial paralelo Interfaz LCD , Display 7
programable de segmentos
periféricos 8255

4. Funcionamiento
4.1 Visual Basic:

El primer paso y etapa del problema yace en la programación de visual basic en


donde se han creado dos frames de envío y recibo (tipo chat) los cuales envían y
reciben sus datos de manera serial mediante la selección de dos puertos COM
conectado entre si con la herramienta “Virtual Serial Port Driver”
Para la utilización del puerto paralelo es necesario realizar los siguientes pasos
 Se necesita Windows Xp
 Activar componentes Hwinterface.ocx
 Cargar en el system 32 inpout32.dll

Pues bien se empieza explicando el código implementado en Visual Basic esto se


hará mediante bloques
4.1.2. Frame Enviar:

Lo primero a realizar es la definicion de variables en esta etapa lo mas importante no


son las variables si no como definimos la utilizacion del puerto paralelo mediante las
instrucciones :

Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As
Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer,
ByVal Value As Integer)

Comunicación Serial:

En esta etapa habilitamos los puertos es decir programamos para que el puerto se abra
o se cierre para esto es necesario importar las librerías de comunicación serial
arrastrando el siguiente icono hacia el frame de programación.

Ilustración 1 Serial Port

Enviar:
Muy bien cuando el botón enviar sea presionado se enviaran los datos en la variable textout
o texto de salida este paso es muy importante ya que tenemos un frame de recibir entonces
con las instrucción PUERTOENVIAR:Output=textout estamos asignando valores a uno de los
COM seleccionados para luego ser enviados hay que recordar que la comunicación serial
utiliza el prototipo 1N81 y la velocidad recomendada son 9600 baudios o bits por segundo.

Ilustración 2 Frame de Enviar

La interfaz grafica programada para el envío tiene campos necesarios para la fabricación de un
carro al seleccionar el puerto COM y presionar el botón conectar podemos ya realizar el envio
de datos de manera serial .
4.1.3. Frame Recibir:

Para almacenar los datos enviados en el frame de envío utilizaremos una tabla que
sirve como una base de datos en donde se iran almacenando los autos creados con
sus diferentes características , como se observa en el siguiente código lo que
hacemos para modificar la tabla es asignar el valor de columnas (Col) y el valor
de filas (Row) además asignaremos un titulo a cada parámetro con la instrucción
LISTADO.Text=”Al texto deseado” , es necesario asignar el valor de 1 a la
variable para que cuando llegue un nuevo dato este se almacene en la siguiente
fila
Pues bien de esta menera realizamos la recepción con comunicación serial es decir
al igual que en el frame de envío debemos definir la librería Serial Port y asignar
un COM especifico pero los datos que llegan por el puerto serial están
almacenados en la variable txtin y simplemente iremos separando el string
recibido con el comando Split(txtin,”_”)(Posición del String) de esta manera
podemos almacenar cada dato recibido en una nueva variable para después
manipularlo

En esta etapa almacenamos los datos recibidos al presionar el botón añadir se


almacena el dato leído en el puerto de entrada en filas y columnas , mediante el
comando LISTADO.Text=variable.Caption asignaremos a los casilleros de la
tabla los valores recibidos.
El botón crear es el mas importante ya que al presionarlo estamos enviando de
manera paralela la información al controlador de puertos 8255 , para esto se
utiliza el puerto A , entonces la lógica de programación es simple se debe jugar
con los datos seleccionados por el usuario y condicionar una serie de datos que
vayan al empalme para poder mostrar lo ingresado por el usuario .
Por ejemplo:
If txtcedula.Caption = "TUCSON" And txtnombre.Caption = "VERDE" Then
txtparalelo.Text = 8
Out "&H378", Val(txtparalelo.Text)
End If
Si el usuario selecciono el modelo Tucson y el color verde enviaremos por el
puerto paralelo mediante la instrucción en negrilla el valor de 8 .

Ilustración 3 Frame Recibir

4.2 Programación EMU8086 :

En la siguiente etapa se explicará la lógica de programación en lenguaje ensamblador


para la impresión de un texto en un lcd 16x2 y el envío y recepción de ordenes por el
puerto paralelo del frame de recibir programado en Visual Basic

Para iniciar a programar abrimos EMU8086:


Ilustración 4 Ventana Principal EMU 8086

Una vez iniciado el programa damos clic en la opción new nos desplegara la siguiente
ventana:

Ilustración 5 Generar archivos en el EMU8086

Damos clic en la opción COM y damos clic en OK una vez creado el archivo generara
por defecto las sentencias de control del ensamblador.
Figura 4. Ventana de código en EMU 8086
Como primer paso en la programación del control del motor a pasos se va a declarar
todas las variables que se va a utilizar para esto se digitamos el siguiente comando:

IOCON EQU 8006H


IOA EQU 8000H
IOB EQU 8002H
IOC EQU 8004H

Donde IOA, IOB, IOC representa el puerto A, puerto B, puerto C respectivamente del
integrado 8255.
EQU: Define nombres simbólicos que representan valores u otros valores simbólicos.
Las dos formas son:
nombre EQU expresión
nuevo_nombre EQU viejo_nombre

Una vez definido un nombre mediante EQU, no se puede volver a definir.


Inicializacion del LCD en lenguaje ensamblador
Para explicar como se inicaliza el LCD 16x2 en lenguaje ensamblador es necesario primero
explicar como funciona .

Ilustración 6 LCD 16x2


Entonces para la programación se asignan los pines en el siguiente orden estamos utilizando una
configuración de 4 bits .

VDD , RW , D7 ,D6 ,D5, D4, E(Enable)

Las siguientes instrucciones permiten inicializar al lcd

Tabla 1 Comandos de incializacion LCD

D7 D6 D5 D4
0 0 1 1
0 0 1 1
0 0 1 1
0 0 1 0
0 0 1 0
0 0 0 1
0 0 0 0
1 1 1 1

La instruccion mov dx,IOC esta definiendo como salida al Puerto C del controlador 8255,
entonces cuando queremos ingresar un dato en un lcd es importante cambiar de estado
binario al pin enable es decir de 0 a 1 para que de esta forma reconozca la instrucción
deseada
Entonces nos guiamos en la tabla de comandos de inicialización el primer dato a ingresar
es 0011 entonces debemos ir cambiando el ultimo digito de la instrucción de 0 a 1 para
que el estado lógico del enable sea modificado y el dato sea ingresado .

;;;;;;;;;;;;;;;;;;;;;
;LCD inicializador;;;
mov al,0000000b
mov dx,IOC
out dx,al

mov al,1000110b
mov dx,IOC
out dx,al

mov al,1000111b
mov dx,IOC
out dx,al

Entonces para la programación se asignan los pines en el siguiente orden es importante recordar
que en un LCD de 16x2 los datos se ingresan con código hexadecimal
RW , D7 ,D6 ,D5, D4, E(Enable)

De igual manera que para inicializar el LCD es necesario ingresar los datos cambiando el estado
lógico del enable otro aspecto muy importante es que RW debe estar en 1 ya que
empezaremos a escribir en el LCD , en el ejemplo estamos imprimiendo la letra H la cual tiene
por código 01001000 como es una configuración de 4 bits se ingresan los primeros 4 bits y
después los restantes .

;IMPRIMIR CHAR POR CHAR


;H
mov al,101000b
mov dx,IOC
out dx,al
mov al,101001b
mov dx,IOC
out dx,al
mov al,101000b
mov dx,IOC
out dx,al
mov al,110000b
mov dx,IOC
out dx,al
mov al,110001b
mov dx,IOC
out dx,al
mov al,110000b
mov dx,IOC
out dx,al

Con el comando mov dx,IOA estamos definiendo al puerto A como entrada y es aquí
donde lee los datos enviado desde visual a proteus de manera paralela , con la
Instrucción mov dx,IOB estamos asignando al Byte de salida el puerto B

mov al,0001010b
mov cl,al
MOV DX,IOA ;Se lee el Byte del puerto "A"
IN AL,DX
MOV BL,AL

salida:
mov dx,IOB ;Le asignamos el Byte de salida del puerto "B"
out dx,al ;SALIDA
4.3 Circuito en Proteus:

BLOQUE B
BLOQUE A

BLOQUE C

Ilustración 7 Cirtuito total

4.4.1. BLOQUE A

Ilustración 8 Bloque A
Pues bien este bloque es el encargado del control de todo el sistema del circuito primero
empezaremos definiendo que es el controlador de puertos 8255

FUNCIONAMIENTO BLOQUES FUNCIONALES


El 8255 dispone de un buffer bidireccional Estos se dividen en tres puertos de 8 bits
triestado de 8 bits que utiliza para (Puerto A, Puerto B, Puerto C). Los
interactuar con el bus de datos del sistema. puertos A y B se pueden utilizar como
Los datos son transmitidos o recibidos por puertos de entrada/salida de 8 bits. El
el buffer tras la ejecución de instrucciones puerto C puede ser utilizado como un
de entrada o salida por la CPU. puerto de entrada/salida de 8 bits o como
dos puertos de 4 bits de entrada/salida o
para producir las señales de
reconocimiento (handshake) para los
puertos A y B.
Ocho líneas de datos (D0 - D7) están
disponibles (con un buffer de datos de 8
bits) para leer/escribir datos en los puertos
o control de registro en virtud de la
situación de

NOTA: Los tres puertos se agrupan adicionalmente como sigue:

1. Grupo A que consiste en el puerto A y la parte superior del puerto C.


2. Grupo B que consiste en el puerto B y la parte inferior del puerto C.

Las líneas de dirección A1, A0 permiten acceder sucesivamente a cualquiera de los


puertos o al registro de control como se indica a continuación:
Tabla 2 Registros de Control

A1 A0 PORT SELECTED
0 0 PUERTO A
0 1 PUERTO B
1 0 PUERTO C
1 1 REGISTRO DE CONTROL

Para el 8086 se debe cargar el programa que se genera al compilar el EMU8086 en el formato
COM de la siguiente manera dando doble click en el integrado del 8086 se abrirá la siguiente
pestaña.
Ilustración 9 Seleccion archivo COM

Seleccionamos la ruta donde este el archivo .COM y listo.

Ilustración 10 Puerto Paralelo

De esta manera simulamos el puerto paralelo en Proteus , es importante señalar que ese solo
funcionara si la computadora tiene un puerto paralelo físico y cuenta con Windows XP.
4.4.2. BLOQUE B

Ilustración 11 MUX y contadores

La explicación de este bloque es simple como sabemos para acceder a una memoria se deben
ingresar combinaciones estas combinaciones básicamente son números binarios esto se puede
hacer de manera manual pero lo optimo en este proyecto seria hacerlo de manera automática
así que usamos contadores (74Ls193) que son contadores de 1 a 15 en binario , así accedemos
a las localidades de la memoria los MUX(74157) clasifican el conteo según lo que el el frame de
Recibo envié por el puerto paralelo para así imprimir la información correcta de una localidad

4.4.2. BLOQUE C

De igual forma la explicación de este bloque es de funcionamiento mas que de diseño ya que el
proceso lo realiza el microprocesador 8086

Ilustración 12 Tracción
Aquí se indica si el vehículo a crear es de tracción 4x4 o 4x2 mediante 2 displays de 7 segmentos.

Ilustración 13 Modelo

Este bloque está relacionado directamente con el bloque B ya que con los contadores podemos
acceder a las localidades de memoria en donde se han guardado las palabras deseadas para esto
es necesario programar la memoria con ayuda de cualquier software de programación.

Es necesario explicar como se forma cada letra el primer paso es definir el orden de los pines
que queremos programar el orden utilizado fue el siguiente.

abcdefg

Ilustración 14 Display 7 segmentos

En donde según la letra que queramos formar vamos a dar el valor de 1 a cada segmento
ejemplo para formar la letra H
Tabla 3 Configuración de letras

a b c d e f g
0 1 1 0 1 1 1
Ilustración 15 Letra H 7 segmentos

Luego ese dato tenemos que trasformar a hexadecimal y luego programar en la memoria

Ilustración 16 Selección de color

En esta parte del circuito si el vehículo seleccionado tiene color rojo encenderemos un dislpay
de 7 segmentos rojo y caso contrario un display de color verde los MUX (74157) utilizados
tienen la función de decidir que color a ingresado el usuario y van conectados directamente al
8255.

6. Conclusiones y Recomendaciones

6.1 Conclusiones

 Para manejar el puerto paralelo en simulación es necesario contar con el puerto


físico y el sistema operativo Windows Xp

 Podemos definir si un puerto del controlador de puertos 8255 es entrada o


salida en la programación del 8086 en lenguaje ensamblador para cargar este
archivo en la simulación es necesario elegir el formato com.

 Para la comunicación serial es necesario que el RX(Receptor) este conectado


al Tx (Emisor) del otro y viceversa ya que de esta manera se realizara la
transmisión de datos .

6.2 Recomendaciones
 Para la comunicación serial verificar que los puertos virtuales este conectados
entre si

 Instalar un controlador de puerto paralelo que permita manipular los estados de


salidas o entradas ya que estos suelen quedarse con valores guardados.

7. Bibliografía

 Banderas - tutoasm-emu8086s jimdo page!

Вам также может понравиться