51单片机定时器的使用和详细讲解__特别是定时器2

合集下载

STC89C52单片机定时器2详细整理

STC89C52单片机定时器2详细整理

STC89C52单片机定时器2详细整理51单片机是我自学的第一款单片机,那时正好是过春节,想起那个寒假,外面下着大雪,有时还会传来一两声爆竹的炸响,而我一个人在房间里摆弄单片机开发板,反复调试程序的时光,真是难忘!我自认为这款单片机所有的资源中最不好搞清楚的就是定时器2,尤其是对于那些以前从来没有玩过单片机的新手。

定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。

所以掌握好定时器2还是非常有必要的。

以下是在我完全搞明白它的原理和用法的基础上整理的一篇小文章。

读起来,好像Datasheet一样!请原谅,希望没有辜负你的点击!定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位可将其设置为定时器或是计数器;通过设置T2CON中的工作模式选择位可将定时器2设置为三种工作模式,分别为捕获、自动重新装载(递增或是递减计数)和波特率发生器。

知识点一、定时器2的控制寄存器T2CON(可按位寻址)*D7位--TF2:定时器2溢出标志位。

用于请求中断(必须由软件清0)D6位--EXF2:定时器外部标志位。

当外部信号使能时,发生外部负跳变时置位请求中断(必须由软件清0)D5位--RCLK:接受时钟标志位。

默认情况下串行口中模式1和模式3的时钟是由定时器1的溢出率提供,若该位置位,则由定时器2提供。

D4位--TCLK:发送时钟标志位。

原理同上D3位--EXEN2:定时器2的外部使能标志位。

定时器2没有作为串行口时钟时,若将该位置位时,将允许T2EX的负跳变产生捕获或重装D2位--TR2:定时器2启动/停止控制位。

D1位--C/T2:定时器2的定时器/计数器选择位(在reg52头文件中定义为了C_T2,请注意,下面相同)D0位--CP/RL2:捕获/重装标志位。

知识点二定时器2的模式控制寄存器T2MOD(不可按位寻址)该寄存器在单片机的头文件reg2.h中可能没有被定义,自己定义吧!D1位—T2OE:定时器2输出使能位D0位—DCEN:向下计数使能位知识点三:定时器2的三种模式**1、捕获模式*在'CP/RL2=1'&&'TR2=1'时进入捕获模式。

51单片机定时器工作方式

51单片机定时器工作方式

51单片机定时器工作方式51单片机是一种非常常见的单片机,它具有多个定时器用来实现各种定时任务。

下面我们就来详细介绍一下51单片机的定时器工作方式。

首先,51单片机的定时器可以分为两种类型:定时/计数器0(T0)和定时/计数器1(T1),它们分别有不同的工作方式和控制寄存器。

一、定时/计数器0(T0)工作方式:定时/计数器0(T0)是一个8位的定时器/计数器,它可以进行定时或计数操作。

在定时模式下,它可以作为定时器在规定的时间段内进行计时;在计数模式下,它可以根据外部信号的脉冲计数。

在定时模式下,T0可以通过设置控制寄存器TCON的位4(TR0)来启动或停止计时操作。

当TR0为1时,定时器开始计时;当TR0为0时,定时器停止计时。

定时器的工作频率可以通过控制寄存器TMOD的位1和位0来设置。

在计数模式下,T0可以通过设置TCON的位5(CT0)来选择定时器或计数器操作。

当CT0为0时,定时器工作,当CT0为1时,计数器工作。

同时,在计数模式下,还需要通过设置控制寄存器TMOD的位1和位0来设置计数器的工作频率。

定时/计数器0还可以使用中断功能,通过设置控制器IE的位4(ET0)来开启或关闭中断。

当ET0为1时,当定时器溢出时会产生中断请求,可以在中断服务程序中处理相应的操作。

二、定时/计数器1(T1)工作方式:定时/计数器1(T1)也是一个8位的定时器/计数器,它可以进行定时或计数操作。

类似于T0,T1也可以在定时模式下作为定时器进行计时,或者在计数模式下根据外部信号的脉冲进行计数。

在定时模式下,T1可以通过设置TCON的位6(TR1)来启动或停止计时操作。

当TR1为1时,定时器开始计时;当TR1为0时,定时器停止计时。

定时器的工作频率可以通过设置TMOD的位3和位2来设置。

在计数模式下,T1可以通过设置TCON的位7(CT1)来选择定时器或计数器操作。

当CT1为0时,定时器工作;当CT1为1时,计数器工作。

单片机定时器的使用

单片机定时器的使用

