当前位置:文档之家› 交通灯实习报告

交通灯实习报告

交通灯实习报告
交通灯实习报告

河南科技学院新科学院单片机课程设计报告

题目:交通灯控制器设计

专业班级:电气工程及其自动化101

姓名:马佳佳

时间:2012.12.3 ~2012.12.21

指导教师:徐君鹏邵锋苗青林

完成日期:2012年12月21 日

交通灯控制器设计任务书

1.设计目的与要求

设计一个交通灯控制器,要认真并准确地理解有关要求,独立完成系统设计,在双干线的路口上,交通信号灯的变化按照下面假定进行计时:

(1)放行线,绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。

(2)禁止线,红灯亮禁止30秒,然后绿灯亮放行。使两条路线交替的成为放行线和禁止线,便可实现交通控制。

(3)特殊情况下能实现手动操作。

2.设计内容

(1)画出电路原理图,正确使用逻辑关系;

(2)确定元器件及元件参数;

(3)进行电路模拟仿真;

(4)SCH文件生成与打印输出;

(5)PCB文件生成与打印输出。

3.编写设计报告

写出设计的全过程,附上有关资料和图纸,有总结体会。

4.答辩

在规定时间内,完成叙述并回答问题。

目录

摘要.................................................................................................... 错误!未定义书签。

1 引言 (4)

2 总体设计方案 (4)

2.1 设计思路.................................................................................... 错误!未定义书签。

2.2 设计满足的基本功能............................................................... 错误!未定义书签。

2.3 主程序模块的设计 (5)

2.4 功能实现模块的设计............................................................... 错误!未定义书签。

2.5 延时程序模块的设计............................................................... 错误!未定义书签。

3 总结与体会 (9)

参考文献 (9)

附1:源程序代码 (10)

附2:系统原理图 (20)

附3:系统PCB图 (20)

交通灯控制器

摘要:本设计是关于单片机控制的交通灯模拟系统的设计。主要内容有交通灯模拟系统设计方案,主要功能,各功能模块的介绍,电路设计,硬件部分设计,软件部分设计,模拟系统的仿真调试,设计方法以及课程设计的心得体会等等。

该设计中用光二极管来模拟信号灯,紧急车的优先通过请求信号由外部中断技术来模拟。要求使AT89C52定时/计数器0作为定时器,要求对通行时间进行倒计时,从P0 口输出,在LED上显示并进行递减,以此来实现十字路口交通灯的指示功能。为了节省元件,复位部分采用加电直接复位。根据交通灯系统所需要实现的功能要求,先画出中断程序部分的流程图和主程序流程图,然后根据流程图写出其子程序。从而通过模拟系统的仿真来实现该设计所要求的功能。

本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。最后,系统要求实现如下的交通灯的功能:

1)南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒,时间可设置修改。

2)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;

3)黄灯亮时,要求每秒闪亮一次

4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。

5)一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。

6)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。

关键字:单片机交通灯系统 LED显示

1 引言

交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关.随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。

考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,拟采用MCS - 51系列的单片机来实现十字路口交通信号灯的控制。正常情况下,十字路口的红绿灯应交替变换,考虑紧急情况下,如有救护车或警车到来时,应优先让其通过。

交通灯模拟系统的课程设计既让学生巩固了课本学到的理论,还让学生学习了单片机硬件电路设计和用户程序设计的整个过程,同时学习了查阅资料、参考资料的方法。单片机的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对单片机的认识,充分发挥学生的个体创新能力。

2 总体设计方案

交通灯在安全行车过程中起着十分重要的作用,现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯,加上一个倒计时的显示计时器来控制行车,对于一般情况下的安全行车、车辆分流发挥着作用,但根据实际行车过程中出现的情况,如何全面有效地利用交通灯指示交通情况,我们尝试用单片机来控制交通灯,在软、硬件方面采取一些改进措施,,使交通灯在控制中灵活而有效。

