交通信号灯的控制
一、设计要求:
设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁。闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到1、3路口方向。之后,重复上述过程。
二、设计原理:
由于对8253芯片不是很熟悉,所以设计用8255A芯片实现设计要求。需用到8253控制定时的部分,采用软件定时(通过汇编指令)的方法来实现。灯的闪烁是用8255的A口和B口控制的,工作在方式0,A口和B口均为输出。A口表示西、北方向,B口表示东、南方向,绿灯和红灯共同表示黄灯。
三、电路接线图如下:
四、流程示意图:
N 南北方向绿灯亮 东西方向红灯亮 ? ? 南北绿灯灭、黄灯闪烁 东西绿灯亮 N 南北黄灯闪烁5次
Y
南北红灯亮
东西绿灯亮
延迟30秒 延迟30秒 东西绿灯灭 、黄灯闪烁 ? 南北绿灯亮
8255工作方式控制字和C口按位置位/复位控制字格式
8255A有三种工作方式:基本输入/输出方式、单向选通输入/输出方式和双向选通输入/输出方式:
方式0:基本输入/输出方式。方式0是8255A的基本输入/输出方式,其特点是与外设传送数据时,不需要设置专用的联络(应答)信号,可以无条件的直接进行I/O传送。
方式1:单向选通输入/输出方式。方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。
方式2:双向选通输入/输出方式。方式2为双向选通输入/输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。
8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式控制字用于设置端口A, B, C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。
五、程序代码:
DATA SEGMENT
PORTA EQU 380H;8255的A、B、C口地址 PORTB EQU 381H PORTC EQU 382H
PORTD EQU 383H ;8255的控制寄存器 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,PORTD ;设定8255工作方式 MOV AL,80H ;选择工作方式0,A口和B口为输出 OUT DX,AL
LOOP1: MOV DX,PORTA ;写A口发出的数据,北方向绿灯亮,西方向红灯亮 MOV AL,3CH OUT DX,AL
MOV DX,PORTB ;写B口发出的数据,南方向绿灯亮,东方向红灯亮 MOV AL,3CH