由于TL0既能作定时器也能作计数器使用,而 TH0只能作定时器使用而不能作计数器使用,因此在 方式3模式下,定时/计数器0可以构成二个定时器或 者一个定时器和一个计数器。
如果定时/计数器0工作于工作方式3,那么定时/ 计数器1的工作方式就不可避免受到一定的限制,因 为自己的一些控制位已被定时/计数器借用,只能工 作在方式0、方式1或方式2下,如果设置T1工作在方 式3,则T1停止工作,相当于其他方式时令TR1=0。
在工业检测、控制中,很多场合都要用到计数或者定 时功能。例如对外部脉冲进行计数、产生精确的定时时间、 作串行口的波特率发声器等。MCS-51单片机内部有两个 可编程的定时器/计数器,以满足这方面的需要。它们具 有 两种工作模数(计数器模式、 定时器模式)和四种工 作方式( 方式0、方式1、方式2、方式3),其控制字均 在相应的特殊功能寄存器(SFR)中,通过对它的SFR的 编程,可以方便的选择工作模数和工作方式。
C/T位:计数器模式和定时器模式的选择位。
C/T=0,为定时器模式,内部计数器对晶振脉冲12分频 后的脉冲计数,该脉冲周期等于机器周期,所以可以理 解为对机器周期进行计数。从计数值可以求得计数的时 间,所以称为定时器模式。
C/T=1,为计数器模式,计数器对外部输入引脚T0 (P3.4)或T1(P3.5)的外部脉冲(负跳变)计数,允许 的最高计数频率为晶振频率的1/24。
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。TF产生的中断申请是否被接受, 还需要由中断是否开放 来决定。
TR1、TR0 分别是定时器 /计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时 被清 0。

51单片机定时器计数器详解

51单片机定时器计数器详解

51单⽚机定时器计数器详解第六章定时器/计数器6.1 定时器的结构及⼯作原理6.2 定时器的控制6.3 定时器的⼯作模式及其应⽤第六章定时器/计数器实现定时⼀般有多种⽅法:1. 利⽤软件实现(延时程序)优点:简单,控制⽅便;缺点:CPU效率低。

2. 外部硬件实现:单稳态定时器、计数定时器优点:CPU效率⾼;缺点:修改参数⿇烦。

3. 利⽤计数器实现输⼊脉冲定时器/计数器作⽤主要包括产⽣各种时标间隔、记录外部事件的数量等,是单⽚机中最常⽤、最基本的部件之⼀。

外来脉冲定时计数定时器/计数器功能⽰意图6.1 定时器/计数器的结构及⼯作原理6.1.1 定时器/计数器的基本结构MCS-51单⽚机有⼆个定时器/计数器,每个定时器/计数器由⼏个专⽤寄存器组成。

TMOD(89H )⾼四位TMOD(89H )低四位⽅式寄存器TCON(88H)TCON(88H)控制寄存器*8DH 8BH 8CH 8AH TH1 TL1TH0 TL0数据寄存器(16位)定时器T1定时器T0定时器/计数器的结构如下图所⽰。

定时器/计数器的基本结构框图申请P3.5or P3.4or 8DH 8BH8CH 8AH6.1.2 定时器/计数器的⼯作原理定时器/计数器结构原理图INTx P3.YGATE :门控制位:定时/计数控制位TC/x=0,1Y=2,3Z=4,5⼀. 对外部输⼊信号的计数功能当T0或T1设置为计数⼯作⽅式时,计数器对来⾃输⼊引脚P3.4(T0)和P3.5(T1)的外部信号计数。

若前⼀个机器周期采样值为1,后⼀个机器周期采样值为0,则计数器加1。

所以计数器计数的频率最⾼为fosc 的1/24。

BDEHT H >1个机器周期T L >1个机器周期L⼆. 定时功能:定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单⽚机的⽚内振荡器输出经12分频后产⽣的信号,即为对机器周期计数。

INTx P3.Y例如:晶振频率=12MHz 机器周期=1us ,计数1次=1us ,计数频为=1MHz 。

51单片机定时器设置及应用

51单片机定时器设置及应用
TMOD=0x00 TH0=(8192-m)/32; TL0=(8192-m)%32;
m:根据实际定时所确定的计数次数
二、方式 1
TMOD =0x01 TH0=(65536-m)/256; TL0=(65536-m)%256;
m:根据实际定时所确定的计数次数
三、方式 2
TMOD=0x02 TH0=256-m; TL0=256-m; m:根据实际定时所确定的计数次数
TMOD=0x02; //设定 T0 的长度和状态:8 位自动重装定时 TH0=256-10; //10us 定时,备份计数器的初值 TL0=256-10; //10us 定时,计数器的初值 EA=1; //系统开放中断 ET0=1; //允许 T0 中断 TR0=1; //启动 T0 for(;;); // 等待中断产生 } void T0_ISR( ) interrupt 1 { P10=~P10; //P1.0 每 10us 取反一次 }
ET0:定时/计数器 T0 中断允许控制位 ET0=1,允许 T0 中断 ET0=0,禁止 T0 中断
51 单片机中断系统结构图
51 单片机定时/计数器 C 语言应用模板 /************ 设置 T0 为 16 位定时器,定时 50ms,系统采用 12MHz 晶振。 ************/ #include <reg52.h> void main( )
TF1、TF0:定时/计数器溢出中断标志位,由系统自动置位或清零,用户不能写入数据。 TF1=1,表示 T1 溢出 TF0=1,表示 T0 溢出
TR1:T1 的启动或停止控制位。 TR1=1,启动 T1;TR1=0,停止 T1;
TR0:T0 的启动或停止控制位 TR0=1,启动 T0;TR0=0,停止 T0;

