Red de conocimiento informático - Aprendizaje de código fuente - Encuentre un experto en ensamblaje para que le ayude a escribir un programa Neon (chip 8255)

Encuentre un experto en ensamblaje para que le ayude a escribir un programa Neon (chip 8255)

Para darte una referencia. Diseños de semáforos que se han realizado antes: 1. El tiempo para que los vehículos salgan a la acera se cambia de 3 minutos a 8 segundos. 2. El tiempo para que los vehículos salgan a la acera se cambia de 1 minuto a 5 segundos; 3. La luz amarilla parpadea durante 5 segundos y cambia a luz amarilla durante 2 segundos. -------------------------------------------------- -----------------------1. Utilice el sistema experimental 8255A para realizar el control de la luz de señal (use la personalización del puerto para realizar el control con la pantalla de 2 dígitos); 2. Utilice el contador 2 del sistema experimental 8235 para solicitar periódicamente una interrupción del IRQ7 del chip principal 8259A del sistema experimental para lograr el tiempo requerido de 8 segundos, 5 segundos y 2 segundos. La frecuencia del contador 2 del sistema experimental 8235 es 1,1923 MHZ; la GATE2 está conectada a +5 V; la sincronización se logra mediante una combinación de hardware y software. Los diodos luminosos del sistema experimental se utilizan para simular semáforos. Nota: La dirección del puerto de 8259A es: La dirección del puerto de 8255A es: puerto A-60H, puerto B-61H, puerto C-62H, puerto de control-63HT La dirección del puerto de 8253 es: La dirección del puerto de 8253 es: contador 0 -208H, contador 1-209H, contador 2-20aH, registro de control 0-20bH. PILA DE SEGMENTO DE PILA

DW 64 DUP(?)

PILA DE SEGMENTO DE CÓDIGO FINAL

ASUME CS:CODE

INICIO: EMPUJAR DS p>

MOV AX,0000H

MOV DS,AX

MOV AX,OFFSET IRQ0 ;Establecer vector de interrupción

AGREGAR AX,OFFSET IRQ0 ;Establecer vector de interrupción

ADD AX,OFFSET IRQ0;;Establecer vector de interrupción

ADD AX,OFFSET IRQ0;Establecer vector de interrupción

ADD AX,2000H

MOV SI,0020H

MOV [SI],AX

MOV AX,0000H

MOV SI,0022H

MOV [SI],AX

POP DSMOV AL,80H;8255 palabra de control

OUT 63H,AL

MOV AL,0FEH OCW1 de 8359

OUT 21H,AL

MOV AL,34H ;Establecer la palabra de control del 8253

OUT 43H,AL

MOV AL,09CH ;Establecer el valor de recuento inicial de 8253 0 OUT 40H,AL

OUT 40H,AL

MOV AL,2EH

OUT 40H,AL

MOV CH,0; cuenta el número de pulsos

MOV CL,05H; parpadea cuando llega a 5 segundos

MOV BL,1EH; cuenta cuando llega a 30 segundos

MOV BL ,1EH ;Cuenta cuando están completos 30 segundos

MOV D,09CH ;Establece la palabra de control 8253.

MOV DH,0; Bit de bandera para pasar o no

MOV DL,0; Bit de bandera para parpadear o no

A1:STI

JMP A1

;Rutina de servicio de interrupción

IRQ0:

PRUEBA DH,1

JNZ SIGUIENTE

TEST DL,1

JNZ NEXT

TEST DL,1

JNZ SS1

MOV AL,0C3H; 0,5 segundos

Jb MSN1; si interrumpir 50 veces, es decir, 0,5 segundos

Jb MSN1; si interrumpir 100 veces, es decir, 0,5 segundos

> JNZ MSN1 0,5 segundos

;MOV CH,0

MOV AL,0C3H

OUT 60H,AL

CMP CH,64H ;Flash una vez por segundo

Jb MSN

MOV CH,0

DEC CL

JNZ MSN ; /p>

JNZ MSN ; si son 5 segundos

CMP CH,32H

JnZ MSN segundos

MOV DL,0

MOV DH,1

MOV CL,5

JMP MSNEXT:PRUEBA DL,1

JNZ NEXT1

MOV AL ,3CH ;La luz roja del carril está encendida, la luz verde de la acera está encendida

OUT 60H,AL<

INC CH

CMP CH,64H

JNZ MSN ; Si interrumpir 100 veces

MOV CH,0

DEC BL

JNZ MSN ; Si ingresar 10 segundos

MOV BL,1EH

MOV DL, 1

NEXT1:

INC CH

CMP CH,32H

Jb MSN1 ;Si interrumpir 5 veces

MOV AL, 3CH

OUT 60H,AL

CMP CH,64H parpadea una vez por segundo

Jb MSN

MOV CH,0

MOV BL,1EH

MOV DL,1

MOV CH, 0

DEC CL

JNZ MSN ; ¿Son 5 segundos?

MOV DL,0

MOV DH,0

MOV CL,5

jmp MSNMSN1: MOV AL,0FFH ;menos de 1 segundo sin luz

OUT 60H, AL

MSN:MOV AL,20H

OUT 20H,AL

IRET

CÓDIGO FINALIZA

FIN INICIO