Ingeniero Técnico en Informática de Sistemas


Implementación de un Semáforo


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 :

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

1 0 0 0 0 1

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

1 0 0 0 1 0

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

0 0 1 1 0 0

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

0 1 0 1 0 0

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

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

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:

Implementación de un Semáforo

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.




Descargar
Enviado por:Alvaro Pérez
Idioma: castellano
País: España

Te va a interesar