Red de conocimiento informático - Conocimiento del nombre de dominio - Principios de microcomputadoras 8255 Programación

Principios de microcomputadoras 8255 Programación

;;8255 conexión de hardware y configuración de software:

;;entrada del modo 0 del puerto B, PB0~PB3 están conectados a K1~K4 respectivamente;

; ;Una salida de modo de puerto 0, el circuito de control externo PA0~PA3 controla las 4 acciones de la luz;

;;El circuito de control puede estar compuesto por 74LS06, ULN2003 como un relé de control de amplificación de corriente invertida o un sólido relé;

;;El puerto C está inactivo;

;;De acuerdo con la configuración anterior, la palabra de control del modo 8255 es 82H;

;;En un sistema donde se utiliza la PC como host, el 4 de 8255 Las direcciones de registro son:

;; el puerto A es 60H, el puerto B es 61H y el registro de control de modo es 63H.

;;El programa de montaje es el siguiente:

SSEG SEGMENT PARA STACK ;Definición del segmento de pila

DW 30H DUP(?)

SSEG ENDS

CSEG SEGMENT; Definición del segmento de código

ASSUME CS:CSEG,DS:CSEG

ORG 200h Primera dirección del programa principal

INICIO: MOV AL, 82H; Palabra de control de modo

MOV DX, 63H

OUT DX, AL La palabra de control de modo se envía al registro de control de modo

Escanear: IN AL,61H ;Escanear el estado K1~K4 leído desde el puerto B

LLAMADA PRC1 ;Encender y apagar luces

LLAMADA PRC2 ;Si pausar

CALL PRC3 ; Si se debe invertir la dirección

CALL PRC3 ; Si se debe mover

JMP Scan ; Subrutina de operación /luz apagada" Definición

PUSH AX ;El estado del puerto B se inserta en la pila y se almacena temporalmente

TEST AL,00000001B ;Detecta el estado de entrada PB0

JZ CloseL ;Si PB0 tiene un nivel bajo, indica que K1 está apagado, gire a CloseL para ejecutar

OpenL: OUT 60H,AL Si PB0 tiene un nivel alto, indica que K1 está encendido, salidas PA0; nivel alto y la luz se enciende

JMP RT1 Volver al comando en RT1

CerrarL: MOV AL,00000000B ;PA0 emite nivel bajo

OUT 60H,AL ;Apagar la luz

RT1: POP AX ; Recuperar el estado del puerto B de la pila

RET ;Volver al programa principal

PRC1 ENDP ;Definición de subrutina completada

PRC2 PROC NEAR ;Definición de subrutina de operación "Pausar"

PUSH AX ;El estado del puerto B se inserta en la pila y se almacena temporalmente

TEST AL,00000010B ;Detecta el estado de entrada PB1

JZ RT2 ;Si PB1 está bajo, significa interrupción K2, sin pausa

PAUS: OUT 60H,AL

;Si PB1 está alto, significa que se pasó K2, PA1 sale alto, pausa

RT2: POP AX ;El estado del puerto B sale de la pila

RET ;Regresa al programa principal

PRC2 ENDP ;Definición de subrutina completada

PRC3 PROC NEAR ;Definición de subrutina de operación "inversa"

PUSH AX ;El estado del puerto B se inserta en la pila y se guarda temporalmente almacenado

TEST AL,00000100B; Detecta el estado de entrada de PB2

JZ RT3; si PB2 está bajo, significa que K3 está apagado y no invierte la dirección

CHG; : MOV AL,00000101B; si PB2 tiene un nivel alto, significa que K3 pasa

OUT 60H,AL; PA2 y PA0 emiten un nivel alto, invierte la dirección y la luz permanece encendida

RT3: POP AX; estado del puerto B Salir de la pila

RET Volver al programa principal

PRC3 ENDP; Definición del subprograma completada

PRC4 PROC NEAR; ; Definición del subprograma de operación "Mover"

TEST AL,00001000B; Detectar estado de entrada PB3

JZ RT4 es bajo, significa que K4 está apagado y no se mueve

MOVER: MOV AL,00001001B; si PB3 tiene un nivel alto, indica que K4 pasa

OUT 60H, AL; PA3 y PA0 emiten un nivel alto y se mueven, la luz permanece encendida

RT4: RET; volver al programa principal

PRC4 ENDP; se completa la definición del subprograma

CSEG ENDS; se completa la definición del segmento de código

END START;Principal el programa termina