2-MCS51单片机原理-定时器解析

2-MCS51单片机原理-定时器解析

MOV TL0,#9CH ;T0置初值
MOV TH0,#9CH
SETB TR1 ;启动T1
HERE: AJMP HERE
方式3的应用
T0工作在方式3时,TL0和TH0被分成两个独立的8位
定时器/计数器。其中,TL0可作为8位的定时器/计
数器;而TH0只能作为8位的定时器。
33
当T1用作串行口波特率发生器时,T0才设置为方式3。 此时,常把T1设置为方式2,用作波特率发生器。
31
外部信号由T1(P3.5) 脚输入,每发生一次负跳变计数 器加1,每输入100个脉冲,计数器产生溢出中断, 在中断服务程序中将P1.0取反一次。
T1工作在方式2的控制字为TMOD=60H。不使用T0 时,TMOD的低4位可任取,但不能使T0进入方式 3,这里取全0。
(2)计算T1的初值
X=28-100=156=9CH
18
定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,由于方式0
是为兼容MCS-48而设,其计数初值计算复杂,在 实际应用中,一般不用方式0,而采用方式1。 方式1应用 例1 假设系统时钟频率采用6MHz,要在P1.0上输出 一个周期为2ms的方波,如图所示。
19
方波的周期用T0来确定,让T0每隔1ms计数溢出1次, 既T0每隔1ms产生一次中断,CPU相应中断后, 在中断服务程序中对P1.0取反。
(2) C/T*——计数器模式和定时器模式选择位 0:定时器模式。 1:计数器模式。
6
(3) GATE——门控位 0:以运行控制位TRX(X=0,1)来启动 定时器/计数器运行。 1: 用 外 中 断 引 脚 ( INT0* 或 INT1* ) 上 的 高电平来启动定时器/计数器运行。

定时计数器详解

定时计数器详解

mcs-51单片机计数器定时器详解【1】80C51单片机内部设有两个16位的可编程定时器/计数器。

可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。

在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。

:从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。

其访问地址依次为8AH-8DH。

每个寄存器均可单独访问。

这些寄存器是用于存放定时或计数初值的。

此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。

这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。

TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。

当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。

定时计数器的原理:16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。

当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。

显然,定时器的定时时间与系统的振荡频率有关。

因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。

如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×1/12=1μs这是最短的定时周期。

若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。

当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。

计数器在每个机器周期的S5P2期间采样引脚输入电平。

若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。

第六章 MCS-51单片机内部定时器

第六章 MCS-51单片机内部定时器

6.3.1 模式0及应用
在这种模式下,16位寄存器只用了13位。 其中,TL0的高3位未用,TH0占8位。当 TL0的低5位溢出时,向TH0进位。当TH0 溢出时,向中断标志位TF0进位,并申请中 断。 因此,可通过查询TF0 是否置位或考 察中断是否发生来判断定时器/计数器0的 操作完成与否。
(2)计算1ms定时T0的初值:
机器周期为(1/fOSC)×12=[1/(12×106)]×12=1μs, 设T0的 计数初值为X,则 (213-X)×1×10-6=1×10-3ms
X=213-1×10-3/(1×10) -6 =8192-1000=7192D=1110000011000
高8位: E0H 低5位: 18H
fosc=12MHz, 采用查询方式。
解:方波周期 T=1/100Hz=0.01s=10ms 用T1定时5ms 计数初值 X为: X=216-12×5×103/12=60536=EC78H 程序如下:
MOV TMOD, #10H ;T1模式1,定时方式
SETB TR1 LOOP:MOV TH1,#0ECH
例:晶振为12MHZ ,则计数周期为
T=12/(12*106)Hz =1微秒
最短的定时 周期
计数器工作方式:
当定时器/计数器为计数工作方式时,通过
引脚T0和T1对外部信号计数,外部脉冲的下降
沿触发计数
在每个机器周期的
采样过程:
S5P2期间采样引脚
当输入脉冲信号从1到0的负跳变时,计数器就 自动加1。 由于检测一个由1到0的跳变需要两 个机器周期,所以 计数的最高频率为振荡频 率的1/24。为了确保给定电平在变化前至少被 采样一次,外部计数脉冲的高低电平均需保持 一个机器周期以上。(占空比没有限制)

51单片机定时器的使用和详细讲解__特别是定时器2

51单片机定时器的使用和详细讲解__特别是定时器2


1)禁止递增/递减计数模式 若DCEN = 0,则递增/递减计数选择被禁止,此时定 时器只能递增计数。工作原理如图 8-10 所示。
通用16定时 器寄存器
预分频 使能位
重载值 寄存器 27号引 脚 使能/禁止引入外 部信号控制T2
中断标 志位
图8-10 T2禁止递增/递减计数模式


