实验五 有急救车的交通灯实验
实验五 有急救车的交通灯控制实验 一、实验目的:
1(学习外部中断技术的基本使用方法。
2(学习中断处理程序的编程方法。
3(学习模拟交通灯控制的实现方法。
二、实验设备:
微机、KEIL2、Proteus 7.5
三、实验内容:
在完成交通灯亮灭规律的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为5秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲(下降延有效)为中断申请,
示有急救车通过。
四、实验原理:
1(交通灯的燃灭规律:
要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到12个发光二极管,即红、黄、绿各4个。不妨将L1、L2(红)、L3、L4(黄)、L5、L6(绿)做为东西方向的指示灯,将L7、L8(红)、L9、L10(黄)、L11、L12(绿)做为南北方向的指示灯。而交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后(约10秒),东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后(约3秒),东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。
2(中断处理
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序最好不要混用,最好主程序延时用R5、R6、R7,中断延时用R2、R3 、R4。第二,主程序中每执行一步经P1的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。因为进入中断程序后也要执行往P1端口输出数据的操作,中断返回时如果没有恢复中断前P1端口锁存器的数据,则显示往往出错,回不到中断前的状态。 五、实验步骤:
1(
电路:P1接发光二极管L1,L12,单脉冲输出端接INT0。
2(编写程序实现有急救车的交通灯控制。
七、实验报告要求:
1(在实验报告中请将实验中所设计电路图、编写的实验程序及程序框图附上。
org 0000h
ljmp start
org 0003h
ljmp zdfw
start:
setb ex0
setb it0
setb ea
mov a,#0f6h
mov p1,a
acall delay begin:
mov a,#0f3h
mov p1,a
acall delay1
mov r3,#5 next: mov a,#0f5h
mov r4,#2 next1: mov p1,a
acall delay
inc a
inc a
djnz r4,next1
djnz r3,next
mov p1,#0deh
acall delay1
mov r3,#5 next2: mov a,#0eeh
mov r4,#2 next3: mov p1,a
acall delay
add a,#10h
djnz r4,next3
djnz r3,next2
sjmp begin
delay: mov r0,#15 loop5: mov r1,#55 loop4: mov r2,#201
djnz r2,$
djnz r1,loop4
djnz r0,loop5
ret
delay1: mov r0,#94 loop3: mov r1,#180 loop2: mov r2,#196
djnz r2,$
djnz r1,loop2
djnz r0,loop3
ret
zdfw:
push acc
mov 40h,p1
mov p1,#0f6h
mov r7,#100
D1: mov r6,#173 D2: mov r5,#143
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
mov p1,40h
pop acc
reti
End