例说51单片机4-学习基本定时器

合集下载

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时,计数器工作。

51单片机定时器的使用

51单片机定时器的使用

151单片机定时器/计时器的使用步骤:1、 打开中断允许位:对IE 寄存器进行控制,IE 寄存器各位的信息如下图所示:EA : 为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES : 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开2、 选择定时器/计时器的工作方式:定时器TMOD 格式CPU 在每个机器周期内对T0/T1检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。

因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。

由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。

通常,T0或T1输入线上的计数脉冲频率总小于100kHz 。

方式0:定时器/计时器按13位加1计数,这13位由TH 中的高8位和TL 中的低5位组成,其中TL 中的高3位弃之不用(与MCS-48兼容)。

13位计数器按加1计数器计数,计满为0时能自动向CPU 发出溢出中断请求,但要它再次计数,CPU 必须在其中断服务程序中为它重装初值。

方式1:16位加1计数器,由TH 和TL 组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。

2方式2:计数器被拆成一个8位寄存器TH 和一个8位计数器TL ,CPU 对它们初始化时必须送相同的定时初值。

当计数器启动后,TL 按8位加1计数,当它计满回零时,一方面向CPU 发送溢出中断请求,另一方面从TH 中重新获得初值并启动计数。

方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。

在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。

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单片机定时-计数器结构和计数器工作原理
使用中断方式时对IE寄存器赋值开发中断
使TR0或TR1置位,启动定时/计数器
晶体振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上,时钟发
生器是一个二分频触发器电路,它将振荡器的信号频率除以2,向CPU提供
了两相时钟信号P1和P2。时钟信号的周期称为机器状态时间S,它是振荡
周期的2倍。在每个时钟周期(即机器状态时间S)的前半周期,相位1(即
P1信号)有效,在每个时钟周期的后半周期,相位2(即P2信号)有效。
提供
用途:定时器和计数器
核心:加1计数器
原理:每来一个脉冲则加1计数器加1,当加到全1时再来一个脉冲使加
1计数器归零,同时加1计数器的溢出使TCON寄存器中的TF0(或TF1)
置1,向CPU发出中断请求
脉冲来
补充:
计数器工作原理:
用作计数器时,对T0或T1引脚的外部脉冲计数,如果前一个机器周期
采样值为1,后一个机器周期采样值为0,则说明有一个脉冲,计数器加
1。
在每个机器周期的S5P2期间采样引脚输入电平。新的计数初值于下一个
机器周期的S3P1期间装入计数器。
此种方式需要两个机器周期来检测一个1->0负跳变信号,因此最高的计
数频率为时钟频率的1/24。
S5P2:
S5P2指的是第5个时钟周期的相位2。
工作原理:13位计数器,使用TL0的低5位和TH0的高8位组成,TL0
的低5位溢出时向TH0进位。TH0溢出时发出中断请求。
方式1
计算公式:
最大计数:65536个机器周期
工作原理:16位计数器,TL0作为低8位,TH0作为高8位
方式2:自动重装初值的8位计数方式
计算公式:p.s.晶振频率必须选择12的整数倍,因为定时器的频率是晶振

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;

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

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

T1
T0
00:模式0
方式 01:模式1 方式
选择
10:模式2 11:模式3
选择
图8-2 模式寄存器组成
3.控制寄存器(TCON)
TCON高4位用于控制定时器0、1的运行;低4位用于控 制外部中断,与定时器无关。
定时器0、1运行控 制位TR0(TR1): TR0(TR1)=1 启动 TR0(TR1)=0 停止
T0加法计数器的高8位和低8位分别用TH0、TL0表 示
T1加法计数器的高8位和低8位分别用TH1、TL1 表示
高8位和第8为可分别单独使用
当定时器工作时,加法计数器对内部机器周期脉 冲Tcy计数。
Tcy
2.模式寄存器(TMOD)
TMOD用来选择定时器0、1的工作模式,低4位 用于定时器0,高4位用于定时器1,其组成如图 8-2所示。
专用硬件电路定时:可实现精确的定时和计数,但参数 调节不便。
可编程定时器/计数器:不占用CPU时间,能与CPU并行 工作,实现精确的定时和计数,又可以通过编程设置其 工作方式和其它参数,因此使用方便。
定时器的基本工作原理是:利用计数器对固定周 期的脉冲计数,通过寄存器的溢出来触发中断。
具体应用步骤:
51单片机定时器的使用和详细讲解__特别 是定时器2
章节概述 很棒
8.1 概述 8.2 定时器T0和T1的结构 8.3 定时器工作模式 8.4 定时器T2
8.1 概述
定时器是单片机的重要功能模块之一,在检测、 控制领域有广泛应用。
定时器常用作定时时钟,以实现定时检测、定 时响应、定时控制,并且可用于产生ms宽的 脉冲信号,驱动步进电机
加法计数器对机器周期脉冲Tcy计数,每个机器周 期TL0加1。