若EXEN2 = 0,置位TR2 定时器开始递增计数, 计数至最大值FFFFH 后溢出并置位TF2,同 时将寄存器RC2 中的16 位重载值重新装入定 时器寄存器。 重载值由软件预先设置。新一轮计数循环开始, 定时器同上一轮计数循环一样,从重载值开始 递增计数。
程序清单如下(中断服务程序片段):
{
TF1=0;
TH1=0x15; TL1=0xA0; //重填初值
If (count!=0)
count--; else {count=10;P1_0=!P1_0;} }
8.4 定时器T2 8.4.1 概述 定时器2 是一个16 位通用计数器,其具有 两种操作模式:16 位自动重载模式和16 位 捕获模式。 如果预分频功能被禁止,定时器2工作时, 16 位通用加法计数器以12分频的周期脉冲 计数,每个周期16位通用加法计数器加1或 减1。


8.4.2 定时器T2控制寄存器
1.模式寄存器T2MOD 寄存器T2MOD 用来选择定时器2 的工作模式。其 组成如图8-8所示。
启动边沿 选择位
捕获模式/重载模式 的边沿选择位
预分频使能位
外部启动 使能位
计数器 递增/递 减使能位
图8-8 T2MOD各位功能
2.控制寄存器T2CON 寄存器T2CON 控制定时器2 的工作模式,其各位功 能如图8-9所示。

51定时器的使用流程

51定时器的使用流程

51定时器的使用流程1. 引言在嵌入式系统设计中,定时器是非常重要的模块之一。

而51系列单片机中的定时器,可以帮助我们实现各种定时任务。

本文将介绍51定时器的使用流程,以帮助大家更好地理解和应用这一功能。

2. 51定时器的种类51单片机中,常用的定时器包括定时器0和定时器1。

其中,定时器0是一个8位定时器,而定时器1是一个16位定时器。

它们各自有不同的特点和应用场景。

3. 51定时器的工作原理51定时器的工作原理是通过计数器来实现的。

定时器会根据设定的预分频值、初始计数值以及工作模式进行计数,并在计数满足条件时产生中断或输出相应的事件。

4. 51定时器的使用步骤使用51定时器通常需要以下几个步骤:4.1 设置预分频值定时器的预分频值决定了计数器的工作频率,可以通过寄存器配置来设置。

常见的预分频值有12、4、2以及不分频。

4.2 设置初始计数值定时器的初始计数值决定了定时器开始计数的起点。

可以通过寄存器配置来设置初始计数值。

4.3 选择工作模式定时器的工作模式有多种,可以根据具体需求选择。

常见的工作模式包括定时模式、计数模式以及自动重装模式。

4.4 启动定时器在配置好预分频值、初始计数值和工作模式之后,我们需要将定时器启动。

通过设置相应的寄存器来启动定时器即可。

4.5 处理定时器中断如果我们需要在定时器满足条件时产生中断,我们还需要编写中断服务程序来处理定时器中断。

5. 51定时器的应用场景51定时器在嵌入式系统设计中有广泛的应用。

一些典型的应用场景包括:•测量时间间隔:通过定时器,可以方便地测量两个事件之间的时间间隔。

•脉冲计数器:通过定时器,可以实现脉冲的计数,并根据计数结果进行相应的处理。

•定时触发器:通过定时器,可以实现定时触发某一事件或任务。

•PWM生成器:通过定时器的占空比控制功能,可以生成脉冲宽度调制信号。

6. 总结本文介绍了51定时器的使用流程,包括了定时器的种类、工作原理、使用步骤以及应用场景。

51单片机秒表定时器

51单片机秒表定时器
sbit a138 = P2^2; //定义译码器输入端A 在 P2.2 管脚上
sbit b138 = P2^3; //定义译码器输入端B 在 P2.3 管脚上
sbit c138 = P2^4; //定义译码器输入端C 在 P2.4 管脚上
sbit scl=P2^0; //24C02串行时钟
sda=write_data&0x80;
scl=1;
nop5;scl=0;nop5;
write_data<<=1;
}
sda=1; //释放sda,等待24c02将其拉高确定写入
scl=1; //在scl上升沿中检测sda
nop5;
ack=sda;
scl=0; //完成写操作的第九个时钟周期
switch(site)
{
case 1: numcode=0;a138=1;b138=1;c138=1;break;
// case 2: numcode=0;a138=0;b138=1;c138=1;break;
case 3: numcode=0;a138=1;b138=0;c138=1;break;
while(temp!=0xff)
{
temp=alonekeyboard;
switch(temp)
{
case 0x7f:alonekeynum=8;break;
case 0xbf:alonekeynum=7;break;
case 0xdf:alonekeynum=6;break;
}
}
}
return alonekeynum;
}
void main ()

51单片机的定时器应用解析

51单片机的定时器应用解析

51单片机的定时器应用解析定时器是一种多功能的外设,可以在嵌入式系统中广泛应用。

在 51 单片机中,定时器分为两种:定时/计数器和串行接口定时器(SIT)。

这篇文档将着重介绍定时/计数器的应用。

定时器基础定时器由两个 8 位定时器(Timer0 和 Timer1)和一个 16 位定时器(Timer2)组成。

定时器通过计数器实现定时功能,计数器钟频为定时器输入时钟的一半。

