单片机c语言课程设计交通灯

2026/1/11 8:55:16

河南理工大学万方科技学院

GATE=1,由运行控制位TRX(X=0,1)=1和外部中断引脚上的高电平共同来启动定时器/计数器运行。

C/T:定时器模式和计数器模式选择位。 C/T=0,为定时器模式; C/T=1,为计数器模式。

M1、M0:工作方式选择位。M1、M0的4中编码对应4种工作方式,对应关系见表2-10。

4.5定时器/计数器的4种工作方式

定时器/计数器的4种工作方式下的逻辑结构如表所示。 M1 0 0 1 1 (1)方式0。

定时器/计数器的工作方式0称为13位定时器/计数器的。它由TLX的低5位和TLX的8位构成13位的计数器,此时TLX的高3位未使用。改工作方式是为了和48系列单片机兼容而设计的一种工作方式,一般情况不使用方式0进行定时/计数。方式0的控制方式与方式1完全相同,下面重点介绍方式1的控制方式 。 (2)方式1

定时器/计数器的工作方式1称为16位定时器/计数器。它由TLX和THX构成,TLX计数溢出向THX进位,THX计数溢出置位TCON中溢出标志位TFX。 GATE位的状态定时器/计数器运行控制取决于TRX一个条件还是TRX和INTX引脚这两个条件。当GATE=0时,则只要TRX被置为1,定时器/计数器即被允许计数(定时器/计数器的计数控制仅由TRX的状态确定,TRX=1计数,TRX=0停止计数)。当GATE=1时,定时器/计数器是否计数由INTX输入的电平和TRX的状态共同确定:当TRX=1,且INTX=1时,才允许定时器/计数器计数(定时器/计数器的计数控制由TRX和INTX两个条件控制)。

5

M2 0 1 0 1 工作方式 方式0,为13位定时器/计数器 方式1,为16位定时器/计数器 方式2,为初值自动重装的8位定时器/计数器 方式3,仅T0有效,将T0分为两个8位定时器/计数器 河南理工大学万方科技学院

(3)方式2

定时器/计数器的工作方式0和方式1再计数溢出后,计数器的值为0,需要通过程序重新装入计数初值。

定时器/计数器的工作方式1称为初值自动重装的8位定时器/计数器。在该工作方式下,TLX作为计数器,当TLX计数溢出时,在置1溢出标志TFX的同时,还自动的将THX中的常数送至TLX,使TLX从该常数开始重新计数。这种工作方式可以省去用户软件中重装常数的程序,简化定时常数的计算方法(确定计数初值),可以相当精确地确定定时时间。 (4)方式3

工作方式3仅对定时器/计数器0有效,在该工作方式之下,定时器/计数器的0被拆成2个独立的定时器/计数器:TL0、TF1。TL0使用T0的状态控制C/T、GATE、TR0、INT0,而TH0被固定位一个8位定时器(不能作外部计数方式),并使用定时器/计数器1的状态控制位TR1、和TF1,同时占用定时器T1的中断源。此时,定时器/计数器1可设定为方式0、方式1和方式2,作为串行口的波特率发生器。

4.5 定时器/计数器的编程

(1)初始化

定时器/计数器的初始化编程包括以下几个部分。

根据要求给定时器/计数器方式寄存器(TMOD)送一个方式控制字,以设定定时器/计数器的工作方式。

根据需要给TH和TL寄存器送初值,以确定需要的定时时间或计数的初值。 根据需要给中断允许寄存器(IE)送中断控制字,以开放相应的中断和设定中断优先级。

给TCON寄存器送命令字以启动或禁止定时/计数器的运行。 (2)定时器/计数器初值的计算。 计数器初值:

设计算器的模值位M,所需的计数值为C,计数初值设定为TC,则TC=M-C (M等于2的13次方,16次方,8次方)。 定时器初值:

6

河南理工大学万方科技学院

设定时器的模值为M,需要的定时时间为T,定时器的初值设定为TC,则TC=M-T/t(M等于2的13次方,16次方,8次方)。

五.软件程序设计

交通灯控制器实例使用了89C51单片机的定时器/计数器,首先分定时器初始化,定时器中断服务程序两个部分介绍定时器计数器的软件编程,其次在画出程序流程图的基础上编写软件程序,并给出完整的交通灯控制器程序实例。

5.1定时器初始化

为了使定时器时间准确,避免因为定时器重装而引起的累计误差,应将定时器设置为初值自动装置的8位定时器/计数器,即定时器工作在工作方式2.在12MHz晶振条件下,8位定时器的最长定时时间是0.256ms,为了方便计算取定时时间为0.25ms,所以,定时0.5s需要定时器中断2000次。

下面计算定时器的初值。定时器初值TC=M-T/t=256-250/1=6,因此TH0=06H,TL0=06H.

定时器初始化程序如下,定时器T0设定为工作方式2,初始值为06H,自动重装入值为06H。

T0-INIT;

MOV TMOD,#00000010B ; 定时器T0工作方式2 MOV TL0,#06H ; 设定时器T0的初始值 MOV TH0,#06H ; 设定时器T0的自动重装值 MOV TCON,#00010000B ; 定时器T0的使能 SETB EA ;中断允许总控制位使能 SETB ET0 ;T0中断使能 RET

5.2定时器中断服务程序

T0-INIT;

DJNZ TIME-COUNT0,T0-INT-EXIT MOV TIME-COUNT0,#250

DJNZ TIME-COUNT1, T0-INT-EXIT

7

河南理工大学万方科技学院

MOV TIME-COUNT1,#8 SETB SECOND-FLAG ; T0-INT-EXIT; RETI

每0.25ms定时器中断发生,程序跳转到中断服务程序T0-INT开始执行。中断服务程序每次将定时器中断计数变量减1,但定时器中断计数变量为0时,0.5s定时时间到,将位变量SECOND-FLAG置为1.定时器中断服务程序通过RETI指令返回,程序将跳转到进入中断前的断点继续执行。

5.3程序流程图

程序较为简单,可以直接进行程序的编写,但本实例的程序流程比较复杂,在编写程序前,应当先画出程序流程图。程序流程图是描述程序运行流程的一种图表。它不仅描绘程序从头到尾的运行顺序,也描述程序运行过程中的所有可能 发生的状况。

8


单片机c语言课程设计交通灯.doc 将本文的Word文档下载到电脑
搜索更多关于: 单片机c语言课程设计交通灯 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219