自动控制网—学习自动控制技术电气自动化技术从这里开始!
当前位置: 自动控制网 > 自动化 > 单片机 >

单片机定时/计数器

时间:2014-11-18 08:23来源:www.eadianqi.com 编辑:自动控制网
在单片机应用技术中,常要求有一些实时时钟,以实现定时或延时控制;也常要求有一些计数器,实现对外部事件的计数控制。MCS-51单片机片内有两个16位的可编程的定时/计数器T0、T1,以满足这方面的需要。 1、定时/计数器的结构及工作原理 定时/计数器的核心是

单片机应用技术中,常要求有一些实时时钟,以实现定时或延时控制;也常要求有一些计数器,实现对外部事件的计数控制。MCS-51单片机片内有两个16位的可编程的定时/计数器T0、T1,以满足这方面的需要。

本文来自www.eadianqi.com

1、定时/计数器的结构及工作原理 本文来自www.eadianqi.com

定时/计数器的核心是一个加1计数器(有的是减1计数器),加1计数器的脉冲有两个来源,一个是外部脉冲源,另一个是系统的时钟振荡器。计数器对两个脉冲源之一进行计数,每输入一个脉冲,计数值加1。当计数到计数器为全1时,再输入1个脉冲就使计数值回零,同时从最高位溢出一个脉冲使定时/计数控制寄存器TCON的TF0或TF1置1,作为计数器的溢出中断标志位。

自动控制网www.eadianqi.com版权所有

两个16位的定时/计数器T0、T1分别由两个8位的特殊功能寄存器TH0、TL0,TH1、TL1组成,用来存放定时/计数初值。它们可以别程序控制为不同的组合状态(13位、16位、两个分开的8位),形成定时/计数器的四种工作方式,这些设置可以通过工作方式寄存器TMOD的相应位进行控制。定时/计数器的启动和停止可以由定时/计数器控制寄存器TCON进行控制。TMOD、TCON的内容可以由软件编程设置。

本文来自www.eadianqi.com

2、工作方式寄存器TMOD 自动控制网www.eadianqi.com版权所有

工作方式寄存器TMOD用于选择定时/计数器的工作模式和工

自动控制网www.eadianqi.com版权所有

作方式,字节地址为89H,其格式如表1:

表1  工作方式寄存器TMOD 自动控制网www.eadianqi.com版权所有

D7

自动控制网www.eadianqi.com版权所有

D6

本文来自www.eadianqi.com

D5 自动控制网www.eadianqi.com版权所有

D4 自动控制网www.eadianqi.com版权所有

D3

自动控制网www.eadianqi.com版权所有

D2

本文来自www.eadianqi.com

D1

自动控制网www.eadianqi.com版权所有

D0 本文来自www.eadianqi.com

GATE

本文来自www.eadianqi.com

C/T

自动控制网www.eadianqi.com版权所有

M1

本文来自www.eadianqi.com

M0

自动控制网www.eadianqi.com版权所有

GATE 自动控制网www.eadianqi.com版权所有

C/T 本文来自www.eadianqi.com

M1 本文来自www.eadianqi.com

M0 自动控制网www.eadianqi.com版权所有

TMOD的高 4位控制T1,低4位控制T0。各位定义如下 自动控制网www.eadianqi.com版权所有

GATE:门控位。GATE=0时,仅由运行控制位TR0或TR1置1来启动定时/计数器运行。GATE=1 自动控制网www.eadianqi.com版权所有

时,由运行控制位TR0或TR1置1和外部中断引脚 INT0或INT1上的高电平共同来启动定

自动控制网www.eadianqi.com版权所有

时/计数器的运行。

自动控制网www.eadianqi.com版权所有

C/T:计数模式定时模式选择位。C/T=0为定时模式。 C/T=1为计数模式,计数器对外部引脚P3.4、 P3.5的外部脉冲进行计数。

自动控制网www.eadianqi.com版权所有

M1、M0:定时/计数器工作方式选择位。M1、M0共有4种编码,对应4种工作方式,如表2          表2   M1、M0对应工作方式 本文来自www.eadianqi.com

M1 自动控制网www.eadianqi.com版权所有

M0 自动控制网www.eadianqi.com版权所有

工作方式 自动控制网www.eadianqi.com版权所有

0 自动控制网www.eadianqi.com版权所有

0

本文来自www.eadianqi.com

方式0,13位定时/计数器

本文来自www.eadianqi.com

0

本文来自www.eadianqi.com

1

自动控制网www.eadianqi.com版权所有

方式1,16位定时/时数器 自动控制网www.eadianqi.com版权所有

1 本文来自www.eadianqi.com

0

自动控制网www.eadianqi.com版权所有

方式2,初值自动重新装入的8位定时/计数器

本文来自www.eadianqi.com

1 本文来自www.eadianqi.com

1 自动控制网www.eadianqi.com版权所有

方式3,仅适用于T0,分成两个8位定时/计数器,关闭T1 本文来自www.eadianqi.com

3、定时/计数器控制寄存器TCON

本文来自www.eadianqi.com

TCON的字节地址为88H,,用于控制定时 /计数器的启动,其格式如表3.9 :

本文来自www.eadianqi.com

表3  定时/计数器控制寄存器TCON 自动控制网www.eadianqi.com版权所有

D7

自动控制网www.eadianqi.com版权所有

D6 本文来自www.eadianqi.com

D5

自动控制网www.eadianqi.com版权所有

D4 自动控制网www.eadianqi.com版权所有