51定时器介绍

51定时器介绍

51单片机定时、计数器介绍一采用11.0592M 的晶振,每接收一个输入脉冲的时间约为1.085μs。

采用12M 的晶振,每接收一个输入脉冲的时间为1μs。

STC89C52 内有三个定时/ 计数器, 分别为T0、T1 和T2。

其中T0、T1 工作方式一样,T2 的工作方式稍有区别。

TMOD(见表1)、TCON(见表3)与定时器T0、定时器T1 间通过内部总线及逻辑电路连接,TMOD 用于设置定时器的工作方式,TCON 用于控制定时器的启动、停止,标志定时器的溢出和中断情况。

当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定的工作方式独立工作,不再占用CPU 的操作时间,只有在计数器计满溢出时才可能中断CPU 当前的操作。

表1 TMOD寄存器表中各位(从左至右为从高位到低位)含义如下。

TMOD 的低4 位为定时器0 的方式字段,高4位为定时器1 的方式字段,它们的含义完全相同。

M1 和M0 :工作方式控制位,其定义如表2 所示( 其中i=0,1)。

表2 定时器工作方式控制位:功能选择位。

=0 时,设置为定时器工作方式;=1 时,设置为计数器工作方式。

GAte :门控位。

当GATE=0 时,软件控制位TR0 或TR1 置1 即可启动定时器。

TR0 或TR1 置0 即可停止定时器工作;当GATE=1 时,软件控制位TR0 或TR1 需置1,同时还需(P3.2) 或(P3.3) 为高电平方可启动定时器,即允许外部中断启动、定时器。

值得注意的是TMOD 寄存器不能位寻址,只能用字节指令设置高4 位定义定时器1 上的工作方式或低4 位定义定时器0 的工作方式。

而且在复位时,TMOD 所有位均置0。

表3 TCON寄存器表中各位(从左至右为从高位到低位)含义如下。

(1)TFl :定时器1 溢出标志位。

当定时器1 计满数产生溢出时,由硬件自动置TF1=1,向CPU发出定时器1 的中断请求,在中断允许时响应。

51单片机定时器原理

51单片机定时器原理

51单片机定时器原理51单片机是一款广泛应用的微型计算机,具有体积小、功耗低、价格便宜等优点,因此在各个领域中都有广泛的应用。

其中,定时器是51单片机的重要功能之一,本文将分步骤阐述51单片机定时器原理。

一、51单片机定时器的介绍定时器是指一种能够精确计时的电子元件。

51单片机的定时器包括定时器0(T0)和定时器1(T1),它们具有不同的寄存器和使用方式。

二、定时器0的原理1. T0模式设置T0模式设置是指通过寄存器控制定时器的计数方式和时钟源。

在T0模式下,定时器的计数器是8位的,时钟源可以选择外部引脚或者内部时钟源(TH0和TL0寄存器),而计数方式可以配置为16位定时或者13位计数。

2. TH0和TL0寄存器TH0和TL0寄存器是T0模式中计数器的高8位和低8位,它们的初始值可以通过程序设置。

定时器在运行过程中会不断递增计数,当计数达到65535时,定时器会自动重新开始计数,并触发定时器0中断(TF0)。

3. 定时器中断的处理方式当定时器0到达设定的计数值时,会自动触发中断,程序会跳转到固定的中断向量地址,并执行中断服务程序。

在中断服务程序中,中断标志TF0会被自动清除,同时可以通过软件控制定时器的继续工作或停止运行。

三、定时器1的原理1. T1模式设置T1模式设置与T0模式类似,也是通过寄存器来控制计数方式和时钟源。

不同的是,在T1模式下,定时器的计数器是16位的,时钟源也可以选择外部引脚或者内部时钟源。

2. TH1和TL1寄存器TH1和TL1寄存器分别是T1模式中计数器的高8位和低8位,它们的初始值同样可以由程序设定。

定时器1在运行过程中也会不断递增计数,当计数达到65535时,同样会自动重新开始计数,并触发定时器1中断(TF1)。

3. 定时器1中断的处理方式定时器1中断的处理方式与定时器0中断相似。

当定时器1到达设定的计数值时,会自动触发中断,程序会跳转到固定的中断向量地址,并执行中断服务程序。

51单片机定时器工作原理

51单片机定时器工作原理

51单片机定时器工作原理51单片机是一款广泛使用的微控制器,它的定时器功能可以用于实现定时操作、计时、脉冲计数等功能。

