Implementación de un Semáforo

Anuncio
OBJETIVO: Llegar a aprender el uso correcto del puerto paralelo, la configuración del mismo, armar con
éxito un cable plano DB25 y realizar un ensayo de semáforo de un cruce, que en realidad son dos semáforos.
En el siguiente ensayo, se presentará el reporte de la práctica que consistió en armar un cable plano de 25
hilos, mejor conocido como DB−25.
Este era el primer paso, de hecho tuvimos que haber investigado cuál es la configuración de este cable para
saber como haríamos las cosas. Habiendo conocido esto, pasamos a el armado de nuestro DB25, lo cuál fue
relativamente sencillo; de no ser por que los conectores deben de presionarse con demasiada fuerza para que
hagan perfectamente contacto las agujas con el alambre que viene en el cable.
El segundo paso, fue colocar uno de los extremos de nuestro DB25 a nuestro protoboard, en donde se tendrían
los led´s los cuáles indicarían los cambios de luces, en el ensayo de semáforo. Habiendo realizado lo anterior
estaríamos preparados púes para realizar nuestro arreglo de semáforos; claro sabiendo antes la parte del
software, el cuál habíamos ya deducido en clase, lo cuál nos arrojó lo siguiente:
1) Tendríamos 2 semáforos, los cuáles constan de tres luces cada uno y como usualmente, los colores serían
verde, anaranjado y rojo.
2) El programa controlador de esta aplicación estaría en lenguaje ensamblador, es obvio entonces, que
debimos de haber estudiado y comprendido el uso de algunos comandos del mismo así como el
funcionamiento del DEBUG.
3) La elaboración del algoritmo para hacer funcionar a esta aplicación nos resulto la siguiente:
R1 D2 D5 R2
A1 D1 D4 A2 A2
V1 D2 D3 V2
SEMÁFORO 1 SEMAFORO 2
De este esquema tan sencillo, obtendríamos lo que sería la base para realizar el programa controlador; el cuál
resultó como:
1) Del cable plano DB 25 nosotros sabemos que tenemos sólo 8 bits de salida, de los cuales ocuparemos sólo
6 ya que sólo tenemos 6 led´s.
2) Cada uno de estos led´s tiene asignado un solo número de dato de salida o número de bit, así pues el led
verde, denominado por D0 ó por V1 es la salida correspondiente a el dato cero, es decir el bit de salida
número cero, y así sucesivamente.
3) Lo único que nosotros queremos es que nuestro pequeño proyecto, simule a lo que hace un arreglo de dos
semáforos en un cruce, es entonces que llegamos a que cuando en un semáforo esté encendida la luz verde en
el otro debe estar encendida la luz roja, y cuando en un semáforo esté encendida la luz naranja, en el en el otro
semáforo debe estar encendida la luz roja, llegando así al siguiente paso que sería en realidad el primero que
describimos, el único cambio sería que ahora cambiaría el semáforo que estaría en luz roja y por consiguiente
en luz verde. Esto quedo analizado por :
1
primer paso: la luz verde del semáforo 1 está encendida y la luz roja del semáforo 2 está encendida.
D5 D4 D3 D2 D1 D0
100001
lo cúál, si acompletaramos el número binario que se forma nos daría el número:
0010 0001 que si lo convertimos a base hexadecimal sería el número 21h
segundo paso: la luz verde del semáforo 1 se apaga y se enciende la luz naranja del mismo semáforo mientras
que la luz roja del semáforo 2 sigue encendida.
D5 D4 D3 D2 D1 D0
100010
lo cuál nos da como resultado el número en base binaria: 0010 0010 el cuál si convertimos a base
hexadecimal, nos resulta el número 22h
paso 3: la luz naranja del semáforo 1 se apaga y se enciende la luz roja del mismo, mientras que en el
semáforo 2 se apaga la luz roja y se enciende la luz verde.
D5 D4 D3 D2 D1 D0
001100
si acompletamos con dos ceros este número en base dos nos que da el número:
0000 1100 el cuál en base hexadecimal corresponde a el número 0c h
paso 4: la luz roja en el semáforo 1 se mantiene encendida, mientras que en el semáforo 2 se apaga la luz
verde y se enciende la luz naranja.
D5 D4 D3 D2 D1 D0
010100
este número, es decir, el 0001 0100 es el número 14 en base hexadecimal.
Es aquí pues el final de nuestro análisis, pues de este último estado en los led´s se empieza a repetir , el primer
estado o paso, convirtiéndose entonces en un ciclo; el cuál queda entonces como:
Estado 1 21 h
Estado2 22 h
Estado3 0c h
Estado4 14 h
........de aquí vuelve al estado 1
2
1D47:0100 BB0000 MOV BX,0000
1D47:0103 BA7803 MOV DX,0378
1D47:0106 B82100 MOV AX,0021
1D47:0109 EF OUT DX,AX
1D47:010A B90000 MOV CX,0000
1D47:010D 41 INC CX
1D47:010E 81F9FFEF CMP CX,EFFF
1D47:0112 75F9 JNZ 010D
1D47:0114 B82200 MOV AX,0022
1D47:0117 EF OUT DX,AX
1D47:0118 B90000 MOV CX,0000
1D47:011B 41 INC CX
1D47:011C 81F9FFEF CMP CX,EFFF
1D47:0120 75F9 JNZ 011B
1D47:0122 B80C00 MOV AX,000C
1D47:0125 EF OUT DX,AX
1D47:0126 B90000 MOV CX,0000
1D47:0129 41 INC CX
1D47:012A 81F9FFEF CMP CX,EFFF
1D47:012E 75F9 JNZ 0129
1D47:0130 B81400 MOV AX,0014
1D47:0133 EF OUT DX,AX
1D47:0134 B90000 MOV CX,0000
1D47:0137 41 INC CX
1D47:0138 81F9FFEF CMP CX,EFFF
1D47:013C 75F9 JNZ 0137
3
1D47:013E 43 INC BX
1D47:013F 83FB0F CMP BX,+0F
1D47:0142 75BF JNZ 0103
1D47:0144 B44C MOV AH,4C
1D47:0146 CD21 INT 21
Es importante mencionar que el programa sólo funcionó cuando se corría desde el debug en modo de trace ,
no como nos había dicho el profesor, que el archivo se convertía en ejecutable; y aunque lo intentamos varias
veces no logramos establecer la forma de correr el programa desde el prompt del DOS., esa fue nuestra única
duda .
Nuestro arreglo físicamente se vería como:
Es así pues como se vería físicamente el proyecto del semáforo que se hizo, y a continuación se presentará el
listado del programa que realizamos en lenguaje ensamblador.
4
Descargar