Este documento describe un sistema de alarma de 8 puntos utilizando el puerto paralelo de una computadora. El sistema consta de una maqueta que representa una casa con 8 puntos de alarma (7 ventanas y 1 puerta). El programa en ensamblador controla las alarmas mediante el envío y recepción de datos a través del puerto paralelo para verificar el estado de cada punto. El programa dibuja la casa y muestra mensajes cuando una alarma está activada o desactivada.
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Proyecto sistema de alarmas
1. Ingeniería de Sistemas e Informática
IMPLEMENTACION DE UN SISTEMA DE
ALARMA USANDO EL PUERTO PARALELO
ASIGNATURA:
Arquitectura del Computador
INTEGRANTES:
MEDINA CONGORA Ronald
QUISPE HUAMAN Victor Antonio
ZARATE MARQUEZ David
Huancayo - 2012
2. TABLA DE CONTENIDO
INTRODUCCIÓN ..............................................................................................................................................3
FUNCIONAMIENTO.........................................................................................................................................4
DIAGRAMA DE FLUJO DEL PROGRAMA....................................................................................................5
DIAGRAMA PICTOGRAFICO .........................................................................................................................6
DIAGRAMA DEL CIRCUITO ...........................................................................................................................7
EXPLICACIÓN DEL PROGRAMA ..................................................................................................................9
CONCLUSIONES .......................................................................................................................................... 24
ANEXOS ......................................................................................................................................................... 25
Sistema de Alarma usando puerto paralelo Página Nº 2
3. INTRODUCCIÓN
Las nuevas tecnologías de información y comunicación que manejamos hoy en día
y que se han vuelto indispensables de alguna forma, tales como los
electrodomésticos de nuestros hogares, los proyectores de las universidades, las
computadoras tanto de escritorio como portátiles hacen que nuestras vidas sean
mas fáciles y tengamos la posibilidad de tener una mayor productividad para
nosotros mismos o para una empresa.
Hay que considerar que algunos artefactos van a depender de la entrada y control
de un ordenador pero esto lo realizan con uso de interfaces como USB inclusive
hoy en día la conexión convencional (cables) está siendo reemplazada por el
empleo de tecnologías inalámbricas.
Dentro de este ámbito proponemos en el presente trabajo mostrar el uso del puerto
paralelo en la creación de un sistema de alarma de 8 puntos, haciendo uso de un
ordenador de escritorio y un protoboard con cables y un multiplexor de 8:1
Haremos uso de los registros de estado, de datos y de control que están presentes
en los pines de nuestra conexión para puerto paralelo.
Para la creación del programa utilizaremos el emu 80x86 sobre el VMWare.
Los sistemas de información tratan el desarrollo, uso y administración de la
infraestructura de la tecnología de la información en una organización. Bajo este
enfoque el presente proyecto de investigación estaría estrechamente relacionado
con los sistemas de información ya que como en este y otros casos proporcionan
herramientas tecnológicas que servirán para el diseño, creación y aplicación de
productos, el sistema de alarma en si, un prototipo que serviría de simulación de
una casa en miniatura para una posterior implementación en un proyecto de mayor
magnitud.
Sistema de Alarma usando puerto paralelo Página Nº 3
4. FUNCIONAMIENTO
El diseño del proyecto consiste en una maqueta en miniatura que representa un
inmueble de un piso, con una puerta principal y siete ventanas, dándonos en total 8
puntos de alarmas; las ventanas tienen los pulsadores en sus bases, mientras que
la puerta tiene el pulsador en la parte superior, estos pulsadores están conectados
mediante un cable que conforma un circuito prediseñado. Todas las alarmas
comparten el mismo cable a tierra, y para enviar señales envían una señal de 5V al
multiplexor que está instalado en una pequeña placa perforada situada dentro de la
casa.
Para enviar 5 voltios y alimentar el circuito utilizamos un pin del puerto paralelo, al
cual le enviamos el estado 1 de manera permanente.
LO QUE PUEDE HACER:
El usuario puede enviar señales al prototipo en todas las combinaciones posibles
desde todas las ventanas cerradas, hasta que todas estén abiertas.
LO QUE NO PUEDE HACER:
No se pudo realizar el cambio de color del programa mientras esta ejecutándose en
el código del sistema, se tuvo que mantener los colores básicos de blanco y negro
Implementamos el sistema con el sonido de un bip cuando se activan las alarmas,
el cual funcionaba ejecutando el programa en el EMU 80X86 pero al cargar en el
código del sistema no se escuchan estos bips, probablemente es debido al uso de
la maquina virtual.
Sistema de Alarma usando puerto paralelo Página Nº 4
5. DIAGRAMA DE FLUJO DEL PROGRAMA
DECLARACION DE MACROS
DECLARACION DE VARIABLES
INICIO
Bucle línea vertical izquierda Bucle línea vertical derecha Bucle línea horizontal superior Bucle línea horizontal inferior
Selector de alarma 1
Imprime alarma 1 Imprime alarma 1
Compara bit
activa desactivada
Selector de alarma 2
Imprime alarma 2 Imprime alarma 2
Compara bit
activa desactivada
Selector de alarma 3
Imprime alarma 3 Imprime alarma 3
Compara bit
activa desactivada
Selector de alarma 4
Imprime alarma 4 Imprime alarmas 4
Compara bit
activa desactivada
Selector de alarma 5
Imprime alarma 5 Imprime alarma 5
Compara bit
activa desactivada
Selector de alarma 6
Imprime alarma 6 Imprime alarmas 6
Compara bit
activa desactivada
Selector de alarma 7
Imprime alarma 7 Imprime alarma 7
Compara bit
activa desactivada
Selector de alarma 8
Imprime alarma 8 Imprime alarmas 8
Compara bit
activa desactivada
Sistema de Alarma usando puerto paralelo Página Nº 5
6. DIAGRAMA PICTOGRÁFICO
Programa en
Asembler
Computador
Conexión a
través de puerto
paralelo
Protoboard de
instalación de
circuito
electrónico
Casa donde es
verificado los 8 puntos
Sistema de Alarma usando puerto paralelo Página Nº 6
9. EXPLICACIÓN DEL PROGRAMA
El programa para el control del sistema de alarmas está escrito en assembler,
utilizando los puertos de salida y entrada de un puerto paralelo, el código se explica
por bloques en las siguientes líneas:
El programa eta dividido en 4 bloques, el primero es el bloque de macros, luego el
bloque de modelo y segmento de pila, el bloque de datos y el bloque de códigos.
El primer bloque de macros está compuesto por todas las macros utilizadas en el
programa.
La macro mensaje, se utiliza para mostrar en pantalla un mensaje, utilizando la
función 09h de la interrupción 21h.
Sistema de Alarma usando puerto paralelo Página Nº 9
10. La macro cursor, se utiliza para determinar la ubicación del cursor, en un punto
determinado de la pantalla, utilizando la función 02h de la interrupción 10h.
La macro lectura, se utiliza para capturar los datos del puerto 379h y guardarlos en
el registro bl, luego utilizamos el comando and para filtrar los datos ingresados y
solo utilizar los bits de datos del puerto paralelo, que en este caso son los unos de
la línea de bits 01111000b.
La macro control, se utiliza para enviar datos al puerto 378h, para que el puerto
paralelo controle el multiplexor 8:1 y este controle el estado de los 8 puntos.
La macro mover, se utiliza para mover datos entre registros.
La macro publicar, se utiliza para mostrar los mensajes del nombre de las puertas y
de las alarmas activadas de los puntos, utilizando otras macros definidas
anteriormente, además de incrementar una variable, que en este caso es del
número de ventana que tenemos en el sistema.
Las macros ubicar y ubicar1, son utilizadas para determinar la posición del cursor y
para dibujar las líneas que simbolizan ventana abierta o cerrada y para incrementar
una variable.
Sistema de Alarma usando puerto paralelo Página Nº 10
11. Las macros lineg y lineg1, son utilizadas para dibujar las líneas horizontales y
verticales de la casa.
El bloque 2 determina el modelo y el segmento de pila a utilizar en el programa.
En el bloque 3 se definen las variables utilizadas en el programa, constantes como
las mens, mensa1, mensa2, mensa3 y mensa5 y las variables v, línea, a, b.
Sistema de Alarma usando puerto paralelo Página Nº 11
12. El bloque de código define las instrucciones que se utilizan en el programa para
controlar las alarmas de los 8 puntos establecidos en el proyecto.
Se mueven los datos al registro de ax a ds, se ubica el símbolo ASCII a utilizar para
dibujar el perímetro de la casa que para nuestro proyecto es B1h “▒”, se ubica el
cursor para escribir el mensaje título del proyecto, se ubica el punto de inicio para
comenzar a dibujar las líneas verticales luego las horizontales.
Se ubica el cursor, luego se empieza a dibujar la línea comparando el límite inferior
que es la línea 21, y de la misma forma, se dibujan las demás líneas.
Sistema de Alarma usando puerto paralelo Página Nº 12
13. El bucle1 permite el ingreso a la verificación de las alarmas en la ventana uno de
los 8 puntos, 7 ventas y una puerta.
Movemos al registro bl el byte 10000000b, que será enviado al puerto de salida
378h utilizando la macro control, utilizamos el bit más significativo, para mantener
un punto con 5V en el circuito implementado, que será utilizado para mandar los 5V
en el caso que la ventana este abierta, los últimos 3 bits del grupo de bytes, se
utilizaran para el control del multiplexor de 8:1, de acuerdo a la siguiente
configuración:
Sistema de Alarma usando puerto paralelo Página Nº 13
14. 1000000b → Control de Ventana 1
1000001b → Control de Ventana 2
1000010b → Control de Ventana 3
1000011b → Control de Ventana 4
1000100b → Control de Ventana 5
1000101b → Control de Ventana 6
1000110b → Control de Ventana 7
1000111b → Control de la Puerta
Una vez enviado el control para verificar el punto 000 del multiplexor, que es en
nuestro caso para verificar la puerta número 1, captamos el puerto de entrada del
puerto paralelo, el 379h a través del registro de estado E3, de donde capturamos el
estado del bit número 4 00000000b o 00001000b, y luego lo comparamos con el
byte almacenado en bl, para determinar si el punto está activado o desactivado,
luego de la comparación, pasara al mensaje 1 o mensaje 2.
El mensaje 1 se ejecuta si es que el bit está en 0, que nos indica que la ventana
está cerrada, ubicamos el símbolo a dibujar en la línea de la ventana, que indique
ventana cerrada, para esto utilizamos el caracter ASCII CCh “╠” para las ventanas
1 y 5 y el caracter ASCII 0Fh “☼” para las ventanas 2, 3, 4, 6 y 7, para la puerta se
utilizara el carácter ASCII B0h “░”.
Ubicamos el puntero para dibujar las líneas de las ventanas o la puerta, utilizamos
la macro ubicar para realizar esta función, luego volvemos a ubicar el cursor para
borrar en primer lugar lo que este escrito en la línea y para luego escribir el mensaje
de la ventana “V-1”, y utilizamos una variable para ir incrementando el número de
ventanas hasta la numero 7.
El mensaje 2 se ejecuta si es que el bit de comparación es igual a 1, entonces se
ubica el caracter a imprimir para este caso utilizamos el ASCII 1Ah “→” que nos
indicara que la ventana está abierta(para las otras ventanas y la puerta utilizaremos
respectivamente el 18h “↓”, 19h “↑”), ubicamos el cursor, y luego imprimimos el
símbolo en una línea, luego ubicamos el cursor para borrar el mensaje antes escrito
y escribir el mensaje de alarma “Alarma V-1”, luego pasa a la segunda ventana, a la
tercera y hasta el final termina con la puerta para luego volver a verificar en un
bucle cerrado. Este procedimiento se repite con cada uno de los puntos a verificar,
de manera permanente.
Sistema de Alarma usando puerto paralelo Página Nº 14
15. Programa en Assembler
;=======================================================
;PROGRAMA PARA VERIFICAR LAS ALARMAS DE UNA CASA
;AUTORES: -Quispe Huaman,Victor
; -Zarate Marquez, David
; -Medina Congora, Ronald
;FECHA: 07/12/12
;CURSO: Arquitectura del Computador
;DOCENTE: Ing. Marquez Solis, Yuri
;=======================================================
;1. BLOQUE DE MACROS
;=======================================================
mensaje MACRO texto ;Macro de mensajes
mov ah,09h
mov dx,offset texto
int 21h
ENDM
cursor MACRO p,x,y ;Macro de ubicación del cursor
mov ah,p
mov dh,x
mov dl,y
int 10h
ENDM
lectura MACRO x ;Macro de captura de datos del registro 379h
mov dx,x
in ax,dx
mov bl,al
mov cl,01111000b
and bl,cl
ENDM
control MACRO y ;Macro de envio de datos al puerto de salida
mov dx,y
mov al,bl
out dx,al
ENDM
mover MACRO h,v ; Macro de mover datos entre registros
mov a,h
mov b,v
ENDM
publicar MACRO dato ;Macro para publicar el mensaje sobre las ventanas
mensaje dato
mensaje v
inc v
ENDM
ubicar MACRO j
cursor 02h,a,b
mensaje linea ;Macro para publicar el mensaje sobre las ventanas
inc a
cmp a,j
ENDM
ubicar1 MACRO m ;Macro para ubicar el punto de inicio de la linea y del mensaje sobre las ventanas
Sistema de Alarma usando puerto paralelo Página Nº 15
16. cursor 02h,a,b
mensaje linea
inc b
cmp b,m
ENDM
lineg MACRO c ;Macro para dibujar las lineas verticales
mensaje linea
inc a
cmp a,c
ENDM
lineg1 MACRO k ;Macro para dibujar las lineas horizontales
mensaje linea
inc b
cmp b,k
ENDM
;2. BLOQUE DE MODELO Y SEGMENTO DE PILA
;=======================================================
.MODEL small
org 100h
;3. BLOQUE DE DATOS
;=======================================================
.DATA
;Declaracion de variables usadas en el programa
mens db 'Programa para verificar Alarmas de una Casa','$'
mensa1 db 'V-','$'
v db ?
linea db ?
borrar db ' ','$'
mensa2 db 'Alarm V-',7,'$'
mensa3 db ' PUERTA','$'
bor db ' ','$'
mensa5 db 'Alarm',7,'$'
a db ?
b db ?
;4. BLOQUE DE CODIGO
;=======================================================
.CODE
start:
Inicio:
mov ax,@data
mov ds, ax
mov linea, 7Fh ;Ubicacion del simbolo para imprimir en pantalla
add linea, 51
cursor 02h,1,18
mensaje mens
mover 5,10
;Dibujo del perimetro de la casa
Buclelinev:
cursor 02h,a,b
lineg 21 ;Bucles para el dibujo de la linea vertical
jl Buclelinev
mover 5,70
Sistema de Alarma usando puerto paralelo Página Nº 16
17. jge Buclelinev2
Buclelinev2:
cursor 02h,a,b
lineg 21
jl Buclelinev2
mover 5,30
jge Buclelinev3
Buclelinev3:
cursor 02h,a,b
lineg 16
jl Buclelinev3
mover 10,52
jge Buclelinev1
Buclelinev1:
cursor 02h,a,b
lineg 21
jl Buclelinev1
mover 5,10
jge Buclelineh
Buclelineh:
cursor 02h,a,b
lineg1 71 ;Bucles para el dibujo de la linea horizontal
jl Buclelineh
mover 21,10
jge Buclelineh1
Buclelineh1:
cursor 02h,a,b
lineg1 71
jl Buclelineh1
;Inicio del bucle de verificacion de las alarmas
;Este conjunto de bucles se repiten permanentemente para mantener verificado el estado de las alarmas de la casa
;==========================================================================
Bucle1:
mov v,31h
mov bl, 10000000b ;Senal para el selector del mux
;Direccion del mux 000 y el bit mas significativo habilitado en 1 para alimentar al circuito de control
control 378h ;macro de salida de datos
jmp primero
;Verificacion de Alarma ventana 1
primero:
lectura 379h
cmp bl,00000000b ; Comparacion del estado del bit de entrada
je mensaje1
cmp bl,00001000b ; Comparacion del estado del bit de entrada
je mensaje2
mensaje1:
mov linea, 7Fh ;Ubicacion del simbolo a imprimir
add linea, 79
mover 9,10
ventana12:
Sistema de Alarma usando puerto paralelo Página Nº 17
18. ubicar 17 ;Bucle para dibujar la linea que representa la ventana
jle ventana12
cursor 02h,13,0
mensaje bor ;Mensaje para borrar el mensaje anterior
cursor 02h,13,7
publicar mensa1 ;Escribe el nombre de la ventana
jmp Bucle2
mensaje2:
mov linea,1Ah
mover 9,10
ventana13:
ubicar 17 ;Dibuja la linea con flechas que indicaran el estado de alarma
jle ventana13
cursor 02h,13,0
mensaje bor ;Imprime el mensaje de alarma activa
cursor 02h,13,1
publicar mensa2
jmp Bucle2
;En las lineas siguientes se repiten los procesos anteriores con diferentes puntos de coordenadas para la ubicacion de las
diferentes ventanas y de la puerta
;Verificacion de Alarma ventana 2
;==========================================================================
Bucle2:
mov bl, 10000001b
control 378h
jmp segundo
segundo:
lectura 379h
cmp bl,00000000b
je mensaje13
cmp bl,00001000b
je mensaje14
mensaje13:
mov linea,0Fh
mover 4,18
ventana:
ubicar1 22
jle ventana
cursor 02h,3,16
mensaje borrar
cursor 02h,3,19
publicar mensa1
jmp Bucle3
mensaje14:
mov linea,19h
mover 4,18
ventana1:
ubicar1 22
Sistema de Alarma usando puerto paralelo Página Nº 18
22. septimo:
lectura 379h
cmp bl,00000000b
je mensaje9
cmp bl,00001000b
je mensaje10
mensaje9:
mov linea,0Fh
mover 22,38
ventana8:
ubicar1 42
jle ventana8
cursor 02h,23,36
mensaje borrar
cursor 02h,23,39
mensaje mensa1
mensaje v
jmp Bucle8
mensaje10:
mov linea,18h
mover 22,38
ventana9:
ubicar1 42
jle ventana9
cursor 02h,23,36
mensaje borrar
cursor 02h,23,36
mensaje mensa2
mensaje v
jmp Bucle8
;Verificacion de Alarma de la Puerta
;==========================================================================
Bucle8:
mov bl, 10000111b
control 378h
jmp octavo
octavo:
lectura 379h
cmp bl,00000000b
je mensaje7
cmp bl,00001000b
je mensaje8
mensaje7:
mov linea,07Fh
add linea, 49
mover 22,16
ventana6:
ubicar1 27
jle ventana6
cursor 02h,23,16
Sistema de Alarma usando puerto paralelo Página Nº 22
23. mensaje bor
cursor 02h,23,18
mensaje mensa3
jmp Bucle1
mensaje8:
mov linea,18h
mover 22,16
ventana7:
ubicar1 27
jle ventana7
cursor 02h,23,16
mensaje bor
cursor 02h,23,16
mensaje mensa5
mensaje mensa3
jmp Bucle1
;FIN DEL PROGRAMA
;==========================================================================
fin:
mov ah,4ch
int 21h
END start
Sistema de Alarma usando puerto paralelo Página Nº 23
24. CONCLUSIONES
Identificamos y aprendimos a hacer uso del puerto paralelo y sus pines
reconociendo los registros de estado, de datos y de control para enviar y
recibir señales desde y hacia la computadora.
Para la creación del programa utilizamos el assembler y realizar la
programación en bajo nivel, haciendo uso de dos puertos 378 y 379 para
envio y captación de datos.
Descubrimos que no era necesario el uso del protoboard para la
implementación ya que bastaba con una pequeña placa perforada para el
montaje del circuito.
El objetivo incial era hacer un sistema de alarma con minimo 4 puntos y si
era posible extendarlo a 6, esta barrera fue superada, ya que haciendo uso
del multiplexor pudimos extenderlo hasta 8 puntos. Dejando la puerta abierta
a poder inclusive llegar a implementar un sistema con 16 o mas puntos.
Cabe resaltar que en una de nuestras pruebas al poner todas las alarmas
apagadas el programa en ejecución mostraba lo contrario como si todas
estuvieran encendidas. El problema identificado era que las resistencias
(1kΩ) eran el problema ya que al estar instaladas en paralelo la unión de 8
reducía la resistencia en general, y esto al comparar con la resistencia del
multiplexor, era menor, entonces el sistema elegía el camino de menor
resistencia y enviaba 5V como si todo estuviera activo, para esto cambiamos
las resistencias por otras de 10kΩ y el programa nos dio el resultado
esperado.
Sistema de Alarma usando puerto paralelo Página Nº 24
25. ANEXOS
Muestra de la ventana con el programa ejecutándose con todas las ventanas y la puerta
cerradas.
Alarma activa en la puerta cuando esta se abre.
Alarma activa en la puerta, y en las ventanas 6 y 7 cuando están abiertas.
Sistema de Alarma usando puerto paralelo Página Nº 25
26. Enlace del video en youtube.
http://www.youtube.com/watch?v=9LwV-ETiMc4&feature=youtu.be
Sistema de Alarma usando puerto paralelo Página Nº 26