51单片机定时器的使用和详细讲解__特别是定时器2
- 格式:ppt
- 大小:631.00 KB
- 文档页数:50
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单片机的定时器可以分为两种类型:定时/计数器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单⽚机定时器计数器详解第六章定时器/计数器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 。
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。
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 单片机中,定时器分为两种:定时/计数器和串行接口定时器(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单⽚机定时器(⼆)书接上回,下⾯是定时器的其他⼯作⽅式。
⼀、⼯作⽅式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单片机,也被称为8051微控制器,是一种广泛应用的嵌入式系统。
它具有4个16位的定时器/计数器,可以用于实现定时、计数、脉冲生成等功能。
通过设置相应的控制位和计数初值,可以控制定时器的启动、停止和溢出等行为,从而实现精确的定时控制。
确定应用需求:首先需要明确应用的需求,包括需要定时的时间、计数的数量等。
根据需求选择合适的定时器型号和操作模式。
设置计数初值:根据需要的定时时间,计算出对应的计数初值。
计数初值需要根据定时器的位数和时钟频率进行计算。
设置控制位:控制位包括定时器控制寄存器(TCON)和中断控制寄存器(IE)。
通过设置控制位,可以控制定时器的启动、停止、溢出等行为,以及是否开启中断等功能。
编写程序代码:根据需求和应用场景,编写相应的程序代码。
程序代码需要包括初始化代码和主循环代码。
调试和测试:在完成设置和编程后,需要进行调试和测试。
可以通过观察定时器的状态和输出结果,检查定时器是否按照预期工作。
计数初值的计算要准确,否则会影响定时的精度。
控制位的设置要正确,否则会导致定时器无法正常工作。
需要考虑定时器的溢出情况,以及如何处理溢出中断。
需要考虑定时器的抗干扰能力,以及如何避免干扰对定时精度的影响。
需要根据具体应用场景进行优化,例如调整计数初值或控制位等,以达到更好的性能和精度。
51单片机的定时器是一个非常实用的功能模块,可以用于实现各种定时控制和计数操作。
在进行定时器设置时,需要注意计数初值的计算、控制位的设置、溢出处理以及抗干扰等问题。
同时需要根据具体应用场景进行优化,以达到更好的性能和精度。
在实际应用中,使用51单片机的定时器可以很方便地实现各种定时控制和计数操作,为嵌入式系统的开发提供了便利。
在嵌入式系统和微控制器领域,51单片机因其功能强大、使用广泛而备受。
其中,定时器中断功能是51单片机的重要特性之一,它为系统提供了高精度的定时和计数能力。
本文将详细介绍51单片机定时器中断的工作原理、配置和使用方法。
51单片机定时器模式2与波特率的应用单片机定时器模式2与波特率在通信领域有着广泛的应用。
定时器模式2是一种非常常见的定时器工作模式,可以精确地生成指定的时间间隔,而波特率则是通信中用来描述数据传输速率的参数。
在串口通信中,波特率是非常重要的一个参数。
波特率定义了单位时间内传输的比特数,通常以每秒钟传输的比特数(bps)来表示。
波特率越高,传输速度越快,但同时需要更高的传输能力和更高的抗干扰能力。
在通信中,发送端和接收端必须使用相同的波特率来进行通信,否则将无法正确地接收和发送数据。
单片机定时器模式2可以用来生成固定的时间间隔,通常用作定时器中断。
在串口通信中,定时器中断可以用来在发送和接收数据时定时产生中断,用来检测接收缓冲区中是否有数据到达或者发送缓冲区是否已经空闲,从而及时进行数据的接收或发送。
下面以串口通信为例,详细介绍单片机定时器模式2和波特率的应用。
首先,通过单片机定时器来设置波特率。
单片机的主时钟通常是一个固定的频率,比如12MHz。
通过定时器模式2,可以将主时钟的频率分频,从而得到一个与波特率相匹配的频率信号。
具体的分频系数计算公式为:分频系数=(2^SMOD)*(256-PRESCALER)其中,SMOD是特殊功能寄存器的位,如果设置为1,表示使用双倍波特率模式,否则为普通波特率模式;PRESCALER是定时器的预分频值,可以自由选择。
通过调整分频系数,可以得到与波特率相匹配的定时器溢出时间,从而实现波特率的设置。
例如,假设要设置波特率为9600bps,可以先计算得到分频系数,然后通过设置定时器的预分频值和计数器初值来实现。
接下来,在数据传输过程中,可以利用定时器模式2的中断功能来实现接收和发送的时机控制。
在接收数据时,可以使用定时器模式2的中断函数来检测接收缓冲区中是否有数据到达,如果有,则立即从缓冲区中读取数据。
在发送数据时,可以设置定时器的中断函数来检测发送缓冲区是否已经空闲,如果已经空闲,则将要发送的数据写入发送缓冲区。
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⼀旦设置开启定时功能后,定时器便在晶振的作⽤下⾃动开始计时,但定时器的计数器计满后,会产⽣中断。