程序.txt
来自「微机原理的实验报告 包括实验程序 自己做的 交通灯」· 文本 代码 · 共 90 行
TXT
90 行
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 + =
减小字号Ctrl + -
显示快捷键?