Programación experimental del principio de microcomputadoras
Puedes consultar un programa de diseño similar y modificar la configuración de los puertos correspondientes.
Diseño detallado:
Escriba un programa de ensamblaje para controlar el estado de los semáforos en cuatro direcciones hasta 8255A. La suposición específica es que el estado del diseño es el siguiente:
1. Primero, el estado inicial es 0. Apague las luces del este, oeste, norte y sur.
2. Luego, después de un período de tiempo, cambia al estado 1, con luces verdes en el este y el oeste y luces rojas en el norte y el sur.
3. Después de un período de tiempo, cambia al estado 2. Las luces este y oeste parpadean en verde varias veces y luego se encienden en amarillo, con un retraso de unos segundos. -La intersección sur todavía está abierta.
4. Cambie nuevamente al estado 3, las luces norte y sur son verdes y las luces este y oeste son rojas.
5. Después de un período de tiempo, cambia al estado 4. La luz verde del norte y del sur parpadea varias veces y se vuelve amarilla. Después de un retraso de unos segundos, las luces del este y del oeste. permanece rojo.
6. Finalmente regresa al estado 1 para continuar el ciclo.
Explicación: (1) De hecho, el parpadeo de la luz amarilla consta de dos estados, como la luz roja norte-sur y la luz amarilla este-oeste encendidas al mismo tiempo, y el norte -luz roja sur y luz amarilla este-oeste apagadas al mismo tiempo. Por tanto, el puerto 1 tiene siete grupos de estados.
Dirección este-oeste: PA0 luz roja; PA1 luz amarilla; PA3 luz verde;
Dirección norte-sur: PA4 luz amarilla; PA5 luz verde;
p>
( 2) El LED de dos colores se empaqueta junto con un chip de LED rojo y un chip de LED verde, con un terminal negativo común. Cuando el terminal rojo se lleva a un nivel alto y el terminal positivo verde se lleva a un nivel bajo, la luz roja se enciende cuando el terminal rojo se lleva a un nivel bajo y el terminal positivo verde se lleva a un nivel alto; la luz verde se enciende; cuando ambos extremos se conducen a un nivel alto, la luz amarilla se enciende.
Código fuente
SEGMENTO DE DATOS
TIME1 EQO 10
TIME2 EQO 600
OUT_CODE DB 14H, 5 DUP(12H, 10H), 41H, 5 DUP(21H, 01H), 0
EXTREMOS DE DATOS
SEGMENTO DE CÓDIGO
ASUME CS: CÓDIGO, DS: DATOS
INICIO: MOV AX, DATA
MOV DS, AX
MOV DX, 307H; dirección de puerto de palabra de control envía DX
MOV AL, 80H; palabra de modo de envío
OUT DX, AL
MOV DX, 304H; la salida del puerto A envía DX
LPPO0: LEA SI. OUT_CODE; segmento de datos
LPPO1: MOV AL, [SI]
AND AL, AL; CF establecido en cero
JZ LOOP0
OUT DX, AL
INC SI
MOV CX, TIME1; retardo corto
TEST AL, 44H; ¿la palabra del código de prueba es 14H o 41H?
JZ DELAY1; Ninguno
MOV CX, TIME2; Retraso largo
DELAY1: PUSH CX; programa de retardo
PUSH AX
MOV CX, 0040H
A1: MOV AX, 056CH
A2: DEC AX
JNZ A2
BUCLE A1
POP AX
POP CX
LOOP DELAY1
MOV AH, 0BH detecta si hay entrada de teclado
<; p>INT 21HAND AL, AL
JZ LOOP1
XOR AL, AL apaga la luz y sale
OUT; DX , AL
MOV AH, 4CH; Regresar al sistema DOS
INT 21H
FIN DEL CÓDIGO
INICIO FINAL
Resultados de la ejecución del programa
El estado inicial es que todas las luces están apagadas en el este, oeste, norte y sur. Después de un tiempo, los semáforos de este a oeste se vuelven verdes, mientras que los semáforos de norte a sur permanecen en rojo. Después de un rato, las luces amarillas del este y del oeste comenzaron a parpadear 5 veces, y las luces del norte y del sur todavía estaban rojas. Luego se enciende la luz roja de este a oeste y la luz de norte a sur se vuelve verde al mismo tiempo. De manera similar, después de un período de tiempo, las luces amarillas del norte y del sur parpadean 5 veces y las luces del este y del oeste son rojas. Luego regrese a la luz verde de este a oeste, a la luz roja de norte a sur, y así sucesivamente.