⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc8255l.asm

📁 此程序是微机与接口技术的课程设计源程序
💻 ASM
字号:
;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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -