标题: 8255交通灯实验 [打印本页]

作者: 烟花纷笑    时间: 2018-12-31 10:08
标题: 8255交通灯实验
掌握通过 8255A 并口传输数据的方法,以控制发光二极管的亮与灭。
利用 Proteus 仿真 8255A 控制交通灯,用 8255A 做输出口,控制十二个 LED 亮灭,模拟交通灯管理。
包含连线图,连线图文件,以及汇编源码。
源代码:
   CODE SEGMENT ;8255A 控制交通灯程序
ASSUME CS:CODE
IOCONPT EQU 86H;8255 控制口
IOAPT EQU 80H ;PA 口
IOBPT EQU 82H;PB 口
IOCPT EQU 84H;PC 口
START:MOV AL,10000010B ;PB 输入,PA,PC 输出
MOV DX,IOCONPT
OUT DX,AL ;写命令字
MOV DX,IOBPT ;读 PB 口
IN AL,DX
MOV BYTE PTRDS:[0601H],AL ;保存 PB 口数据
MOV DX,IOCONPT ;8255 控制口
MOV AL,10010010B
OUT DX,AL ;写命令字,PA,PB,PC 输出
MOV DX,IOBPT ;
MOV AL,DS:[0601H]
OR AL,0F0H
OUT DX,AL   
MOV DX,IOCPT
MOV AL,0F0H
OUT DX,AL ;四路口红灯全亮
CALL DELAY1 ;延时
IOLED0: MOV AL,01011010B
MOV DX,IOCPT
OUT DX,AL ;南北绿灯亮,东西红灯亮
CALL DELAY1 ;延时
CALL DELAY1 ;延时  
OR AL,0F0H
OUT DX,AL ;南北绿灯灭
MOV CX,8H ;闪烁8次?
IOLED1: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,10101111B
OUT DX,AL ;南北黄灯亮
CALL DELAY2 ;延时
OR AL,01010000B
OUT DX,AL ;南北黄灯灭
CALL DELAY2 ;延时
LOOP IOLED1 ;南北黄灯闪烁 8 次     
MOV DX,IOCPT
MOV AL,0F0H
OUT DX,AL ;四路口红灯全亮
CALL DELAY2 ;延时
MOV AL,10100000B
OUT DX,AL ;东西绿灯亮
CALL DELAY1 ;延时
CALL DELAY1
OR AL,0F0H
OUT DX,AL ;东西绿灯灭
MOV CX,8H
IOLED2: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,01011111B  ;因为是与,保留低四位
OUT DX,AL ;东西黄灯亮
CALL DELAY2 ;延时
OR AL,11110000B
OUT DX,AL ;东西黄灯灭
CALL DELAY2 ;延时
LOOP IOLED2 ;东西黄灯闪烁 8 次        
MOV DX,IOCPT
MOV AL,0F0H
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,1500H
DELA1: LOOP DELA1
POP CX
RET
CODE ENDS
END START

实验4(8255).rar

15.88 KB, 下载次数: 47, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1