本文将介绍51单片机定时器的工作原理。

01、51单片机的定时器51单片机的定时器包括两个独立的定时器,即定时器0和定时器1。

每个定时器都由一个8位计数器和一组控制寄存器组成。

这些寄存器被映射到特定的内存地址,并且可以通过读写这些地址来控制定时器的工作方式。

02、定时器的计数器定时器的计数器是一个8位的寄存器,它通过每次递增来实现计时操作。

当计数器的值达到最大值255时,它会自动重置为0,从而形成一个循环计时器。

通过改变计数器的初值可以改变定时器的定时时长。

在51单片机中,计数器的初值可以通过内部RAM、外部RAM或IO 口进行设置。

03、定时器的工作模式51单片机的定时器可以工作在4种不同的模式下,分别是方式0、方式1、方式2和方式3。

每种模式下,定时器的工作方式都不同,可以实现不同的定时器操作,如定时操作、计时操作、脉冲计数等。

在每种模式下,定时器的一些控制寄存器的设置也是不同的。

04、定时器的中断控制定时器在计时过程中可以触发中断信号,用于提示系统完成定时操作。

在51单片机中,可以通过设置中断允许位来开启定时器中断功能。

当定时器计时满足中断触发条件时,会自动发出中断信号,通知系统进行相应的中断处理。

05、注意事项在使用51单片机定时器时需要注意以下问题:1) 在每次使用定时器之前,必须先进行相应的初始化设置。

2) 定时器操作时需要注意定时器的中断允许位的设置,以便及时处理定时器计时的中断。

3) 在使用定时器时不要过度依赖计时精度,因为51单片机的晶振精度和定时器的延时误差可能会导致计时误差。

4) 在设计系统时应合理规划定时器的使用,以充分利用定时器的功能,同时避免出现冲突或资源浪费现象。

以上就是51单片机定时器的工作原理和注意事项,仅供参考。

通过对单片机定时器的深入学习和了解,可以更好地控制单片机系统的定时操作,实现更高效、可靠的工作。

51单片机定时器设置

51单片机定时器设置

51单片机定时器设置入门(STC89C52RC)STC单片机定时器设置STC单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。

要点有以下几个:1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。

理解是最好的记忆方法。

好的教材一定会给出所有英文缩写的原形。

2. 尽量用形像的方法记忆比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。

其格式为:其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1,各位的说明:GA TE——门控制。

GA TE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。

当INT0引脚为高电平时TR0置位,启动定时器T0;当INT1引脚为高电平时TR1置位,启动定时器T1。

GA TE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

C/T——功能选择位C/T=0时为定时功能,C/T=1时为计数功能。

置位时选择计数功能,清零时选择定时功能。

M0、M1——方式选择功能由于有2位,因此有4种工作方式:M1M0 工作方式计数器模式TMOD(设置定时器模式)0 0 方式0 13位计数器TMOD=0x000 1 方式1 16位计数器TMOD=0x011 0 方式2 自动重装8位计数器TMOD=0x021 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03单片机定时器0设置为工作方式1为TMOD=0x01这里我们一定要知道,TMOD的T是TIMER/COUNTER的意思,MOD是MODE的意思。

至于每位上的功能,你只要记住图表,并知道每个英文缩写的原型就可以了。

51单片机定时器

51单片机定时器

8位的可自动重装载的T/C,满计数值为28。 TH和TL当作两个8位计数器。计数过程时,TH寄存8 位初值并保持不变,由TL进行8位计数。
计数过程中,除产生溢出中断请求外,还自动将TH 中初值重装到TL,即重装载。 省去用户软件中重装初值的程序,精确的定时。
4 方式3
增加一个附加的8位定时器/计数器,从而具有3个 定时器/计数器。
ห้องสมุดไป่ตู้
(2)M1、M0——工作方式选择位
M1 M0 工 作 方 式 0 0 方式0,13位定时器/计数器 0 1 方式1,16位定时器/计数器 1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T0,T0分成两个 8位计数器,T1停止计数
(3) C/T*——计数器模式或定时器模式选择位 0:定时器模式。 1:计数器模式。
方式1:16位计数器的满计数值=216=65536; 方式2:8位计数器的满计数值=28=256。
若使T/C工作在计数器2,则要求计数10个脉冲 的计数初值。 如设计数初值为x,则有28-x=10
即 x=28-10
因此 TH=TL=256-10
MCS-51定时器的应用
定时器初始化编程:使用定时器工作之前,先写入控制寄 存器,确定好定时器工作方式。 初始化编程格式: MOV TMOD,# 方式字 ;选择方式 MOV THx,#XH ;装入Tx时间常数 MOV TLx,#XL (SETB EA ) ;开Tx中断 (SETB ETx ) SETB TRx ;启动Tx定时器或者给外引脚 加载启动电平 1. 按实际需要选择定时/计数功能 2. 按时间或计数长度选择方式 3. 计算时间常数
TF0—T0溢出中断请求标志位。 T0计数后,溢出时,由硬件置 “1”(TF0=1),向CPU申请中断,CPU响应 TF0中断时,硬件自动清“0”(TF0=0), TF0也可由软件清0。