硬件系统是指构成单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件部分主要由键盘、显示和运算部分组成。按照题目的设计要求,本课题需要使用LED数码管显示和扩展键盘。在该交通灯系统的设计中采用AT89C52单片机。

2.1 设计思路

该设计在熟练掌握单片机及其仿真系统的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术等课程方面的知识,设计一个采用AT89C52单片

机控制的交通灯控制电路。

分别分析各部分电路的元器件的功能以及选择合适的元件。具体设计思路如下:收集并整理资料,硬件设计,软件设计,Proteus仿真,设计体会与总结。

2.2 设计满足的基本功能

1)南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒,时间可设置修改。

2)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;

3)黄灯亮时,要求每秒闪亮一次

4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。

5)一道有车而另一道无车(实验时用开关 K0 和 K1 控制),交通灯控制系统能立即让有车道放行。

6)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。

2.3 主程序模块的设计

主程序流程图如下图A所示:

该交通信号灯控制系统的四中工作状态(南北方向的交通灯为例):(1)南北方向A车道红灯亮,东西方向B车道绿灯亮。表示南北方向A车道上的车辆禁止通行,东西方向B车道允许通行。绿灯亮足规定的时间隔时,控制器发出状态信号,转到下一工作状态。

(2)南北方向A车道红灯亮,东西方向B车道黄灯亮。表示东西方向B车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,南北方向A 车道禁止通行。黄灯亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。

(3)南北方向A车道绿灯亮,东西方向B车道红灯亮。表示南北方向A车道允许通行,东西方向B车道上的车辆禁止通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。

(4)南北方向A车道黄灯亮,东西方向B车道红灯亮。表示东西方向B车道禁止通行,南北方向A车道上位过限停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到第(1)种工作状态。

控制灯程序流程图如下:

图A 交通灯控制流程图

2.4 功能实现模块的设计

功能实现模块主要由中断处理子程序,键盘处理子程序和显示子程序等组成。下面仅对T0中断服务程序部分进行简单介绍。

T0与K2连接,K2与地连接。按下K2,东西南北四个方向全红,也就是说,

东西南北四个通道都不能通车。 K1与AT89C52的35管脚相连。在按下K3的前

提下,按下K1,此时显示的是东西的总时间,并可对其调节。调节以后,若长按K3键,则交通灯恢复正常。先按K3键,再按K0和K1可分别对它们进行加一和减一操作。

其中中断服务程序流程图下图B所示:

图B 交通灯控制中的中断控制流程

2.5 延时程序模块的设计

延迟程序块是要生成一定的是时间延时,这在数码管显示模块中会用到延迟

程序,以满足足动态扫描时数码管的闪亮能产生视觉效果。

3 Proteus软件仿真

一个单片机系统经过总体设计,完成了硬件和软件开发。元器件安装后在系统

存储器中放入编制好的应用程序,系统即可运行。一般来说,仿真开发系统应具有如下的功能:

1)用户样机硬件电路的诊断与检查;

2)用户样机程序的输入与修改;

3)程序的运行、调试(单步运行、设置断点)、排错、状态查询功能;

4)将程序固化到EPROM芯片中。

仿真结果如下图C所示:

图C 仿真图

3 总结与体会

通过这次单片机课程设计,不仅加深了我对单片机理论的理解,将理论应用到实际中去,而且我还学会了如何培养创新精神。这次设计过程中与到了很多困难,比如对protus软件的理解不透彻,对DXP制版的不熟悉等等,但我通过查资料,问同学,都一一的将它们化解在春风中。其实设计过程就好像我们的人生历程一样,不如意之事十之八九,但我们依然要迎着风,冒着雨,一步步走出我们璀璨的人生

参考文献

[1] 蔡美琴等-2版.MCS-51系列单片机系统及其应用.北京:高等教育出版社,2004.1-4

[2] 张毅刚,刘杰. MCS-51系列单片机原理及应用.哈尔滨:哈尔滨工业大学出版社,2004.256-270

[3] 蔡美琴,张为民等.MCS-51系列单片机系统及其应用.北京:高等教育出版社,1992.68-96

