资源描述
微机原理及应用大作业
交通与汽车工程学院
课程大作业说明书
课 程 名 称: 微机原理及应用大作业
课 程 代 码: 8404431
题 目: 交通灯控制系统设计
年级/专业/班: 2004级车辆工程汽电班
学 生 姓 名: 张 华 民
学 号: 200403060301
开 始 时 间: 2007 年 6 月 11 日
完 成 时 间: 2007 年 6 月 22 日
课程大作业成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书(计算书、图纸、分析报告)撰写质量(45)
总 分(100)
指导教师签名: 年 月 日
目 录
摘要 ………………………………………………………………………………………… 2
1引言………………………………………………………………………………………… 3
1.1单片机的产生与发展…………………………………………………………………… 3
1.2单片机在汽车工业上的应用…………………………………………………………… 3
1.3本设计的主要内容……………………………………………………………………… 4
2任务与分析………………………………………………………………………………… 5
2.1本课程设计的任务……………………………………………………………………… 5
2.2交通灯方案设计………………………………………………………………………… 5
2.2.1十字路口交通灯控制系统设计方案论证…………………………………………… 5
2.2.2 交通灯应用系统的总体设计框图………………………………………………… 6
2.3交通灯控制系统总体设计过程………………………………………………………… 6
2.3.1系统整体硬件电路设计……………………………………………………………… 6
2.3.2系统软件算法分析设计…………………………………………………………… 10
2.4系统调试过程…………………………………………………………………………… 14
结论…………………………………………………………………………………………… 15
致谢…………………………………………………………………………………………… 16
参考文献…………………………………………………………………………………… 17
附录1:……………………………………………………………………………………… 18
附录2:……………………………………………………………………………………… 19
附录3: ……………………………………………………………………………………… 20
附录电路原理图 …………………………………………………………………………… 21
摘 要
单片机由于其集成度高,可靠性好,易于使用等优点使其得到了广泛的应用。因此为了进一步巩固和学习单片机的知识,本课程设计为基于8031单片机为控制核心的交通灯控制系统,在硬件电路部分,此设计的采用MCS-51系列中的8031单片机,74LS139译码器及8282地址锁存器,扩展外部数据存储器RAM6116、程序存储器EPROM2732,以LED显示器模拟代表红黄绿交通灯接至由8255A扩展I/O并行口上,另外,本设计采用译码器法选中各芯片,再通过软件部分的编程使单片机控制交通灯的红、黄、绿转换,实现交通灯控制所应有的功能,进而达到用单片机进行控制的目的。
关键词:单片机、交通灯、 存储器、8255A
1 引 言
1.1单片机的产生与发展
单片机自20世纪70年代问世以来,为满足时代发展的要求,以其极高的性能价格比受到了人们的重视和关注,单片机是计算机技术、大规模集成电路技术和控制技术的综合产物,经过30多年的发展历程,单片机应用已十分广泛和深入,已经对人类社会的发展和进步产生了巨大的影响,尤其是MCS-51系列的单片机,凭借其集成度高,处理能力强,可靠性好,价格低廉,体积小,重要量轻,开发也较容易等优点得到了广大工程人员的认可,并且已经广泛用于各种测控领域,以更好地实现自动化。
单片机的发展历史可分为四个阶段:
第一阶段(1974-1976):单片机初级阶段。因工艺术限制,单片机采用双片的形式而且功能比较简单。
第二阶段(1976-1978):低性能单片机阶段。以Intel公司制造的MCS-48单片机为代表,这种单片机片内集成有8位CPU、并行I/O口、8位定时器/计数器RAM和ROM等,不足之处为串行口,中断处理比较简单。
第三阶段(1978-现在):高性能单片机阶段。这个阶段推出的单片机普遍带有串行口,多级中断系统,16 位定时器/计数器,片内ROM、RAM容量加大,寻址范围可达64K
第四阶段(1982-现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段。1.2单片机在汽车工业上的应用
单片机以其卓越的性能,得到了广泛的应用,已深入到各个领域,汽车工业作为支持我们国民经济发展的一大支柱,它的发展速度非常迅速,发展规模也不断壮大,是一个迅速发展的工业,特别是电子应用于汽车上,令多种新功能得以实现,由于单片机的测控的优越性,使其在汽车工业上的应用和发展是非常迅速的,但总的来说,单片机在汽车上的应用分为以下三部分:
(1)汽车发动机控制:涡轮增压、燃料喷射控制;
(2)汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航系统;
(3)汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR),电子稳定系统(ESP) ;
在汽车技术中,无论是过程控制技术、数据采集还是测控技术,都离不开单片机, 在汽车领域中,机电一体化技术将发挥愈来愈重要的作用,总之单片机在这种集机械、微电子和计算机技术为一体的综合技术中已经扮演了非常重要的角色了。
1.3本设计的主要内容
单片机应用系统设计不但要熟练掌握单片机程序设计语言和编程技术,而且还要具备扎实的单片机硬件方面的理论和实践知识。而本设计的意旨在于更好地掌握和巩固学习单片机的相关知识,为将来的工作和学习打下更加坚实的基础。本设计的主要内容包括如下几点:
(1)能实现A、B两车道的定时放行时间。
(2)能实现当一道有车而另一道无车时,交通灯控制系统能立即让有车的车道放行的功能。
(3)若有紧急车辆要求通过时(如救护车),此系统应能禁止普通车辆通行,而让紧急车辆通行。
在器件的选择上,采用MCS-51系列的8031单片机,由于其内部没有程序存储器,所以根据需要在片外扩展了程序存储器EPROM2732,并且也扩展外部数据存储器RAM6116,通过这些过程可以更好的掌握和巩固有关数据存储器及程序存储器扩展的基本知识,另外,通过8255A扩展I/O并行接口,可以了解和掌握8255A芯片的使用及扩展I/O口的基本知识。还有,在已经设计好的硬件电路的基础上,通过汇编语言的软件编程在一定程度上能更了解硬件电路的功能,是对硬件功能方面的一种完善,而且通过此设计的过程,可以更好的掌握和学习单片机常用的指令。
因此,本设计的实践意义是很明确的,旨在更好的学习掌握单片机的相关知识,从而掌握好专业技能。
2任务与分析
2.1本课程设计的任务
本设计的主要任务就是利用单片机实现十字路口的交通灯系统控制的功能。十字路口的交通灯系统所具有的功能如下(设东西道为A道,南北道为B道):
(1) A道放行时间为2分钟,B道放行时间为1.5分钟;
(2) 绿灯表示放行信号,红灯表示停止信号;
(3) 绿亮转红灯时,黄灯持续亮2秒;
(4) 当一道有车而另一道无车时,交通灯控制系统能立即让有车的车道放行;
(5) 若有紧急车辆要求通过时(如救护车),此系统应能禁止普通车辆通行,而让紧急车辆通行。
2.2 交通灯方案设计(或分析)
2.2.1十字路口交通灯控制系统设计方案论证
(1)方案一
本方案采用MCS-51系列的8031单片机作为中心处理部件,由于8031内部没有集成程序存储器,所以需要在外部扩展程序存储器,扩展空间为8KB,不扩展数据存储器。用6个LED显示器分别模拟代替红黄绿交通灯显示,并将LED分别接至P1口的P1.0至P1.5,即将P0口做为直接输出口,LED为共阳极连接,接高电平,所以当向P1中的某端口写入“0”时,可以点亮其相应的LED交通灯。另外,在紧急车辆通过的时候,采用外部实时中断方式(INTO),低电平触发中断方式。在AB两车道分别接两个车辆探测传感器,用于检测车道上是否有车辆,并将检测到的模拟信号输入A/D模数转换,然后将转换后的数字信号输入单片机端口P1.5和P1.6(分别代表两车道的车辆信号),当检测到一车道有车,一车道无车时,通过向INTO端口输入低电平,便可实现中断的功能。
(2)方案二
本方案仍然采用MCS-51系列的8031单片机作为中心处理部件,如上方案一,在8031片外扩展程序存储器,扩展空间为4K,与方案一不同的是,此方案还扩展了外部数据存储器RAM,并且通过8255A芯片来扩展I/O并行接口,选择用8255A主要是为了学习掌握8255A扩展外部I/O并行接口的方法以及了解8255A芯片的使用方法, 由于在8031片外有三种芯片,所以此方案采用74LS139译码器,以其输出信号作为外部数据存储器RAM、程序存储器ERPOM、以及8255A的片选信号,另外,由于P0口为地址总线和数据总线分时复用口,故还需要一个地址锁存器,本人选择的地址锁存器型号为8282,用以保存8031与外部芯片之间的地址信号。对于有紧急车辆通过的情况,如方案一,采用外部中断INT0实时中断处理方式,低电平有效。以及对于一车道有车,一车道无车时的处理情况仍然如方案一。
2.2.2 交通灯应用系统的总体设计框图
本人选择方案二的系统设计方法,之所以选择方案二其主要的原因是方案二选用的器件比较全面,芯片包括8031,数据存储器RAM和程序存储器EPROM,译码器,锁存器,8255AI/O扩展芯片,以及LED显示器。通过这些芯片的硬件电路设计,可以更好的了解各种芯片的使用方法,更好地理清各硬件电路部分的联接关系,另外,通过实践可以对数据存储器、程序存储器以及外部I/O端口的扩展方法有更好的掌握,从而从总体上对单片机原理及应用方面的知识有更全面的了解。
对此方案的总体设计图如右图1所示:
2.3交通灯控制系统总体设计过程
2.3.1系统整体硬件电路设计
[1]简单介绍各主要元器件结构及其功能
(1)8031单片机:在此单片机上集成了微处理器(CPU),内部数据存储器(RAM),以及输入输出端口。8031单片机采用40只引脚的双列直插封装方式(见图2),各引脚的功能如下:
①时钟引脚X1及 X2:用于接晶体振荡器,此次设计用的晶振频率为6MHZ。
②RESET脚:是复位信号输入端,高电平有效。
③ALE脚:地址锁存允许信号,用于锁存单片机输出的地
址信号,高电平有效 图1方案总体设计流程图
④PSEN脚:程序存储器输出控制端,在单片机访问外部程序存储器时,此引脚输出的负
脉冲作为读外部程序存储器的选通信号,接至程序存储器的OE端。低电平有效。
⑤EA脚:其功能为内外程序存储器选择控制端。当EA为高电平时,单片机访问内部程序存储器,当EA为低电平时,单片机直接访问片外程序存储器。本设计用的是8031,由于8031内部无程序存储器,所以此引脚应接地。低电平有效。
⑥I/O口引脚:共4个,分别是P0、P1、P2、P3,均为8位口。这4个I/O口可分别作为基本的Input、Output端口。其中P0口可作为数据总线和地址总线(低8位)分时复用的端口,P2口可作为地址总线的高8位,即 图2 8031单片机
P0口和P2口地起构成16位地址总线,可供寻址的地址范围是:64KB。P3口具有第二功能,即可以产生中断,定时计数等功能。
⑦RD、WR引脚:为读和写选通信号,RD用于将单片机的数据写入外设中,WR用于从外设中读取数据。低电平有效
(2)数据存储器RAM6116(2K X 8):如右图3所示。其容量为2K,8根数据总线D0~~D7,11根地址总线A0~~A10,E脚为片选择信号输入线,低电平有效,还有G和W引脚,分别为读和写选通信号,与单片机的RD和WR相连。 图3 数据存储器
(3)程序存储器EPROM2732(4K X 8):如右图4所示。其容量为4K,8根数据总线D0~~D7,12根地址总线A0~~A11;CE为片选信号输入端;OE为输出允许控制端,与单片机PSEN连接。
(4)8255A:如图5所示。它具有3个8位的并行I/O口,具有三种工作方式。共有40个引脚,采用双列直插式封装。
D0~~D7:三态双向数据线,与单片机数据总线连接,用以传递数据信。
CS:片选信号输入端,低电平有效。
PA0~~PA7:A口输入/输出线
PB0~~PB7:B口输入/输出线
PC0~~PC7:C口输入/输出线 图4 程序存器
RESET脚:复位信号线
A1、A0:地址线,用来选择8255A的内部端口。
(5)地址锁存器8282:如下图6所示。
D0~~D7:8位数据输入线
Q0~~Q7:8位数据输出线
STB:数据输入锁存选通信号,高电平有效。当该信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存。
OE:数据输出允许信号,低电平有效。
(6)译码器74LS139: 如下图7所示74LS139是一种双2-4译码器,这两个译码器完全独立。有两输入,四输出,其输出结果可以作为片选信号。其中E引脚必须为低电平,通过B、A引脚的组合输出4种结果,分别有Y0,Y1,Y2,Y3,它们均为低电平有效。 图5 8255A芯片
由于其余器件比较简单,故在此不作说明。
图6 8282锁存器 图7 74LS139译码器
[2]机型以及元器件的选择
本设计所用的元器件如表1所示:
表1 元器件列表 附:导线若干
器件名称
芯片型号
数量(块)
单片机
MCS-51系列8031
1
数据存储器RAM
6116
1
程序存储器EPROM
2732
1
I/O扩展芯片
8255A
1
地址锁存器
8282
1
译码器
74LS139
1
车辆传感器
能达要求即可
2
电阻(RES)
常用电阻
3
电容(CAP)
常用电容
3
晶体振荡器
XTAL(6MHZ)
1
单阐刀开关
SW-SPST
1
按扭开关
SW-PB
1
交通灯
LED
12
[3]根据所选的元器件用PROTEL绘制电路原理图:
(1)准备工作
从Protel软件的Library元件库中挑选出设计所需要的各种元件(注:元件名称、 型号及数量见表1),然后将各元件的排放位置进行合理的布局,以便于后面的绘图工作。
(2)电气连接
绘制地址总线AB与各芯片的地址线连接,要注意应该低位地址接低位地址,高位地址接高位地址,同理,数据总线的控制总线即可类似操作。
(3)进行电路原理图的编译
当所有导线连接完毕后,要进行电路原理图的编译以确定是否有错误的电气连接,如果发展有错误根据编译信息对错误的地方进行检查,然后再重新编译,直至正确。
[4]各部分硬件电路设计:
(1)时钟电路图:
本设计采用内部时钟方式,如图8所示:
(2)外部中断触发电路
由图9可知,此电路由一电阻R外接+5V的电源,另加一单阐刀开关S,并接地。当S断开时INTO引 图8 时钟电路
脚为高电平;当S闭合时INTO引脚为低电平,即此电路的功能是当闭合S开关时输入一低电脉冲,即采用电平触发方式产生中断,从而实现当车道有紧急车辆时让紧急车辆优先通过的功能。
(3)复位电路设计
本复位电路如图10所示,采用的是手动按键电平触发方式 图9外部中断触发电路
复位电路,此电平复位是通过REST端经电阻与电源+5V接通而实现的。
(4)交通灯及传感器硬件电路设计
硬件电路如图11所示,因为东西道为A道,南北道为B道,故在东、西、南、北四个方向分别布置3个交通灯(红、黄、绿),B道绿、黄、红三个交通灯分别与PA0、PA1、PA2相连,同理,A道绿、黄、红三交通灯分别与PA3、PA4、PA5。 图10 复位电路
并且将在这四个方向上的交通灯的LED阳极分别相连并接+5V电源, 故要控制交通灯的亮与灭,只需要在其相应的端口引脚上写入“0”与“1”即可。另:在两车道上分别放置两个能够反应车道上有无车辆的传感器两个,将其采集到的信号分别输入PB口的PB6及PB7端口,让单片机进行数据处理。
图11 交通灯及传感器硬件电路
(5)电路原理图(见附录电路原理图)
2.3.2系统软件算法分析设计
任何一个应用系统,它们都有着自己的硬件系统和软件系统, 少了任何一个部分都不可能称之为一个完整的应用系统,它们之间是相互依存的一个整体,硬件系统是软件系统的一个基础和前提,为软件系统提供了一个操作平台;而软件系统是硬件系统的灵魂 ,它对硬件系统起到扩充和完善的作用。可想而知软件系统与硬件系统同等重要,下面为交通灯系统的软件方面的具体设计过程:
[1]确定各芯片的寻址范围及端口地址
电路原理图绘制好后,数据存储器及程序存储器的空间地址范围在此交通灯应用系统中已经是确定了的,但是这样还不够,还应该根据电路的连接通过计算从而确定各芯片的地址空间范围,这不仅仅是设计的需要,而且也能够更好的进行空间的合理分配,以达到充分利用空间资源的目的,以下是各芯片的地址空间范围以及相关端口地址的确定过程:
由74LS139的工作原理,并且根据电路图连接,确定各片选信号输入如下:
EBA组合方式
010
001
000
选中芯片
6116
2732
8255A
表2 各芯片片选信号
(1)数据存储器6116的寻址范围的确定:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
表3 数据存储器地址范围
由表3第二行可得数据存储器起始地址为:B800H;由第三行可得其末地址为:BFFFH
故数据存储器6116的寻址范围为:B800H~~BFFFH
(2)程序存储器2732的寻址范围的确定:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
表4 程序存储器地址范围
由表4第二行可得程序存储器起始地址为:7000H;由第三行可得其末地址为:7FFFF
故程序存储器2732的寻址范围为:7000H~~7FFFFH
(3)规定PA口为作为在输出端口,工作于方式0,PB口作为输入端口,工作于方式0,PC口为输出端口,工作于方式0,方式控制字为:
工作方式选择控制字见表5:
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
0
0
0
1
0
表5 8255A方式控制字
故由表5可知方式控制字为:10000010B=82H
(4)确定8255A的控制字寄存器地址端口,A端口地址,B端口地址及C端口地址
①控制字寄存器端口地址的确定 由电路原理图可知,A0、A1分别接至单片机地址P0.0、P0.1,控制字寄存器地址确定过程如下表:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
表6 控制字寄存器端口地址
故由表6可知控制字寄存器的端口地址为:3FFFFH
②A端口地址的确定 当A0、A1口分别写入“0”,表明对A口数据进行操作,其端口地址的确定过程如下:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
表7 8255A的A端口地址
故由表7可知A端口地址为:3FFCH
③B端口地址的确定 当A0、A1口分别写入“1”,“0”时,表明对B口进行操作,其端口地址的确定过程如下:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
表8 8255A的B端口地址
故由表8知B端口地址为:3FFDH
④C端口地址的确定 当A0、A1口分别写入“0”,“1”时,表明对C口进行操作,其端口地址的确定过程如下:
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
表9 8255A的C端口地址
故表9可知C端口地址为:3FFEH
[2]绘制系统程序流程图
(1)主程序流程框图如下:
图3 主程序流程框图
(2)中断服务流程框图如下:
图4 中断服务程序流程图
[3] 根据程序流程框图用汇编语言编写程序(见附录)
2.4系统调试过程
通过上面的硬件设计和软件设计过程, 交通灯控制系统设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进行下一步的修改,直至调试成功。
(1) 在调试工作面板上按电路图连接好电路;
(2) 在PC机上运行汇编语言编程软件,并输入已编好的程序代码;
(3) 先对程序进行编译,如果有错误还得对程序进行修改,如果编译正确可以进行下一步操作;
(4) 打开仿真开关,观察交通灯,发现交通灯按预先设计好的规律变化,调试成功。
结 论
通过此这次课程设计的学习,我不仅掌握了单片机的工作原理及其基本知识,并且对各种芯片的使用方法亦有了进一步的认识,对数据存储器和程序存储器的扩展以及I/O并行口的扩展知识有了更深的了解,从整体上把握了单片本的知识,收获很大。单片机应用系统的设计最主要的部分是硬件部分和软件部分,单片机应用系统是指以单片机芯片为核心的,通过配以一定的外围电路和软件,从而达能实现某种或几种功能的应用系统的目的。硬件部分仅仅只是我们实现某种功能的基础和平台,软件部分是硬件部分的灵魂,没有软件部分,单片机无法执行工作,软件是对硬件功能的扩展和完善。
致 谢
本设计是在唐岚老师的悉心指导下完成的。她的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多为人处世的道理。本设计从选题到完成,每一步都是在唐老师的指导下完成的,倾注了老师大量的心血。另外,本设计的完成也离不开各位同学给我的建议和帮助,是他们让我明白了团队合作的精神。在此,谨向唐老师和同学们表示崇高的敬意和衷心的感谢!
参考文献
[1]《新编MCS-51单片机应用设计》张毅刚、彭喜元等编著名,哈尔滨工业大学出版社
[2]《单片机应用技术》刘守义主编 , 西安电子科技大学出版社 2002
[3]《单片机在电子电路设计中的应用》赫建国, 郑燕, 薛延侠编著,清华大学出版社 2006.05
[4]《MCS-51单片机应用开发实用子程序》边春远,王志强编著,人民邮电出版社 2005.9.20
[5]《单片机学习指导》李朝青编著,北京航空航天大学出版社2005.10.01
附录1:
编写好的程序代码如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 1000H
MAIN: SETB EX0 ;程序初始化
SETB PX0
CLR IT0
MOV SP,#60H
KEEP EQU 30H
CLR EA
MOV R0,#60 ;当B道无车辆时,延时2分钟
MOV DPTR,#3FFFH ;8255控制字寄存器地址
MOV A,#82H ;A口输出,方式0,B口输入,方式0
MOVX @DPTR,A ;写入方式控制字到控制字寄存器地址
SETB EA
MOV DPTR,#3FFCH ;写A数据口,使AB两道均红灯亮
MOV A,#0DBH
MOV KEEP,A
MOVX @DPTR,A
ACALL DELAY ;延时2S
ENTER: MOV A,#0F3H ;写入A数据口,使A道绿,B道红
MOV KEEP,A
MOVX @DPTR,A
LOOP1: ACALL DELAY
DJNZ R0,S0
AJMP L1
S0: MOV DPTR,#3FFDH ;判定PB7是否为0,为0则表明A道有车
附录2:
MOVX A,@DPTR
MOV KEEP,A
MOV C,ACC.7
JNC LOOP1
L1: MOV DPTR,#3FFCH ;若A道无车,则让A道为黄灯,B道仍为红灯
MOV A,#0EBH
MOV KEEP,A
MOVX @DPTR,A
ACALL DELAY ;让A道黄灯延时2S
MOV R1,#45 ;若B道有车,B道通行绿灯,A道红灯,B道放行1.5分
MOV A,#0DEH
MOV KEEP,A
MOVX @DPTR,A
LOOP2: ACALL DELAY
DJNZ R1,S1
AJMP L2
S1: MOV DPTR,#3FFDH ;检测PB7,PB6是否为0
MOVX A,@DPTR
MOV KEEP,A
MOV C,ACC.7
JNC LOOP2
MOV C,ACC.6
JC LOOP2
L2: MOV DPTR,#3FFCH ;B道黄灯,A道仍为红灯,延时2S
MOV A,#0DDH
MOV KEEP,A
MOVX @DPTR,A
ACALL DELAY
AJMP ENTER
附录3:
DELAY: MOV R2,#14H
DELAY1: MOV R3,#0C8H
DELAY2: MOV R4,#0FAH
DELAY3: DJNZ R4,DELAY3
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
INT0: PUSH ACC ;中断服务程序开始 ,相关寄存器内容入栈
PUSH PSW
PUSH DPL ;保存中断前的DPTR数据
PUSH DPH
MOV A,#0DBH ;AB道禁止通行,让紧急车辆通过
MOV DPTR,#3FFCH
MOVX @DPTR,A
DELAY20:MOV R5,#200 ;延时20S让紧急车辆通行
DEL1: MOV R6,#200
DEL2: MOV R7,#126
DEL3: DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
POP DPH ;恢复DPTR值
POP DPL
MOV A,KEEP
MOVX @DPTR,A
POP PSW ;相关寄存器内容出栈
POP ACC
SETB EX0
RETI
附录电路原理图:
- 22 -
展开阅读全文