pc8255l.asm
来自「此程序是微机与接口技术的课程设计源程序 」· 汇编 代码 · 共 103 行
ASM
103 行
;FILENAME:PC8255L.ASM;
;内容:交通红绿灯控制
PAGE 60,78
DATA SEGMENT
PB DB ?
MESS DB' ENTER ANY KEY CAN EXIT TO DOS!', 0DH, 0AH,'$'
DATA ENDS
STACK SEGMENT STACK
DW 5O DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK
START: MOV AX, DATA
MOV DS, AX ;建立DATA段
MOV ES, AX
MOV AH, 09H
MOV DX,OFFSET MESS
INT 21H ;显示信息
MOV DX, 21BH
MOV AL,82H ;方式0,B口输入,A,C口输出
OUT DX, AL
MOV DX,219H
IN AL,DX ;读B口存PB单元
MOV PB, AL
MOV DX, 21BH
MOV AL,80H ;方式0均输出
OUT DX, AL
MOV DX,219H
MOV AL, PB
OR AL,0F0H ;置位PB口高4位,灭黄灯
OUT DX, AL
MOV DX, 21AH
MOV AL,0F0H ;4个红灯亮,4个绿灯灭
OUT DX, AL
CALL DELAY10 ;延迟
LLL : MOV AL, 10100101B ;1,3绿灯亮,2,4红灯亮
MOV DX, 21AH
OUT DX, AL
CALL DELAY10 ;延迟
CALL DELAY10
OR AL,0F0H ;灭1,3绿灯
OUT DX, AL
MOV CX,0008H ;置计数值8
TTT : MOV DX, 219H
MOV AL,PB ;亮1,3黄灯
AND AL,10101111B
OUT DX, AL
CALL DELAY1 ;延迟短时间
OR AL,01010000B
OUT DX,AL ;灭1,3黄灯
CALL DELAY1 ;延迟短时间
LOOP TTT ;黄灯闪烁8次
MOV DX,21AH
MOV AL,0F0H ;4个红灯亮,4个绿灯灭
OUT DX, AL
CALL DELAY1 ;延迟
MOV AL,01011010B ;2,4绿灯亮,1,3红灯亮
OUT DX,AL
CALL DELAY10 ;延迟
CALL DELAY10
OR AL,0F0H ;灭2,4绿灯
OUT DX, AL
MOV CX, 0008H ;8次
GGG: MOV DX, 219H
MOV AL,PB ;亮2,4黄灯
AND AL,01011111B
OUT DX, AL
CALL DELAY1 ;延迟
OR AL,10100000B ;灭2,4黄灯
OUT DX, AL
CALL DELAY1 ;延迟
LOOP GGG ;黄灯闪烁8次
MOV DX, 21AH
MOV AL,0F0H ;4个红灯亮,4个绿灯灭
OUT DX, AL
CALL DELAY1 ;延迟
MOV AH, 06H
MOV DL,0FFH ;判断是否有键按下,有则转PPP
INT 21H
JNZ PPP
JMP LLL ;继续
PPP: MOV AX, 4C00H ;返回DOS
INT 21H
DELAY1 PROC NEAR ;延迟子程序1
PUSH CX
MOV CX, 8000H
CCC: LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY10 PROC NEAR ;延迟子程序2
PUSH AX
PUSH CX
MOV CX, 0030
UUU: CALL DELAY1
LOOP UUU
POP CX
POP AX
RET
DELAY10 ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?