定时器的定时时间可以通过改变计数器初始值和时钟源分频系数来实现。

定时器应用延时定时器可以用来实现延时功能,常见的延时方式是使用定时器产生中断,在中断服务程序中完成延时操作。

PWM定时器可以用来实现脉冲宽度调制(PWM)功能,PWM 的输出占空比可以通过改变计数器初始值和重载值来实现。

计数器定时器也可以作为计数器使用。

在计数器模式下,定时器向计数器输入信号计数,并将计数值存入寄存器中。

定时器使用示例中断延时void init_timer0(unsigned int ms){TMOD &= 0xF0;TMOD |= 0x01;TH0 = ( - FOSC / 1000 * ms) >> 8;TL0 = ( - FOSC / 1000 * ms) & 0xFF;ET0 = 1;TR0 = 1;}void timer0_isr() __interrupt (1){static unsigned char cnt = 0;TH0 = ( - FOSC / 1000 * ms) >> 8;TL0 = ( - FOSC / 1000 * ms) & 0xFF;if(cnt++ >= 20){cnt = 0;// do something every 20 ms}}PWMvoid init_timer1(unsigned int freq, unsigned char duty_cycle) {TMOD &= 0x0F;TMOD |= 0x10;TH1 = ( - FOSC / freq / 2) >> 8;TL1 = ( - FOSC / freq / 2) & 0xFF;// calculate duty cycleunsigned int reload = (unsigned int)(FOSC / freq * duty_cycle / 100 / 2);// set duty cycleRCAP2H = reload >> 8;RCAP2L = reload & 0xFF;TR1 = 1;}结论定时器是 51 单片机中常用的外设之一,可以实现延时、PWM 等多种功能。

51单片机定时器(二)

51单片机定时器(二)

51单⽚机定时器(⼆)书接上回,下⾯是定时器的其他⼯作⽅式。

⼀、⼯作⽅式1:(还是拿t0做说明)定时/ 计数器的⼯作⽅式1⾃⼰经验是⽤的⽐较多的,它的结构图如下:TH0的⼋位和TL0的⼋位构成⼀个16位定时/计数器,可以定时时间最长在⼯作⽅式1下,计数器的计数值范围是:1—65536(216)当为定时⼯作⽅式1时,定时时间的计算公式为:(216—计数初值)╳晶振周期╳12或(216—计数初值)╳机器周期其时间单位与晶振周期或机器周期相同。

如果单⽚机的晶振选为6.000MHz,则最⼩定时时间为:[213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)(216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

⼯作⽅式1的使⽤,和⽅式0完全⼀样,不必赘⾔。

⼆、⼯作⽅式2⼯作⽅式2的结构图如下:从图中可以看出来,计数寄存器变成了⼀个——TL0,⼯作⽅式2下多了⼀个重装载寄存器,也就是原来的TH0。

在⼯作⽅式2下,如果TL0中的数据溢出,那么原先存储在TH0中的数据就会⾃动的装载到TL0中去,这是由单⽚机的硬件实现的,这样我们就不⽤在⼿动给定时器赋初值,⽽且硬件重装载不会耽误时间,所以⼯作⽅式2的计时是最准确的。

但是就是这样⼀来的计数结构只有8位,计数值有限,最⼤只能到255。

所以这种⼯作⽅式很适合于那些重复计数的应⽤场合。

例如我们可以通过这样的计数⽅式产⽣中断,从⽽产⽣⼀个固定频率的脉冲。

也可以当作串⾏数据通信的波特率发送器使⽤。

⼯作⽅式2下的其他使⽤和⼯作⽅式0,1相同。

三、⼯作⽅式3之前的3种⼯作⽅式中,定时器t0和t1的⼯作⽅式完全相同,⽽在⼯作⽅式3中终于有了个性的发挥不在相同了。

下⾯是⼯作⽅式3情况下t0的结构图。

可以看出,t0被分成了2个定时器,每个⼋位,定时/计数器0的TL0拆成的定时器和之前⽅式0,1⼀样,不过TH0拆成的就“因霸”了,它把原先定时器1的溢出标志位给占⽤了,⽽且还不受GATE门控的控制,这样以来,如果定时器0的TH0构成的8位定时器在使⽤,定定时器1就憋屈了,没有溢出位使⽤。

51单片机定时器设置

51单片机定时器设置

51单片机定时器设置51单片机,也被称为8051微控制器,是一种广泛应用的嵌入式系统。

它具有4个16位的定时器/计数器,可以用于实现定时、计数、脉冲生成等功能。

通过设置相应的控制位和计数初值,可以控制定时器的启动、停止和溢出等行为,从而实现精确的定时控制。

确定应用需求:首先需要明确应用的需求,包括需要定时的时间、计数的数量等。

根据需求选择合适的定时器型号和操作模式。

设置计数初值:根据需要的定时时间,计算出对应的计数初值。

计数初值需要根据定时器的位数和时钟频率进行计算。

设置控制位:控制位包括定时器控制寄存器(TCON)和中断控制寄存器(IE)。

通过设置控制位,可以控制定时器的启动、停止、溢出等行为,以及是否开启中断等功能。

编写程序代码:根据需求和应用场景,编写相应的程序代码。

程序代码需要包括初始化代码和主循环代码。

调试和测试:在完成设置和编程后,需要进行调试和测试。

可以通过观察定时器的状态和输出结果,检查定时器是否按照预期工作。

计数初值的计算要准确,否则会影响定时的精度。

控制位的设置要正确,否则会导致定时器无法正常工作。

需要考虑定时器的溢出情况,以及如何处理溢出中断。

需要考虑定时器的抗干扰能力,以及如何避免干扰对定时精度的影响。

需要根据具体应用场景进行优化,例如调整计数初值或控制位等,以达到更好的性能和精度。

51单片机的定时器是一个非常实用的功能模块,可以用于实现各种定时控制和计数操作。

在进行定时器设置时,需要注意计数初值的计算、控制位的设置、溢出处理以及抗干扰等问题。

同时需要根据具体应用场景进行优化,以达到更好的性能和精度。

在实际应用中,使用51单片机的定时器可以很方便地实现各种定时控制和计数操作,为嵌入式系统的开发提供了便利。

在嵌入式系统和微控制器领域,51单片机因其功能强大、使用广泛而备受。

其中,定时器中断功能是51单片机的重要特性之一,它为系统提供了高精度的定时和计数能力。

本文将详细介绍51单片机定时器中断的工作原理、配置和使用方法。

51单片机定时器模式2与波特率的应用

51单片机定时器模式2与波特率的应用

51单片机定时器模式2与波特率的应用单片机定时器模式2与波特率在通信领域有着广泛的应用。

定时器模式2是一种非常常见的定时器工作模式,可以精确地生成指定的时间间隔,而波特率则是通信中用来描述数据传输速率的参数。

在串口通信中,波特率是非常重要的一个参数。

波特率定义了单位时间内传输的比特数,通常以每秒钟传输的比特数(bps)来表示。

波特率越高,传输速度越快,但同时需要更高的传输能力和更高的抗干扰能力。

在通信中,发送端和接收端必须使用相同的波特率来进行通信,否则将无法正确地接收和发送数据。

单片机定时器模式2可以用来生成固定的时间间隔,通常用作定时器中断。

在串口通信中,定时器中断可以用来在发送和接收数据时定时产生中断,用来检测接收缓冲区中是否有数据到达或者发送缓冲区是否已经空闲,从而及时进行数据的接收或发送。

下面以串口通信为例,详细介绍单片机定时器模式2和波特率的应用。

首先,通过单片机定时器来设置波特率。

单片机的主时钟通常是一个固定的频率,比如12MHz。

通过定时器模式2,可以将主时钟的频率分频,从而得到一个与波特率相匹配的频率信号。

具体的分频系数计算公式为:分频系数=(2^SMOD)*(256-PRESCALER)其中,SMOD是特殊功能寄存器的位,如果设置为1,表示使用双倍波特率模式,否则为普通波特率模式;PRESCALER是定时器的预分频值,可以自由选择。

通过调整分频系数,可以得到与波特率相匹配的定时器溢出时间,从而实现波特率的设置。

例如,假设要设置波特率为9600bps,可以先计算得到分频系数,然后通过设置定时器的预分频值和计数器初值来实现。

接下来,在数据传输过程中,可以利用定时器模式2的中断功能来实现接收和发送的时机控制。

在接收数据时,可以使用定时器模式2的中断函数来检测接收缓冲区中是否有数据到达,如果有,则立即从缓冲区中读取数据。

在发送数据时,可以设置定时器的中断函数来检测发送缓冲区是否已经空闲,如果已经空闲,则将要发送的数据写入发送缓冲区。

51单片机(STC89C52)的中断和定时器

51单片机(STC89C52)的中断和定时器

51单⽚机(STC89C52)的中断和定时器STC89C51/STC89C52 Timer内部不带振荡源, 必须外接晶振采⽤11.0592MHz,或22.1184MHz,可⽅便得到串⼝通讯的标准时钟.STC89和STC90系列为12T, STC11/STC12系列为1T, 也就是⼀个指令⼀个机器周期, 这些都需要外置晶振; STC15系列有内置晶振.中断中断允许控制寄存器 IE字节地址A8H, CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的D7D6D5D4D3D2D1D0EA—ET2ES ET1EX1ET0EX0EA (IE.7): 整体中断允许位, 1:允许ET2(IE.5): T2中断允许位, 1:允许(for C52)ES (IE.4): 串⼝中断允许位, 1:允许ET1(IE.3): T1中断允许位, 1:允许EX1(IE.2): 外部中断INT1允许位, 1:允许ET0(IE.1): T0中断允许位, 1:允许EX0(IE.0): 外部中断INT0允许位, 1:允许52单⽚机⼀共有6个中断源, 它们的符号, 名称以及各产⽣的条件分别如下1. INT0 - 外部中断0, 由P3.2端⼝线引⼊, 低电平或下降沿引起2. INT1 - 外部中断1, 由P3.3端⼝线引⼊, 低电平或下降沿引起3. T0 - 定时器/计数器0中断, 由T0计数器计满回零引起4. T1 - 定时器/计数器1中断, 由T1计数器计满回零引起5. T2 - 定时器/计数器2中断, 由T2计数器计满回零引起 <--这个是52特有的6. TI/RI - 串⾏⼝中断, 串⾏端⼝完成⼀帧字符发送/接收后引起定时器中断51单⽚机内部共有两个16位可编程的定时器,即定时器T0和定时器T1, 52单⽚机内部多⼀个T2定时器. 它们既有定时功能,也有计数功能。

可通过设置与它们相关的特殊功能寄存器选择启⽤定时功能还是计数功能. 这个定时器系统是单⽚机内部⼀个独⽴的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作⽤,CPU⼀旦设置开启定时功能后,定时器便在晶振的作⽤下⾃动开始计时,但定时器的计数器计满后,会产⽣中断。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12
表8-1 定时器0 和定时器1 工作模式
13
1.工作模式0 当T0M(T1M)=00时定时器设定为工作模式0,此 时定时器工作于13位定时状态。 其中TH0是高8位加法计数器,TL0是低5位加法计 数器(TL0只用了低5位,高3位未用)。TL0加法 计数溢出时向TH0进位,TH0加法计数溢出时硬件 置TF0=1。 加法计数器对机器周期脉冲Tcy计数,每个机器周 期TL0加1。

上溢/下溢标志位
外部事件标志位 展示T2EX引脚状态
捕获/重载模式选择位 0:重载;1:捕获
外部使能控制位 1:使能T2EX引脚控制; 0:禁止 T2EX引脚控制;
启动/停止控制位
图8-9 T2CON各位功能
34
8.4.3 定时器T2工作模式
1.自动重载模式 控制寄存器T2CON 中的 CP / R L 2 置“0” 时,定时 器2被选择为自动重载模式。 该模式下,定时器2计数至溢出时,将寄存器RC2H、 RC2L中的16 位初始值重新装入定时器的TH2、TL2 寄存器中,开始新一轮计数循环。 并置位寄存器T2CON 的TF2 位表示计数溢出,从 而向CPU 发送中断请求信号。 溢出标志TF2 必须由程序清零。根据控制寄存器 T2MOD 中DCEN 控制位的设置,自动重载模式可进 一步分为两种类型。

假设使用fOSC的2分频作为计数源,则Tcy=2/ fOSC =2/ (26.67×106)=75ns 由公式
定时时间 计数初值 2 Tcy
n

(此处n 16)

可知计数初值
X 65536 4.5ms 5536 0 x15 A0 75 *10 6 ms

∴TH1=0x15,TL0=0xA0。
6
8.2 定时器T0和T1的结构
定时器T0和T1的结构如图8-1所示。
核心寄存 器——16位 加法计数器
定时器模 式寄存器
图8-1 定时器T0和T1结构图
7
1.16位加法计数器
16位加法计数器是定时器的核心,图8-1中用寄存 器TH0、TL0及TH1、TL1表示。 T0加法计数器的高8位和低8位分别用TH0、TL0表 示 T1加法计数器的高8位和低8位分别用TH1、TL1 表示 高8位和第8为可分别单独使用 当定时器工作时,加法计数器对内部机器周期脉 冲Tcy计数。
作方式和其它参数,因此使用方便。
4

定时器的基本工作原理是:利用计数器对固定周 期的脉冲计数,通过寄存器的溢出来触发中断。

具体应用步骤: 1)根据需要的定时时间,结合单片机的晶振频率, 计算出寄存器的初始值 2)根据需要开中断 3)启动定时器