51单片机定时器工作原理

51单片机定时器工作原理

51单片机定时器工作原理单片机是一种集成了微处理器核心、存储器和各种外围设备接口电路的微型计算机系统,它具有体积小、功耗低、成本低等优点,因此在各种电子设备中得到了广泛的应用。

而定时器作为单片机中的重要外围设备之一,其工作原理对于单片机的应用至关重要。

本文将介绍51单片机定时器的工作原理。

首先,我们需要了解定时器的基本概念。

定时器是一种用于产生精确时间延迟的电路,它可以在一定的时间间隔内产生一个脉冲信号,用于控制其他设备的工作。

在51单片机中,定时器通常由定时器/计数器模块来实现,它可以根据程序的需要进行定时、计数等操作。

接下来,我们来详细了解51单片机定时器的工作原理。

51单片机中的定时器/计数器模块通常包括定时器/计数器控制寄存器、定时器/计数器初值寄存器、定时器/计数器当前值寄存器等部分。

在使用定时器时,我们需要首先对这些寄存器进行配置,以满足具体的定时或计数需求。

在进行定时器配置时,我们需要设置定时器的工作模式、计数初值、时钟源等参数。

其中,定时器的工作模式通常包括定时模式和计数模式两种。

在定时模式下,定时器会根据设定的计数初值和时钟源产生定时中断;而在计数模式下,定时器会根据外部脉冲信号进行计数,并在计数完成时产生中断。

通过合理配置这些参数,我们可以实现定时器的各种功能,如精确定时、脉冲生成等。

在定时器工作过程中,定时器会根据设定的工作模式和参数进行计数或定时,当计数或定时完成时,定时器会产生中断请求,通知单片机进行相应的处理。

通过中断服务程序,我们可以实现定时器中断的处理,如更新定时器的计数初值、进行下一次定时等操作。

除了定时器的基本工作原理外,我们还需要了解定时器的时钟源选择、定时器中断的优先级设置等相关内容。

在使用定时器时,时钟源的选择会直接影响定时器的计数速度,因此需要根据具体的应用需求进行合理的选择。

同时,定时器中断的优先级设置也需要根据系统的整体设计进行合理的规划,以确保定时器中断能够及时得到处理。

51单片机的定时器(一)

51单片机的定时器(一)

51单⽚机的定时器(⼀)⼀、结构51单⽚机有2个16位的定时器/计数器,它们有四种⼯作⽅式。

定时器系统的结构如下:定时器的⼯作⽅式由寄存器TMOD选择,TMOD如下:定时器的四种⼯作⽅式由M1,M0选择,对应如下:M1 M00 0 ⽅式00 1 ⽅式11 0 ⽅式21 1 ⽅式3C/T(⾮)则选择定时器/计数器是⼯作在计数⽅式还是定时⽅式。

1:counter 0:timerGATE为1时选择定时/计数器⼯作在门控⽅式定时器的的⼯作由寄存器TCON控制,TCON如下:TCON的⾼四位与定时/计数器有关,低四位与外部中断有关,TRX=1时开启定时/计数器,THX+TLX开始计数,当THX 和TLX溢出时,TFX 被置1.THX(X=0,1)和TLX(X=0,1)两个8位的寄存器共同组成16位的寄存器,⼀起记录定时/计数器的计数值。

⼆、四种⼯作⽅式:1.⼯作⽅式0当TMOD中的M0=0,M1=0时,定时/计数器⼯作在⽅式0.定时/计数器0(t0)在⼯作⽅式0时的结构图如下(t1与t0完全⼀样):暂时不管下半部分。

从图中可以看出,计数寄存器TH0的8位和TL0的低5位位组成13位计数器,TR0=1时(打开计数器----也和GATE有关,此时GATE=0),当C/T(⾮)=0时,计数时钟源接通晶振的的12分频,晶振每12个周期产⽣⼀个计数脉冲,计数寄存器+1,这时t0作定时器⽤;当C/T(⾮)=1时,计数时钟源接通外部引脚P3.4,外部输⼊⼀个脉冲,计数寄存器+1,这时t0作计数器。

当13位的计数寄存器溢出时,会把TF0位置1,如果设置了中断,则会产⽣定时中断。

