一、实验目的
1、掌握Proteus软件绘制原理图的方法。
2、掌握Proteus软件的MASM32编译器编写汇编程序和程序调试。
3、掌握8255和8253A可编程接口芯片的使用。
4、掌握十字路口交通灯的工作原理和各个方向的灯泡控制逻辑。
二、实验内容
用三色LED灯(红、绿、黄)模拟十字路口交通灯管理。假设一个十字路口为东西南北走向。十字路口交通灯的变化规律要求:
1、南北路口的绿灯,东西路口的红灯同时亮10秒左右。
2、南北路口的黄灯闪烁若干次(5秒左右),同时东西路口的红灯继续亮。
3、南北路口的红灯、东西路口的绿灯同时亮10秒左右。
4、南北路口的红灯继续亮、同时东西路口的黄灯闪烁若干次(5秒左右)。
重复上述变化过程。
三、实验原理图及程序流程图
四、汇编语言程序
.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
NMI_INIT:
;中断服务程序初始化
SUB AX,AX ;清零AX
MOV ES,AX ;中断向量表段地址为0
MOV AX,OFFSET NIMI_SERVICE ;获取NIMI_SERVICE的偏移地址
MOV ES:008H,AX ;008H为中断在中断向量表中的位置
MOV AX,SEG NIMI_SERVICE ;获取段地址
MOV ES:00AH,AX
MOV DX,206H ;写控制字寄存器---控制PA口
MOV AL,10001001B ;控制字1、A方式0、基本输入和输出00、A输出0、
;PC7~4为输入1、B方式0基本输入和输出0、B输出0、PC3~0为输入1
OUT DX,AL ;初始化端口,设置输入和输出口
MOV AL,00110111B ;计数器0 16位 方式3 十进制 产生方波
MOV DX,406H ;写入控制字
OUT DX,AL
MOV DX,400H ;计数器0地址 16位
MOV AL,00H ;两次发送 100KHZ 1000分频 100HZ
OUT DX,AL
MOV AL,010H ;高字节
OUT DX,AL
MOV DX,406H
MOV AL,10010001B ;计数器2 低8位 方式0 十进制
OUT DX,AL
xunhuan1:
MOV DX,200H ;选中PA口
MOV AL,035H ;北南绿灯,东西红灯
OUT DX,AL
MOV DX,404H ;写入计数器2的初值
MOV AL,050H
OUT DX,AL
MOV CX,0014H ;写LOOP的初值,控制红绿灯20*0.5=10S
xunhuan2:
JMP $ ;跳10S,后续中断跳出
LOOP xunhuan2
MOV CX,0005H ;控制黄灯5*2*0.5=5S
xunhuan3:
MOV DX,200H ;选中PA口
MOV AL,033H ;北南黄灯亮
OUT DX,AL
JMP $
MOV DX,200H ;选中PA口
MOV AL,037H ;北南黄灯熄
OUT DX,AL
JMP $
LOOP xunhuan3 ;持续5次
MOV DX,200H ;选中PA口
MOV AL,02EH ;北南红灯,东西绿灯
OUT DX,AL
MOV CX,0014H ;控制红绿灯20*0.5=10S
xunhuan4:
JMP $ ;跳10S,后续中断跳出
LOOP xunhuan4
MOV CX,0005H ;控制黄灯5*2*0.5=5S
xunhuan5:
MOV DX,200H ;选中PA口
MOV AL,01EH ;东西黄灯亮
OUT DX,AL
JMP $
MOV DX,200H ;选中PA口
MOV AL,03EH ;东西黄灯熄
OUT DX,AL
JMP $
LOOP xunhuan5 ;持续5次
JMP xunhuan1 ;无限循环
NIMI_SERVICE:
MOV DX,404H ;再次写入计数器2的初值
MOV AL,050H
OUT DX,AL
POP AX ;跳出中断
INC AX
INC AX
PUSH AX
IRET ;中断返回
.DATA
END
五、实验结果及结果分析
在本次的实验时,采用中断计时的方式,在8253A芯片中,利用其工作方式0,在每次计数结束之后,产生0.5s的中断计数信号,发送给8086,之后,由此中断控制信号,来对外部的8255A的PA口进行控制。
其中,需要每次产生北南绿灯、东西红灯持续10s,之后,北南黄灯闪烁5s。此后,北南红灯、东西绿灯持续10s,之后,东西黄灯闪烁5s。在总体的循环中,无限执行以上的程序即可。
根据以下的实验结果情况,在利用8253的计数器和8255的PA口实现控制,十字交通灯共有4种情况。其中,左上图此时北南绿灯,东西红灯,持续10s;右上图此时北南黄灯闪烁5s,东西红灯持续5s;左下图此时北南红灯,东西绿灯,持续10s;右下图此时北南红灯持续5s,东西黄灯闪烁5s。