若已规定用软件启动,则可把TR0、TR1或TR2置“1”; 若已规定由外中断引脚电平启动,则需给外引脚步加启动 电平。当实现了启动要求后,定时器即按规定的工作方式 和初值开始计数或定时。
30

定时器2由T2MOD寄存器、T2CON存器、功能 存器TH2、TL2、RC2H、RC2L等电路构成。


TH2、TL2构成16位通用计数器。 RC2H、RC2L作为16位寄存器,在自动重载模式 中RC2H、RC2L作为16位通用计数器的16位初值 寄存器 在捕捉模式中,当引脚T2EX上出现下降沿跳变 时,把TH2、TL2的当前值捕捉到RC2H、RC2L中 去。

14

定时器的定时时间
T (8192- X) T cy

计数初始值X
定时时间 X 2 Tcy
n
(此处n 13)

最大定时能力:
T max 8192 T cy
15
模式0的结构图如图8-4所示。
13位加法 计数器
门控位
GATE=0 定时器不受 控于外部信号;仅打 开与门,是定时器仅 有TR位控制; GATE=1 定时器受控 于外部信号,此时要 求TR=1;
17
定时时间 计数初值 2 Tcy
n
6 0 . 6 * 10 X 213 8192 8000 192 0 xC0 75
高8位TH 0 00000110 0 x06 低5位TL0 00000000 0 x00