书接上回,下⾯是定时器的其他⼯作⽅式。

⼀、⼯作⽅式1:(还是拿t0做说明)定时/ 计数器的⼯作⽅式1是⽤的⽐较多的,它的结构图如下:(图⽚遗失,转移的时候找不到链接了。

)TH0的⼋位和TL0的⼋位构成⼀个16位定时/计数器,可以定时时间最长在⼯作⽅式1下,计数器的计数值范围是:1—65536(216)当为定时⼯作⽅式1时,定时时间的计算公式为:(216—计数初值)╳晶振周期╳12或(216—计数初值)╳机器周期其时间单位与晶振周期或机器周期相同。

51单片机定时器详细全解.上

51单片机定时器详细全解.上

51单片机定时器详细全解.上看了很多几本单片机的书,对51定时器的认识又有了一些新的变化。

开局一张图(一个简单的单片机程序),其实文章也是来解释这个代码的写法。

在此,后面也会对STC官方的库,做详细的解读和使用我们使用串口,设置它的寄存器一共4种模式,八位的可变2位,4个状态B6位为0的时候,B7用于帧错误检测,当检测到一个无效的停止位的时候,UART设置它,软件清0.这个方式0,是使用一个专用的SBUF发送的TI标志位发送完以后,自动的变1,相对于有了一个中断。

然后中断系统处理,处理完以后就要把状态变回去。

RI也是,一发一收接收的一个函数这里是注意的编程要点这里要开启UART的中断,先开启大中断,接着开启串口的中断REN是收发功能的开关1,2,3都是异步通信,0是移位寄存器接下来配置定时器只有两个寄存器,灵活使用要TCON是这样的TR1,相对于是使能位关于定时器不得不说,而且最近看了几本相对古老的书,真的很清晰,现在的书比喻一堆也不知道想说什么。

对51来说,其实是只有4种方式:1、51单片机计数器的脉冲输入脚。

主要的脉冲输入脚有Px,y,也指对应T0的P3.4和对应T1的P3.5,主要用来检测片外来的脉冲。

而引脚18和19则对应着晶振的输入脉冲,脉冲的频率和周期为:F = f/12 = 11.0592M/12 = 0.9216MHZ T = 1/F = 1.085us2、定时器有两种工作模式,分别为计数模式和定时模式。

对Px,y 的输入脉冲进行计数为计数模式。

定时模式,则是对MCU的主时钟经过12分频后计数。

因为主时钟是相对稳定的,所以可以通过计数值推算出计数所经过的时间。

所谓的定时器就是恒定的数数。

3、51计数器的计数值存放于特殊功能寄存器中。

T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)其实就是容器,存放脉冲数的这是我们单片机的4种定时器模式4、TLx与THx之间的搭配关系以下的进制,就是向前进位的意思。

MCS51单片机中的定时器

MCS51单片机中的定时器

7
1.3
定时器/计数器的功能
定时器/计数器具有定时和计数两种功能,应用范围如下。 1. 定时与延时控制方面 可产生定时中断信号,以设计出各种不同频率的信号源; 产生定时扫描信号,对键盘进行扫描以获得控制信号,对 显示器进行扫描以不间断地显示数据。 2. 测量外部脉冲方面 对外部脉冲信号进行计数可测量脉冲信号的宽度、周期, 也可实现自动计数。 3. 监控系统工作方面 对系统进行定时扫描,当系统工作异常时,使系统自动复 位,重新启动以恢复正常工作。
振荡器 12 分频
TC/ =0 C/T TC/ =1 C/T
&
TH0 (8 位)
TL0 (5 位)
TF0
中断
T0(P3.4) TR0 GATE INT0(P3.2)
1
≥1
定时器/计数器0方式0逻辑结构
17
3.1 定时器/计数器的初始化
【例1】 用定时器0方式0,定时5ms,以中断方式工作,进行 程序初始化设计,晶振频率为6MHz。 解:用定时器0方式0时,定时器/计数器方式寄存器TMOD低4 位中的M1M0应取00;可设定为软件启动定时器,故 GATE取0;因用定时功能,C/T取0;定时器方式寄存器 TMOD高4位为无关位,一般都取0,所以TMOD应为00H。 晶振频率为6MHz,T机=12/fosc=12/(6106)=2s 定时初值X=213-T/T机=213-51000/2=8192-2500=5692 =163CH=1011000111100B 因TL0的高3位未用,对计算出的定时初值X要进行修正, 即在低5位前插入3个0,修正后的定时初值 X=1011000100011100B=B11CH
005DH
0060H 0062H 0065H 0068H

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