[4] 蒋廷彪等.单片机原理及应用(MCS-51).重庆:重庆大学出版社,2003.56-89

[5] 余发山,王福忠.单片机原理及应用技术.徐州:中国矿业大学出版社,2003.98-120

附1 源程序代码

ORG 0000H

AJMP MAIN

ORG 0003H

LJMP INTERRUPT0 ; 跳到设定时间中断服务程序

ORG 000BH

LJMP INTERRUPT1 ; 跳到跳到特种车辆自动服务程序

ORG 0013H

LJMP INT2 ; 跳到南北有车东西无车中断服务程序

ORG 001BH

LJMP INT3 ; 跳到东西有车南北无车中断服务程序

ORG 0100H

TAB: DB 3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH

ORG 0300H

MAIN: MOV 25H,#30 ; 南北通行时间初始值,存到25H单元

MOV 26H,#20 ; 东西通行时间初始值,存到26H单元

MOV SP,#40H ; 堆栈选址

CLR P3.0 ;

MOV TMOD,#66H ; T0、T1都计数方式,工作模式2 ,启动方式TRi 确定

MOV TL0,#255 ; 计数器0初值低8位

MOV TH0,#0 ; 计数器0初值高8位

MOV TL1,#255 ; 计数器1初值低8位

MOV TH1,#0 ; 计数器1初值高8位

SETB IT0 ; 外部中断一边沿触发

SETB IT1 ; 外部中断二边沿触发

MOV IE,#8FH ; 开中断

SETB TR0 ; T0开始计数

SETB TR1 ; T1 开始计数

NBLD: CLR P3.0 ;

MOV R1,25H ; 南北通行时间30秒(25h)=30,(NBLD即东西绿灯)

NBLD1: MOV P2,#1EH ; 点亮南北绿灯东西红灯

MOV 20H,R1 ; 为南北方向显示时间做准备

MOV A,R1 ;

ADD A,#5 ;

MOV 21H,A ; 为东西方向显示时间做准备

LCALL DISP1 ; 显示通行所剩时间,其中有0.5秒延时

LCALL DISP1 ; 再次显示以便数码管不闪,且再延时0.4秒以便凑够一秒

DJNZ R1,NBLD1 ; 判断30秒是否已完,若未完则从新显示、延时

ShanHD: MOV R2,#5 ; 黄灯闪亮5秒

HD: MOV P2,#1DH ; 点亮黄灯

MOV 22H,R2 ; 为显示时间做准备

LCALL DISP2 ; 黄灯闪亮剩时显示,其中延时0.5秒

MOV P2,#1FH ; 熄灭黄灯

LCALL DISP2 ; 显时,且再延时0.5秒以便凑够1秒

DJNZ R2,HD ; 判断5秒是否已完,若未完则从新闪灭、延时和显示

DXLD: CLR P3.0 ;

MOV R3,26H ; 东西通行20秒(26H)=20, (DXLD即东西绿灯)

DXLD1: MOV P2,#33H ; 点亮南北红灯东西绿灯

MOV 24H,R3 ; 为东西方向显示时间做准备

MOV A,R3 ;

ADD A,#5 ;

MOV 23H,A ; 为南北方向显示时间做准备

LCALL DISP3 ; 时间显示,其中有0.5秒延时

LCALL DISP3 ; 凑够1秒时间

DJNZ R3,DXLD1 ; 判断20秒是否已完

ShanHD1: MOV R2,#5 ; 转入黄灯闪亮5秒

HD1: MOV 22H,R2 ; 为显示做准备

MOV P2,#2BH ; 点亮南北红灯东西黄灯

LCALL DISP2 ; 显示时间,并延时0.5秒

MOV P2,#3BH ; 点亮南北红灯关闭东西黄灯

LCALL DISP2 ; 显时,且再延时0.5秒以便凑够1秒

DJNZ R2,HD1 ; 判断5秒是否到,若未到继续闪灭东西黄灯

AJMP NBLD

Tezhong: MOV P2,#1BH ; 点亮东西南北红灯