T0从192开始计数,直到 超过8192即溢出,置 TF0=1,产生中断信号


让P1.0每45ms取反一次即可实现。定时器的单次定时时间 不可能达到45ms,如果设定16位的工作模式1,最大定时时 间也才为4.9152ms。 可让定时器多次定时产生4.5ms的定时时间,如让T1工作在 方式1,单次定时时间为4.5ms,那么T1中断10次就是45ms 的时间。
25


(1)确定定时常数
31


8.4.2 定时器T2控制寄存器
1.模式寄存器T2MOD 寄存器T2MOD 用来选择定时器2 的工作模式。其 组成如图8-8所示。
32
启动边沿 选择位
捕获模式/重载模式 的边沿选择位
预分频使能位
外部启动 使能位
计数器 递增/递 减使能位
图8-8 T2MOD各位功能
33
2.控制寄存器T2CON 寄存器T2CON 控制定时器2 的工作模式,其各位功 能如图8-9所示。
图8-3 中断使能寄存器组成
定时器0中 断使能位 定时器0中 断使能位
11
8.3 定时器工作模式


定时器0 和定时器1 完全兼容,均可设定为四 种不同的工作模式,如表8-1 所示。寄存器 TMOD 的位域TxM选择定时器的工作模式。 两个定时器在模式0、1 和2 时独立工作;在 模式3 时具有特定功能。