51单片机定时器的使用和详细讲解__特别是定时器ppt课件
定时时间0.6ms 。
以0.6 ms为周期在P1.0端交替输出高低电平。
最新编辑ppt
17
计数初值2n -定时时间 Tcy
X 2 1 30 .6 * 16 0 81 8 90 2 1 0 9 0 0 x 2 0 C 75
高 8位 TH 00000010x1006
T0从192开始计数,直到 超过8192即溢出,置
加法计数器对机器周期脉冲Tcy计数,每个机器周 期TL0加1。
最新编辑ppt
14
定时器的定时时间
T(81-X 9)2Tcy
计数初始值X
X2n-定时时 (此 间 n处 1)3 Tcy
最大定时能力:
Tma8x19T2cy
最新编辑ppt
15
模式0的结构图如图8-4所示。1计3位数加器法
门控位
GATE=0 定时器不受
低 5位 T0 L0000000x0000
TF0=1,产生中断信号
定时器初始化程序 MOV TL0, #0X00 MOV TH0,#0X06 MOV TMOD,#0X00 SETB ET0 SETB TR0
定时器中断服务程序 PUSH …. …… CPL P0_0 …… POP …
最新编辑ppt
5
XC866单片机有三个16位的定时器——定时器0、 定时器1和定时器2。
定时器0、1各具有四种工作模式;定时器2有两 种工作模式。
定时器0、1和定时器2的任何一种工作模式均可 通过程序对相应寄存器进行设置来选择。
定时器在定时时间到时,可以由程序决定是否产 生中断请求信号,进而判断是否执行中断程序。
控于外部信号;仅打 图8-4 方式0结构图
开与门,是定时器仅
有TR位控制;

51单片机定时器工作原理

51单片机定时器工作原理

51单片机定时器工作原理在嵌入式系统中,定时器是一个非常重要的模块,它可以用来进行定时操作、计数操作等。

而在51单片机中,定时器也是一个核心的功能模块。

本文将介绍51单片机定时器的工作原理,希望能够帮助大家更好地理解和应用定时器功能。

首先,我们来看一下51单片机中定时器的基本结构。

51单片机中有定时器/计数器T0和T1两个,它们都是16位的定时器/计数器。

每个定时器/计数器都有一个相关的控制寄存器,用来设置定时器的工作模式、计数初值等。

此外,定时器还有一个相关的中断控制寄存器,用来允许或禁止定时器中断。

定时器的工作原理主要包括定时器的工作模式、工作时钟源以及定时器的中断功能。

定时器的工作模式有4种,分别是模式0、模式1、模式2和模式3。

在不同的工作模式下,定时器可以实现不同的功能,比如定时器功能、计数功能等。

工作时钟源可以是外部时钟源,也可以是内部时钟源。

通过设置相关的控制寄存器,可以选择合适的工作时钟源。

定时器的中断功能可以在定时器溢出时产生中断请求,通过设置中断控制寄存器,可以允许或禁止定时器中断。

接下来,我们将详细介绍51单片机定时器的工作模式。

模式0是最简单的工作模式,定时器工作在方式0下时,定时器每次溢出都会产生一个中断请求。

模式1是定时器的13位工作模式,定时器每次溢出都会产生一个中断请求。

模式2是定时器的8位自动重装载模式,定时器每次溢出都会重新装载初值,并产生一个中断请求。

模式3是定时器的两个8位计数器工作在方式3下时,定时器可以实现两个独立的计数功能。

此外,定时器的工作时钟源也是非常重要的。

在51单片机中,定时器的工作时钟源可以是系统时钟、外部时钟或者定时器自己的时钟。

通过设置相应的控制寄存器,可以选择合适的工作时钟源。

最后,我们来介绍一下定时器的中断功能。

在51单片机中,定时器的中断功能可以在定时器溢出时产生中断请求,通过设置中断控制寄存器,可以允许或禁止定时器中断。

定时器中断可以在定时器溢出时执行一段中断服务程序,实现定时操作。

51单片机定时器