SETB P3.0 ;

MOV R4,#15 ; 特殊车辆通过时间15秒

QHD: MOV 27H,R4 ; 为显示做准备

LCALL DISP4 ; 显示时间

DJNZ R4,QHD ; 判断15秒是否到,若不到继续显示时间

CLR p3.0 ;

AJMP NBLD

DELAY: ACALL DELAY1 ; 10ms延时

ACALL DELAY1

RET

DELAY1: MOV R6,#50 ; 5ms延时,(5ms=50*50*2us)

DE6: MOV R0,#50

DE7: DJNZ R0,DE7

DJNZ R6,DE6

RET

DISP1: MOV P0,#0 ; 熄灭数码管

MOV R7,#25 ; 以下调用四次5毫秒延时程序,故25*4*5毫秒=0.5秒

RP1: MOV A,20H ; 南北方向要显示的时间移到寄存器A

MOV DPTR,#TAB ; 要显示的数字代码表首地址

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001110B; 选择南北数码管十位片

MOV P0,A ; 送出十位显示代码

LCALL DELAY1 ; 延时5ms以点亮数码管

MOV A,B ; 把个位数移到寄存器A

MOVC A,@A+DPTR ; 找到个位数显示代码

MOV P1,#00001101B ; 选择南北数码管个位片

MOV P0,A ; 送出个位数显示代码

LCALL DELAY1 ; 延时5ms以点亮数码管

MOV A,21H ; 东西方向要显示的时间移到寄存器A

MOV DPTR,#TAB ; 要显示的数字代码表首地址

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001011B; 选择东西数码管的十位片

MOV P0,A ; 送出十位显示代码

LCALL DELAY1 ; 延时5ms以点亮数码管

MOV A,B ; 把个位数移到寄存器A

MOVC A,@A+DPTR ; 找到个位的显示代码

MOV P1,#00000111B ; 选择东西数码管的个位片

MOV P0,A ; 送出个位显示码

LCALL DELAY1

DJNZ R7,RP1 ; 是否已循环25次?(25次才够0.5秒)

RET

DISP2: MOV P0,#0 ; 熄灭数码管

MOV R7,#25 ; 以下调用两次0.01秒延时程序,故25*0.02=0.5秒

RP2: MOV A,22H ; 要显示的时间移到寄存器A

MOV DPTR,#TAB ; 要显示的数字代码表首地址

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001010B; 选择南北数码管十位片和东西数码管十位片

MOV P0,A ; 送出十位显示代码

LCALL DELAY ; 延时10ms以点亮数码管

MOV P1,#00000101B ; 选择南北数码管个位片和东西数码管个位片

MOV A,B ; 把个位数移到寄存器A

MOVC A,@A+DPTR ; 找到个位数显示代码

MOV P0,A ; 送出个位数显示代码

LCALL DELAY ; 延时10ms一点亮数码管

DJNZ R7,RP2

RET

DISP3: MOV P0,#0 ; 熄灭数码管

MOV R7,#25 ; 以下调用两次0.01秒延时程序,故10*0.05=0.5秒

RP3: MOV A,23H ; 要南北方向显示的时间移到寄存器A

MOV DPTR,#TAB ; 要显示的数字代码表首地址

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001110B; 选择南北数码管十位片

MOV P0,A ; 送出十位显示代码

LCALL DELAY1 ; 延时5ms以点亮数码管

MOV A,B ; 把个位数移到寄存器A

MOVC A,@A+DPTR ; 找到个位数显示代码

MOV P1,#00001101B; 选择南北道数码管个位片

MOV P0,A ; 送出个位数显示代码

LCALL DELAY1 ; 延时5ms一点亮数码管

MOV A,24H ; 要东西方向显示的时间移到寄存器A

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001011B ;

MOV P0,A ; 送出十位显示代码

LCALL DELAY1 ; 延时5ms以点亮数码管

MOV A,B

MOVC A,@A+DPTR

MOV P1,#00000111B ; 选择东西数码管个位片

MOV P0,A ; 送出个位显示代码

LCALL DELAY1

DJNZ R7,RP3

RET

DISP4: MOV P0,#0 ; 熄灭数码管

MOV R7,#50 ; 以下调用两次0.01秒延时程序,故40*2*0.01=1秒

RP4: MOV A,27H ; 要显示的时间移到寄存器A

MOV DPTR,#TAB ; 要显示的数字代码表首地址

MOV B,#10

DIV AB ; 要显示的时间与10相除,求出十位和个位

MOVC A,@A+DPTR ; 找到十位的显示代码

MOV P1,#00001010B; 选择南北、东西数码管十位片

MOV P0,A ; 送出十位显示代码

LCALL DELAY ; 延时10ms以点亮数码管

MOV A,B ; 把个位数移到寄存器A

MOVC A,@A+DPTR ; 找到个位数显示代码

MOV P1,#00000101B; 选择南北、东西数码管的个位片

MOV P0,A ; 送出个位数显示代码

LCALL DELAY ; 延时10ms一点亮数码管

DJNZ R7,RP4

RET

INTERRUPT0: MOV IE,#0 ; 关闭中断允许

MOV A,P2 ; 读取交通灯状态

JNB Acc.3,DXSJ ; P2.3,DXSJ ; DXSJ(东西绿灯亮(P2.3=0)则设定东西通行时间)

JNB Acc.0,NBSJ ; P2.0,NBSJ ; NBSJ (南北绿灯亮(P2.0=0)则设定南北通行时间)

POP 28H ;

POP 28H ;

MOV DPTR,#NBLD ; 如果不能调整时间(没有绿灯亮)则退出后从状态1开始,相当于复位。

PUSH DPL ;

PUSH DPH ;

EXIT: MOV IE,#8FH ; 恢复开中断

RETI

NBSJ: POP 28H ;

POP 28H ;

MOV DPTR,#NBLD ; 此处设时为南北通行时间

PUSH DPL ; 把断点换成南北绿灯(NBLD)入口

PUSH DPH ;

XSSM1: MOV A,25H ; 读取南北通行时间

MOV 20H,A ; 为南北方向显示时间做准备

ADD A,#5 ;

MOV 21H,A ; 为东西方向显示时间做准备

LCALL DISP1 ; 显示时间

LCALL DELAY1

MOV A,P3

JNB P3.2,EXIT ; 判断有否按下设时确定按钮,若有则退出,若无接着判断加时和减时信号

JNB P3.3,JX ; 判断有否加时信号(p3.3所接按钮是否按下)若有跳转处理,无则扫描减时信号

JNB P3.5,JX1 ; 判断有否减时信号

AJMP XSSM1 ; 从循环显示时间和扫描按键情况

JX: MOV A,25H ; 读出之前设定的时间值(存储在25H单元)

ADD A,#1 ; 在之前值基础上加1处理

MOV 25H,A ; 回存到25H单元

MOV 20H,A ; 为南北显示时间做准备

ADD A,#5 ;

MOV 21H,A ; 为东西方向显示时间做准备

LCALL DISP1 ; 显示处理后的时间值

AJMP XSSM1 ; 从循环显示时间和扫描按键情况

JX1: MOV A,25H ; 读出之前设定的时间值(存储在25H单元)

SUBB A,#1 ; 在之前值基础上减1处理

MOV 25H,A ; 回存到25H单元

MOV 20H,A ; 为南北方向显示时间做准备

ADD A,#5 ;

MOV 21H,A ; 为东西方向显示时间做准备

LCALL DISP1 ; 显示处理后的时间值

AJMP XSSM1 ; 从循环显示时间和扫描按键情况

DXSJ: POP 28H ;

POP 28H ;

MOV DPTR,#DXLD ; 此处设时为东西通行时间,故若此步处理后返回则应让东西通行故

PUSH DPL ; 把断点换成东西绿灯(DXLD)入口

PUSH DPH ;

XSSM2: MOV A,26H ; 读取东西通行时间值