Tcy
8

2.模式寄存器(TMOD) TMOD用来选择定时器0、1的工作模式,低4位 用于定时器0,高4位用于定时器1,其组成如图 8-2所示。
T1 T0
00:模式0
方式 选择 01:模式1 10:模式2 11:模式3 方式 选择
9
图8-2 模式寄存器组成

3.控制寄存器(TCON)

TCON高4位用于控制定时器0、1的运行;低4位用于控 制外部中断,与定时器无关。
定时器0、1运行控 制位TR0(TR1): TR0(TR1)=1 启动 TR0(TR1)=0 停止
图8-3 控制寄存器组成
定时器0、1溢出标志 TF0(TF1): 溢出时该位由硬件自 动置1,响应中断后, 由硬件自动清0
10

4.中断使能寄存器(IEN0)

IEN0中的ET0(ET1)位控制定时器0、1是否产生中断 请求信号。为0时不产生中断请求信号,为1时允许产 生中断请求信号。其结构如图8-4所示。
外,还要注意将时间常数重新送入T1中,为下一次
产生中断作准备。
27
程序清单如下(主程序):
#include <c8051f020.h> sbit P1_0 = P1^0; int count=10; //10次T1中断为45ms void main( void ) { 注:寄存器 所在页的选 TMOD=0x10; //T1方式1 择没有列出 P1_0=0; TH1=0x15; //初值 TL1=0xA0; IEN0=0x08; //允许T1中断 IP|=0x08; IPH|=0x08; //TF1中断为高级中断 TR1=1 EA=1; // 总开中断 while(1); //死循环, 查询等待TF1置位,产生方波 }
26

(2)初始化程序 包括T1初始化和中断系统初始化,主要是对IP、IE、 TCON、TMOD的相应位进行正确的设置,并将时间常
数送入T1。一般将初始化操作放在主程序中完成,
当程序规模较大时,应编写单独的初始化程序,以 利于程序的模块化设计。

(3)中断服务程序 中断服务程序除了完成要求的方波产生这一工作之
3

实现定时和计数的方法一般有:软件定时、专用 硬件电路和可编程定时器/计数器三种方法。

软件定时:执行一个循环程序进行时间延迟。定时准确,不
需要外加硬件电路,但增加CPU开销。

专用硬件电路定时:可实现精确的定时和计数,但参数
调节不便。

可编程定时器/计数器:不占用CPU时间,能与CPU并行工
作,实现精确的定时和计数,又可以通过编程设置其工
图8-4 方式0结构图
16
例题:生成周期为1.2 ms的等宽正方波。机器晶
振26.67MHz。使用T0以方式0工作,由P0.0输出
1.2 ms


机器周期:37.5ns。计数周期Tcy是机器脉冲 的2分频,因此Tcy=75ns; 定时时间0.6ms 。 以0.6 ms为周期在P1.0端交替输出高低电平。

模式3的结构图如图8-7所示。 TL0 占用定时器0 的控制位:GATE0,TR0 和TF0 TH0占用定时器1 的控制位TR1 和TF1,TH0 溢出时 将置位TF1, 并且在ET1 置位时产生中断。
23
图8-7 方式3结构图
24
T0和T1的应用举例

例 若fOSC=26.67MHz,T1工作于方式1,产生45ms的定时 中断,TF1为其中断源标志。试编写主程序和中断服务程 序,使P1.0产生周期为90ms的方波。(忽略中断响应时 间和指令执行时间) 解:

T (65536- X) T cy

计数初始值
定时时间 计数初值 2 Tcy
n
(此处n 16)
19
模式1的结构图如图8-5所示。
16位加法 计数器
图8-5 方式1结构图
20
3.工作模式2 当T0M(T1M)=10时定时器设定为工作模式2,此 时定时器0(定时器1)被设置为可自动重载的8 位定时器。
相关文档
最新文档