📄 程序.txt
字号:
CODE SEGMENT
ASSUME CS:CODE
=FF2B IOCONPT EQU 0FF2BH ;定义8255各寄存器地址
=FF28 IOAPT EQU 0FF28H
=FF29 IOBPT EQU 0FF29H
=FF2A IOCPT EQU 0FF2AH
ORG 12E0H ;定义起始地址
START: MOV AL,82H
MOV DX,IOCONPT ;写8255控制字,三个口均工作于方式0
OUT DX,AL ;B口为输入,A及C口输出
MOV DX,IOBPT ;读PB口数据存0601H单元
IN AL,DX
MOV BYTE PTR DS:[0601H],AL
MOV DX,IOCONPT ;写方式控制字均为输出
MOV AL,80H
OUT DX,AL
MOV DX,IOBPT ;置PB口高四位,熄黄灯
MOV AL,DS:[0601H]
OR AL,0F0H
OUT DX,AL
MOV DX,IOCPT
MOV AL,0F0H ;使PC0~PC3为0,PC4~PC7为1
OUT DX,AL ;即点亮红灯,熄灭绿灯
CALL DELAY1 ;延时
IOLED0: MOV AL,10100101B ;使1,3路口绿灯亮,同时2,4路口红灯亮
MOV DX,IOCPT
OUT DX,AL
CALL DELAY1 ;延时
CALL DELAY1
OR AL,0F0H ;灭1,3路口绿灯
OUT DX,AL
MOV CX,8H ;置计数器值为8
IOLED1: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,10101111B ;点亮1,3路口黄灯
OUT DX,AL
CALL DELAY2 ;延时较短时间
OR AL,01010000B ;灭1,3路口黄灯
OUT DX,AL
CALL DELAY2 ;延时较短时间
LOOP IOLED1 ;黄灯闪烁8次
MOV DX,IOCPT
MOV AL,0F0H ;点亮4个红灯,灭4个绿灯
OUT DX,AL
CALL DELAY2 ;延时
MOV AL,01011010B ;使1,3路口绿灯亮,同时2,4 路口红灯亮
OUT DX,AL
CALL DELAY1 ;延时
CALL DELAY1
OR AL,0F0H ;灭2,4路口绿灯
OUT DX,AL
MOV CX,8H ;置计数初值
IOLED2: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,01011111B ;点亮2,4路口黄灯
OUT DX,AL
CALL DELAY2 ;延时
OR AL,10100000B ;灭2,4路口黄灯
OUT DX,AL
CALL DELAY2 ;延时
LOOP IOLED2 ;黄灯闪烁8次
MOV DX,IOCPT
MOV AL,0F0H ;点亮4个红灯,灭4个绿灯
OUT DX,AL
CALL DELAY2 ;延时
JMP IOLED0 ;循环
DELAY1: PUSH AX
PUSH CX ;延时子程序
MOV CX,0030H
DELY2: CALL DELAY2
LOOP DELY2
POP CX
POP AX
RET
DELAY2: PUSH CX
MOV CX,8000H
DELA1: LOOP DELA1
POP CX
RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -