You are on page 1of 14

UNIVERSIDAD

DEL CALLAO

NACIONAL

FACULTAD DE INGENIERIA ELCTRICA Y


ELECTRNICA
ESCUELA PROFECIONAL DE INGENIERIA
ELECTRNICA

ASIGNATURA:
computadoras

Arquitectura de
Laboratorio -92G

CODIGO
12132203
76
12132100
12

SEMESTRE ACADEMICO: 2014-B


TEMA:
PROYECTO PPI
PROFESOR:
Cucho Mendoza Zenn

APELLIDOS/NOM
BRES
DE
LA
CRUZ
CASTRO
DOMINGO CESAR
HERRERA ESCATE
HAROLD ANDRE

PREVIO(
6)

P_LAB(
8)

SUST(
4)

TAREAS(
2)

NOT
A

Proyecto de uso de perifricos mediante


emu8086
I.

Introduccin:
Nosotros en el pasado hemos usado el emulador en assembler
llamado emu8086 para trabajar programas creados por nosotros y
ejecutados en el mismo ensamblador, sin embargo, esta vez
utilizaremos el emu8086 de una manera ms prctica.
En el campo de la electrnica para la vida diaria se usan muchos
dispositivos perifricos, lo que haremos en este proyecto ser utilizar
el assembler para poder configurar y programar un microprocesador
de manera tal que podamos controlar un sistema externo llamado
perifrico.

II.

Objetivos:
-

III.

Programar y aplicar adaptadores de interfaz perifrica


programable como el PPI 8255.
Usar el microprocesador 8086 para enlazar el PPI 8255 por medio
de programacin en lenguaje ensamblador.
Controlar un motor y leds por medio del lenguaje ensamblador y la
interfaz de Proteus Isis.

Componentes usados:
A.

Microprocesador 8086:
El 8086 es un microprocesador de 16 bits, tanto en lo que se
refiere a su estructura como en sus conexiones externas.
Consta de una unidad de ejecucin (EU: Execution Unit) y una
unidad interfaz del bus (BIU: Bus Interface Unit)

B.

PPI 8255:
La interfaz programable de perifricos 8255, llamado tambin
PPI por sus siglas en ingls, Programmable Peripheral Interface,
se
utiliza
para
dar
al
CPU
acceso
a
puertos
de entrada/salida paralela programable.

C.

74373 TTL:
El circuito integrado 74373 o subfamilia (LS, F, S, HCT,..) es un
registro de 8 latches tipo D con salida triestado. Tiene 2
entradas de control, el pin 1 OE es activo por nivel bajo, eso
quiere decir que cuando tengamos este pin a nivel alto los
pines salida (Q1..Q8) estn en el estado de alta impedancia,
como si no estuvieran conectados.

D.

Motor DC:
El motor DC es una mquina que convierte la energa elctrica
en mecnica, provocando un movimiento rotatorio, gracias a la
accin del campo magntico.

IV.

Funcionamiento:
La manera en la que opera nuestro proyecto es la siguiente:
Tenemos 3 pulsadores, uno para el sentido Horario, uno para el
sentido Antihorario y uno ms que es el pulsador para detener el giro,
llamado tambin stop.
Para esto tenemos nuestra programacin hecha previamente en el
ensamblador, la cual ser mostrada en breve, el programa ejecutable
(.exe) de nuestro emulador se guarda en el microprocesador 8086, es
as que el 8086 puede controlar a los dems dispositivos segn
nuestra programacin. Para resumir esta parte, usando nuestra
programacin en emu8086 controlamos varios dispositivos mediante
un solo integrado, el 8086.
Siguiendo con el proceso, el 8086 utiliza al PPI 8255 para trabajar con
el motor, el PPI permite aprovechar las ventajas del motor para
hacerlo girar, ya sea en sentido horario o antihorario dependiendo del
pulsador que activemos mientras dura el proceso o detenerlo si es
deseado, mediante el pulsador de stop.
Se agregaron 8 leds, como demostracin del sentido en el cual va el
motor, esto es simplemente esttico, pero permite visualizar de una
mejor manera el giro del motor DC.

V.

Diagrama de flujo:

Proyecto PPI con


motor y leds

Cargamos el
microprocesador 8086 con
la programacin

Apretamos cualquiera de
los pulsadores para el giro
del motor

Horario

Antihorario

El motor gira en sentido


horario y los leds se
encienden indicando el
sentido de giro

El motor gira en sentido


antihorario y los leds se
encienden indicando el
sentido de giro

VI. Programacin en emu8086:


;; PROYECTO PPI
;; ARQUITECTURA DE COMPUTADORAS
;; Universidad Nacional del Callao
;; Facultad de Ing. Electrica y Electronica
;; Escuela profesional de Ing. Electronica
org 100h

;; Declarando los puertos

CONTROL EQU 8006H

;;

EQU 0080H

;; Declarando puerto A

EQU 0082H

;; Declarando puerto B

EQU 0084H

;; Declarando puerto C

inicio:
;; Iniciando con el puerto "B"
mov dx,B
in al,dx
cmp al,11111111b ;; El digito indica que todos los puertos estan en 1
je inicio ;; Este salto o bucle es para que no realize ninguna accion hasta
que presionemos
cmp al,11111110b ;; Es cuando el pulsador del horario esta presionado
je horario
cmp al,11111101b ;; Es cuando el pulsador del antihorario esta presionado
je antihorario

cmp al,11111011b ;; Es cuando el pulsador del stop esta presionado


je stop
;; Ahora definimos las accciones
horario:
mov dx,A
mov al,11111110b ;; Mandamos solo 1 pulso al puente H para que gire
horario
out dx,al
;; Hacemos tiempos para que no se lagee o cruze
nop
nop
nop
;;; Para los leds
mov dx,C
mov al,11111001b
out dx,al
nop
nop
nop
;; Ahora para actualizar nuestras acciones hacemos
;; Denuevo las comparaciones para ver si al presionar denuevo sucede algo
;; Leemos lo que se ingresa en el puerto B
mov dx,B
in al,dx
cmp al,11111101b ;; Es cuando el segundo pulsador esta presionado
je antihorario
cmp al,11111011b ;; Cuando el pulso para horario y el de stop estan
apretados
je stop

jmp horario ;; Regresamos al bucle para que no cambie la accion mietras no


haya pulsacion
antihorario:
mov dx,A
mov al,11111101b
out dx,al
;; Retardando
nop
nop
nop
nop
;; Para los leds
mov dx,C
mov al,10011111b
out dx,al
nop
nop
;; Ahora habilitamos para poder controlar mediante el proceso:
mov dx,B
in al,dx
cmp al,11111110b ;; Es cuando presionamos el pulsador del horario
je horario
cmp al,11111011b ;; Es cuando presionamos el pulsador del antihorario
je stop
jmp antihorario ;; Regresamos al bucle para que no cambie la accion
mientras no haya pulsacion
stop:
mov dx,A
mov al,11111111b ;; Mandamos 1 logicos a las 2 entradas del puente H
para que no haya movimiento

out dx,al
;;Retardando
nop
nop
nop
;; Para los leds
mov dx,C
mov al,10011001b
out dx,al
nop
nop
; Habilitando las demas acciones
mov dx,B
in al,dx
cmp al,11111110b ;; Es cuando el primer pulsador esta presionado
je horario
cmp al,11111101b ;; Es cuando el segundo pulsador esta presionado
je antihorario

jmp stop
ret
;;Cabe resaltar que las instrucciones NOP son solo para retardar

En imgenes:

VII. Simulacin en Proteus:


R11
1k

R2
Q5

Q1

1k

TIP31
TIP31

Q4

GND

Q6

Q2

2SC2547

TIP32
TIP32

R4

2SC2547

R3
1k

GND

GND

GND

GND

1k

C1

Q8

C7

C4

GND
C5
C3

C0

C2

GND
C6

GND

U11
U21
21
22
24
18
31
30
23
17
33
19

RESET
AD[0..15]
READY
A[16..19]
INTA/QS1
INTR
ALE/QS0
HOLD/GT1
BHE
HLDA/GT0 DT/R/S1
TEST
DEN/S2
NMI
RD
MN/MX
W R/LOCK
CLK
M/IO/S0

25
34
27
26
32
29
28

8086
PROGRAM=Nueva carpeta\proyectoarqui.com

GND

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

AD[0..15]

5
36
9
8
35

U31
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

3
4
7
8
13
14
17
18
1
11

D0
D1
D2
D3
D4
D5
D6
D7

34
33
32
31
30
29
28
27

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2
5
6
9
12
15
16
19

D0
D1
D2
D3
D4
D5
D6
D7

PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7

RD
WR
A0
A1
RESET

PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7

CS

PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7

OE
LE
74HC373
8255A

Viendo detenidamente por partes, tenemos:

4
3
2
1
40
39
38
37

R6

18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10

HORARIO

10k

R1
10k

STOP

R5
C0
C1
C2
C3
C4
C5
C6
C7

10k

ANTIHORARIO

A.

Microprocesador 8086:

U21
21
22
24
18
31
30
23
17
33
19

RESET
AD[0..15]
READY
A[16..19]
INTA/QS1
INTR
ALE/QS0
HOLD/GT1
BHE
HLDA/GT0 DT/R/S1
TEST
DEN/S2
NMI
RD
MN/MX
WR/LOCK
CLK
M/IO/S0

AD[0..15]

25
34
27
26
32
29
28

8086
PROGRAM=Nueva carpeta\proyecto.com

B.

PPI 8255 Y 74373:


U11
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

AD[0..15]

5
36
9
8
35

U31
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

3
4
7
8
13
14
17
18
1
11

D0
D1
D2
D3
D4
D5
D6
D7

34
33
32
31
30
29
28
27

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2
5
6
9
12
15
16
19

D0
D1
D2
D3
D4
D5
D6
D7

PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7

RD
WR
A0
A1
RESET

PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7

CS

PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7

OE
LE
74HC373
8255A

4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10

C0
C1
C2
C3
C4
C5
C6
C7

C.

Pulsadores:
R6

HORARIO

10k

R1
10k

STOP

R5
10k

ANTIHORARIO

D.

Circuito del motor DC:

R11
1k

R2
Q5

Q1

1k

TIP31
TIP31

Q4
2SC2547

Q8

TIP32
TIP32

R4

2SC2547

1k

E.

Q6

Q2

Leds:

R3
1k

C1

GND
C6

C7
GND

C4

GND

GND

C3

GND
C5

GND

GND

C0

C2

GND

VIII. Observaciones y Conclusiones:

Nuestro programa tiene un diseo agradable a la vista el cual


permite escoger un sentido de giro para un motor y asimismo
detenerlo si es deseado, todo por medio de pulsadores que sirven
como selectores mediante la ejecucin de nuestra programacin.

El 8086 y el 8255 se complementan muy bien cuando a perifricos


se refiere pues hacen de sta, una tarea mucho ms sencilla y
asequible mediante el uso de programacin en lenguaje
ensamblador, el cual controla al 8086 y a su vez ste al PPI.

Concluimos del laboratorio que usando Emu8086 y Proteus


podemos simular circuitos con microcontroladores con una
programacin la cual es mas til que hacerlo de la manera clsica
con solo compuertas e integrados ya que suplantamos todo ello
por una programacin la cual controla el proceso del circuito
dndonos la ventaje de portabilidad y menos gasto para el
proyecto.