D3

自动控制网www.eadianqi.com版权所有

D2 本文来自www.eadianqi.com

D1

本文来自www.eadianqi.com

D0

自动控制网www.eadianqi.com版权所有

TF1 本文来自www.eadianqi.com

TR1 自动控制网www.eadianqi.com版权所有

TF0

自动控制网www.eadianqi.com版权所有

TR0 自动控制网www.eadianqi.com版权所有

IE1

自动控制网www.eadianqi.com版权所有

IT1

本文来自www.eadianqi.com

IE0

本文来自www.eadianqi.com

IT0

自动控制网www.eadianqi.com版权所有

低4位与外部中断有关,高4位的功能如下:

本文来自www.eadianqi.com

TR0:定时/计数器0的运行控制位。TR0=1,启动定时/计数器0的必要条件,还与GATE 自动控制网www.eadianqi.com版权所有

位状态有关。TR0=0,停止定时/计数器0。

自动控制网www.eadianqi.com版权所有

TF0:T0溢出标志位。当定时/计数器计数溢出时,该位置1。使用查询方式时,应以软件

自动控制网www.eadianqi.com版权所有

方法及时将该位清0。使用中断方式时,进入中断服务程序后由硬件自动清0。 本文来自www.eadianqi.com

TR1:定时/计数器1的运行控制位。TR1=1,启动定时/计数器1的必要条件,还与GATE

自动控制网www.eadianqi.com版权所有

位状态有关。TR1=0,停止定时/计数器1。 本文来自www.eadianqi.com

TF1:T1溢出标志位。当定时/计数器计数溢出时,该位置1。使用查询方式时,应以软件方法及时将该位清0。使用中断方式时,进入中断服务程序后由硬件自动清0。 本文来自www.eadianqi.com

4、定时/计数器实际应用 自动控制网www.eadianqi.com版权所有

由上面介绍可知,定时/计数器时可编程的,所以在任何一个定时/计数器开始定时或计数之前,必须对TMOD的各位进行软件编程设置,将初值写入THX、TLX(X=0、1),置位 TCON相应位来实现启动和停止定时/计数器。

本文来自www.eadianqi.com

例题 设计一个程序,要求定时/计数器0为 定时状态,工作于方式0下,定时时间为 2ms,每隔2ms将P1口所接8置发光二极管亮灭状态左移一位,已知晶振频率为6MHZ。分别用查询方式和中断方式实现。

本文来自www.eadianqi.com

首先要对定时/计数器工作方式进行设定,按题目要求TMOD各位应为00000001B。

自动控制网www.eadianqi.com版权所有

接着来计算初值:题目要求定时,则对内部机器周期进行计数。每个机器周期包括12个振荡周期,晶振为6MHZ,则1个机器周期=12个振荡周期=2us。题目要求定时时间为2ms,那么应数1000次机器周期,1000次之后要求计数器产生溢出。由于要求工作方式1,即16位定时/计数器。那么应装入定时/计数器得初值为2的16-1000=64536。 转换为16进制为0FC18H,分别装入TH0和TL0。最后编写程序置位TR0启动定时器。

自动控制网www.eadianqi.com版权所有

采用查询方式:ORG 0000H

本文来自www.eadianqi.com

MAIN:MOV A,#01H

自动控制网www.eadianqi.com版权所有

LOOP0:MOV TMOD,#01H       ;T0初始化

自动控制网www.eadianqi.com版权所有

MOV TH0,#0FCH       ;装入定时初值 本文来自www.eadianqi.com

MOV TL0,#18H

自动控制网www.eadianqi.com版权所有

MOV P1,A            ;点亮最右边一位发光二极管

本文来自www.eadianqi.com

SETB TR0            ;启动T0 自动控制网www.eadianqi.com版权所有

LOOP1:JNB TF0,LOOP1    ;   ;查询TF0,等待定时时间到

本文来自www.eadianqi.com

RLC A               ;定时时间到,左移一位 本文来自www.eadianqi.com

CLR TF0            ;软件清TF0位 本文来自www.eadianqi.com

JMP LOOP0          ;返回,重装初值 本文来自www.eadianqi.com

采用中断方式:ORG 0000H

自动控制网www.eadianqi.com版权所有

AJMP MAIN       ;转主程序

自动控制网www.eadianqi.com版权所有

ORG 000BH       ;T0中断入口,只有一个中断,可以放在此处 本文来自www.eadianqi.com

MOV TH0,#0FCH   ;重新装入初值    本文来自www.eadianqi.com

MOV TL0,#18H 本文来自www.eadianqi.com

RLC A           ;左移一位 本文来自www.eadianqi.com

MOV P1,A        ;送P1口 自动控制网www.eadianqi.com版权所有

RETI            ;中断返回 

本文来自www.eadianqi.com

MAIN:MOV TMOD,#01H   ;T0初始化 自动控制网www.eadianqi.com版权所有

MOV TH0,#0FCH   ;定时初值

自动控制网www.eadianqi.com版权所有

MOV TL0,#18H

自动控制网www.eadianqi.com版权所有

MOV A,#01H 自动控制网www.eadianqi.com版权所有

SETB TR0       ;启动定时器0 自动控制网www.eadianqi.com版权所有

SETB EA        ;CPU开放中断

自动控制网www.eadianqi.com版权所有

SETB ET0       ;允许T0中断 自动控制网www.eadianqi.com版权所有

SJMP $         ;等待

本文来自www.eadianqi.com

本文已影响