MOV 24H,A ; 为东西方向显示时间做准备

ADD A,#5 ;

MOV 23H,A ; 为南北方向显示时间做准备

LCALL DISP3 ; 显示时间

MOV A,P3

JNB P3.2,EXIT1 ; 判断有否按下设时确定按钮,若有则退出,若无接着判断加时和减时信号

JNB P3.3,JX2 ; 判断有否加时信号(p3.3所接按钮是否按下)若有跳转处理,无则扫描减时信号

JNB P3.5,JX3 ; 判断有否减时信号

AJMP XSSM2 ; 从循环显示时间和扫描按键情况

EXIT1: LJMP EXIT ; 因为如果上游指令(JNB P3.2,EXIT1)为直接JNB p3.2,EXIT则跳出范围

JX2: MOV A,26H ; 读出之前设定的时间值(存储在26H单元)

ADD A,#1 ; 在之前值基础上加1处理

MOV 26H,A ; 回存到26H单元

MOV 24H,A ; 为东西方向显时间示做准备

ADD A,#5 ;

MOV 23H,A ; 为南北方向显示时间做准备

LCALL DISP3 ; 显示处理后的时间值

AJMP XSSM2 ; 从循环显示时间和扫描按键情况

JX3: MOV A,26H ; 读出之前设定的时间值(存储在26H单元)

SUBB A,#1 ; 在之前值基础上减1处理

MOV 26H,A ; 回存到26H单元

MOV 24H,A ; 为东西方向显示时间做准备

ADD A,#5 ;

MOV 23H,A ; 为南北方向显示时间做准备

LCALL DISP3 ; 显示处理后的时间值

AJMP XSSM2 ; 从循环显示时间和扫描按键情况

INTERRUPT1: POP 28H ; 弹出断点低位地址

POP 28H ; 弹出断点高位地址

MOV DPTR,#Tezhong ;

PUSH DPL ;

PUSH DPH ; 把断点换成特种车辆通过的程序段首地址,即Tezhong

MOV TMOD,#66H ; T0、T1都计数方式,工作模式2 ,启动方式TRi确定

MOV TL0,#255 ; 计数器0初值低8位

MOV TH0,#0 ; 计数器0初值高8位

MOV TL1,#255 ; 计数器1初值低8位

MOV TH1,#0 ; 计数器1初值高8位

SETB IT0 ; 外部中断一边沿触发

SETB IT1 ; 外部中断二边沿触发

MOV IE,#8FH ; 开中断

SETB TR0 ; T0开始计数

SETB TR1 ; T1 开始计数

RETI

INT2: POP 28H ;

POP 28H ;

MOV DPTR,#NBLD ;|把断点换成南北绿灯程序段首的首地址,即NBLD

PUSH DPL ;

PUSH DPH ;

MOV TMOD,#66H ; T0、T1都计数方式,工作模式2 ,启动方式TRi确定

MOV TL0,#255 ; 计数器0初值低8位

MOV TH0,#0 ; 计数器0初值高8位

MOV TL1,#255 ; 计数器1初值低8位

MOV TH1,#0 ; 计数器1初值高8位

MOV IE,#8FH ; 开中断

SETB TR0 ; T0开始计数

SETB TR1 ; T1 开始计数

RETI

INT3: POP 28H ;

POP 28H ;

MOV DPTR,#DXLD ; 把断点换成东西绿灯程序段首地址即DXLD

PUSH DPL ;

PUSH DPH ;

MOV TMOD,#66H ; T0、T1都计数方式,工作模式2 ,启动方式TRi确定

MOV TL0,#255 ; 计数器0初值低8位

MOV TH0,#0 ; 计数器0初值高8位

MOV TL1,#255 ; 计数器1初值低8位

MOV TH1,#0 ; 计数器1初值高8位

MOV IE,#8FH ; 开中断

SETB TR0 ; T0开始计数

SETB TR1 ; T1 开始计数

RET

END

相关主题
文本预览
相关文档 最新文档