51单片机定时器
器,置位以后,计数器即按规定的工作模式和初值进行计 数或开始定时。
20
5.2.3 定时/计数器的初始化
初值计算: 设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值
(模式0: M为213,模式1: M为216,模式2和3: M为28)
即:方式0,方式1,方式2,方式3。 MCS-51的定时器T1有3种工作方式:
即:方式0,方式1,方式2。
23
5.3 定时器的工作方式——方式0
5.2.1 方式0
M1、M0设置为00 ,为13位计数器,以T1为例, 其框图如下:
计数脉 冲输入
加1计数器
24
5.3 定时器的工作方式——方式0
在这种方式下,16位寄存器TH1和TL1只用13位, 由TH1的8位和TL1的低5位组成。TL1的高3位不定。
两个可编程的定时器/计数器T1、T0。 每个定时器内部结构实际上就是一个可编程的加法计数器,
由编程来设置它工作在定时状态还是计数状态。 两种工作模式:
(1) 计数器工作模式
就是对外部事件进行计数。计数脉冲来自相应的外部输入引脚T0 (P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变(下降沿)时, 计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般 为振荡频率的1/24。Why?
(2) 当GATE=1时, “与门”的输出信号K由INTx输入 电平和TRx位的状态一起决定(即此时K=TRx·INTx),
当且仅当TRx=1且INTx=1(高电平)时,计数启动; 否则,计数停止。
返回
27
5.3 定时器的工作方式——方式1
5.3.2 方式1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

L4.1(1-2) 我们定了了两个宏定义, 分别是系统时钟 11.0592 MHz 和定时器初始化 用的初值,我们设定的是以 1ms 为单位的宏定义。大家可以和上面讲的公式比 较一下。这里有一个 C 语言的知识点,在 C 语言中 nEx 表示 n* 10 的 x 次幂。 4.1(10) 使用上面定义的宏为 TL0 赋初值,用强制转换取低 8 位 4.1(11) 取高 8 位赋给 TH0 4.1(12) 启动定时器 0 4.1(13) 等待定时器计数溢出,这里用了常量在前,变量在后的相等比较技巧,这 个技巧并不是针对初学者,这是开发中一个非常好的习惯,应当一直保持 4.11(14 - 15) 定时器溢出了,停止定时器 4.11(16) 清除定时器溢出标志(非常重要,可以和后面的中断方式比较一下) 程序清单 L4.2
csh@
QQ 技术交流群:186232047 验证码:spark
因群加入成员很快,如遇群满,请到 获取最新交流 群号,加入交流 代码包下载地址: 或直接到群里共享下载
QQ : pzq@/csh@sparkcn
QQ : pzq@/csh@sparkcn
3/7
Spark 嵌入式工作室
11 12 13 14 15 16 17 18 } } TH0 = (u8)(TIMER_N_MS(50) >> 8); TR0 = 1; /* 等待 T0 溢出 */ while(0 == TF0); TR0 = 0; TF0 = 0;
7/7
1 2 3 4 5 6 7 8 void main(void) { u8 i = 0;
Байду номын сангаас
//使能独立 LED 的,即 LEDS6 输出低电平 LEDEN = 0; ADDR0 = 0; ADDR1 = 1; ADDR2 = 1;
QQ : pzq@/csh@sparkcn 4/7
Spark 嵌入式工作室
QQ : pzq@/csh@sparkcn
2/7
Spark 嵌入式工作室
UART 的时候将会看到。别外两种用法大家可以试着自己做一下。 定时器一启动, 它就在原来的数据上开始加 1 计数, 假如 TH0 和 TL0 的值都为 0, 那么经过 0xFFFF 个机器周期后定时器的数值达到最大,再经过一个周期,定时器 溢出,置溢出标志位。所以,定时器的定时周期为(655535(0xffff) + 1 – 定时器 初值)*机器周期(即 12 外部时钟的时间) 。我们推导一个以 1ms 为基准的定时 器初值公式,设 F 为单片的时钟(单位:MHZ),m 为定时器初值,n 为要定时 的周期(单位:ms): m = 65536 – (F*1E6 / 12 * 1E-3) (1En 表示 1 *10 的 n 次幂)
下章预告:
下章我们将为大家带来“中断”概念的介绍, “中断”是单片机中很重要的一个 概念,学好中断对以后学习别的单片机系统也非常重要,都是相通的知识。
作者简介
Spark 嵌入式工作室,成立于 2010 年,致力于嵌入式方面的软、硬件开发和 研究,团队成员都是有经验的开发工程师,擅长使用 51 单片机、STM32。 联系方式 QQ:pzq@
0 1
1 0
1
1
2 控制寄存器(TCON)地址 :0x88H,可以位寻址 位 符号 7 TF1 6 TR 0 5 TF0 0 4 TR0 0 3 IE1 0 2 IT1 0 1 IE0 0 0 IT0 0
复位值 0
这个寄存器仅高 4 位是和定时器相关的(低 4 位和中断相关,后面中断的章节会 介绍)其功能如下: TR:控制定时器启动、停止 TF:定时器溢出标志。些时若相应的中断使能,会产生中断。中断响应后会自动 清零。若未使能中断,需软件清零。 我们本章将主要讲解一下最常用的工作方式 1 的使用方法。 工作方式 2 我们在讲
Spark 嵌入式工作室
第四章
使用定时器
本章我们将介绍 51 单片机上的定时器(也叫计数器)的使用,并用定时器来完 成精准的延时来控制 LED 灯的闪烁。 实验平台:Spark51 开发板 编程环境:TKStudio V4 + Keil 9.0
简介
先来了解一下 51 单片机的定时器系统。51 单片机内部有两个 16 位可编程 的定时器(计数器) ,分别是 T0 和 T1。Spark51 开发板上配的是 52 单片机,内 部多出一个定时器。这三个定时器即有定时功能,有也计数功功能。它们的工作 原理如下,CPU 一但设置好开启功能,定时器便在时钟的作用下开始计数,当计 数器计满之后(如 16 位的计数器达到 0xffff) ,再来一个脉冲,计数器就会溢出。 此时会有一个标志位会被设置,如果定时器的中断使能了的,此时会产生中断。 下面我们一起来看一下定时器相关的操作寄存器 1 工作方式寄存器(TMOD)地址:89H,不能位寻址 位 符号 7 GATE 6 C /T 0 5 M1 0 4 M0 0 3 GATE 0 2 C/T 0 1 M1 0 0 M0 0
我们在控制 LED 状态发生变化的语句(59 行)加入一个断点,在 59 行的边上点 一下即可。 注意观察图上 1 位置所指的值, 这个值是从上次运行以来经过的时间。 按两下 F5 后,如图
还是在图中 1 位位置处可以看到,这值是 500ms 多一点(这多出的一点大家想 想是什么回事?)多按几次,发现仍然是这个值,是符合我们的预期的。 下面大家就把程序下载到 spark51 学习板上运行看看结果。效果应该是 LED0 不 停的闪动。
GATE:当 GATE 为 0 时表示定时器由内部的 TRx 位控制启、停。GATE=时,定时 器由 TRx 和外部引脚/INTx 共同控制启、停。 C/T:计数、定时方式选择位,C/T=1 时,定时器对外部脉冲计数;C/T=0 时,根据 机器周期计数(就是外部时钟的 1/12) M1、 M0:决定定时器的工作方式 M1 0 M0 0 工作方式 工作方式 0,13 位计数方式,相当于 5 位预分频的 8 位计数方式,非常不常用。 工作方式 1,16 位计数方式,也是最常用的方式 工作方式 2,8 位自动重装方式。T1 的这种方式最 常用于波特率发生器 工作方式 3,此方式下,T0 可做为两个独立的 8 位 定时器,T1 只能做波特率发生器使用
思考
1 2 3 4 我们仿真时看到延时并不是整 500ms,是怎么回事?应该怎么修正? 自己写一个以 10ms 为单位的初始值的宏 试着使用一下定时器的方式 0 试着读这一部分的数据手册,加深对定时器的理解
QQ : pzq@/csh@sparkcn
6/7
Spark 嵌入式工作室
硬件连接
本次实验是用定时器方式来控制 LED 闪烁, 所以硬件部分和第三章 “流水灯实验” 的一样,这里就不再重复说明了。请参考前面的章节或完整原理图。
软件设计
本章实验的代码如下(L4.1) 程序清单 L4.1
1 2 3 4 5 6 7 8 9 10 sbit LED0 = P0 ^ 0; void timer0_delay50ms(u8 n) { u8 i = 0; for (i = 0; i < n; i++) { TL0 = (u8)(TIMER_N_MS(50)); #define MCU_CLOCK (11.0592) #define TIMER_N_MS(n) ((u16)(65536 - (MCU_CLOCK * 1E6 * n * 1E-3 / 12)))
复位值 0
注意: “不能位寻址”的意思是是说这个寄存器无法一位一位操作,只能整个寄 存器一起操作。 这个寄存器低 4 位是控制 T0 的,高 4 位是控制 T1 的,它们的功能描述如下:
QQ : pzq@/csh@sparkcn
1/7
Spark 嵌入式工作室
9 10 11 12 13 14 15 16 } } /*设置 T0 为方式 1,内部 TR 控制启动,对 CPU 时钟 12 分频计数*/ TMOD = 0xF1; while (1) { LED0 = ~LED0; timer0_delay50ms(10);
L4.2 程序清单中大部我们在前面章节已经见过,不再赘述。 L4.2(13) 每次使用按位取反操作符把 LED 的状态取反。达到一亮一灭的效果。 L4.2(14) 调用我们前面写好的 delay()函数
仿真与下载
我们使用 TKStudio 的功能先仿真一下, 看是否达到我们的要求。 完整的工程代码 可以在代码包里找到。 在仿真里我们像前面章节一样,还是用到断点的功能来观察延时的结果,进入仿 真后,如图所示:
QQ : pzq@/csh@sparkcn
5/7
Spark 嵌入式工作室
相关文档
最新文档