计数器与定时器概念
- 格式:doc
- 大小:27.50 KB
- 文档页数:3
定时器计数器原理及应用一、知识点1、定时器/计数器的结构2、定时器和计数器两种工作模式3、工作方式控制寄存器TMOD4、定时器/计数器控制寄存器TCON5、定时器/计数器的4种工作方式方式0:13位计数器方式1:16位计数器方式2:8位可自动重装初值方式方式3只适用于T0,T1不能工作在方式36、定时器/计数器的初始化及编程实现(1)设置TMOD寄存器(2)计算定时器T0的计数初值X(3)设置IE寄存器(4)启动和停止定时器7、定时器的单次最大定时时间:2M*12/晶振频率9、定时器应用(方式1、2;编程:中断方式、查询方式)10、计数器应用(方式1、2;编程:中断方式、查询方式)二、复习题(一)判断题1、在MCS-51单片机内部结构中,TMOD为模式控制寄存器,主要用来控制定时器的启动与停止。
(F)2、在MCS-51单片机内部结构中,TCON为控制寄存器,主要用来控制定时器的启动与停止。
(T)3、MCS-51单片机的两个定时器的均有两种工作方式,即定时和计数工作方式。
(T)4、MCS-51单片机的TMOD模式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作方式及操作模式。
(T)5、定时器/计数器T1于定时模式,工作于方式2,则工作方式字为20H。
(T)6、定时器/计数器T1于计数模式,工作于方式1,则工作方式字为50H。
(T)7、单片机8051的定时/计数器是否工作可以,通过外部中断进行控制。
(T)8、定时/计数器工作于定时方式时,是通过8051片内振荡器输出经12分频后的脉冲进行计数,直至溢出为止。
(T)9、定时/计数器工作于计数方式时,是通过8051的P3.4和P3.5对外部脉冲进行计数,当遇到脉冲下降沿时计数一次。
(T)10、定时/计数器在工作时需要消耗CPU的时间。
(F)11、定时/计数器在使用前和溢出后,必须对其赋初值才能正常工作。
(F)12、特殊功能寄存器SCON,与定时器/计数器的控制无关。
定时/计数器学习笔记
一、基本概念
1、89C51有两个计数器T0和T1,89C52还有一个T2。
每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535。
2、提供给定时器的计数源又是从哪里来的呢?就是由单片机的晶振经过12 分频后获得的一个脉冲源。
一个12M 的晶振,它提供给计数器的脉冲时间间隔是就是1us。
3、预置数计数法。
如果每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒。
但是如果只需要10毫秒就可以了,怎幺办?只要在计数器里预先放进55536,这样只需要计数65536-55536=10000次,也就是10毫秒了。
二、控制字
1、特殊功能寄存器TMOD(89H)。
C51单片机的计数器是通过触发机制来工作的。
在C51单片机中,有两种常见的计数器类型:定时器和计数器/计时器。
1. 定时器(Timer):
定时器用于生成一定时间间隔的定时事件。
C51单片机中的定时器是基于内部或外部时钟源进行计数的。
当定时器达到设定的计数值时,会触发定时器中断,并执行相应的中断服务程序(ISR)。
可以使用定时器来生成精确的时间延迟、控制周期性任务等。
2. 计数器/计时器(Counter/Timer):
计数器/计时器可以用来计数外部事件的脉冲数量或测量时间间隔。
它可以根据外部事件的触发边沿(上升沿或下降沿)来触发计数动作。
当计数器达到设定的计数值时,也可以触发计数器中断,并执行相应的中断服务程序(ISR)。
计数器还可以被配置为计时器模式,用于测量时间间隔。
在C51单片机中,计数器的触发机制通常是通过设置相关的寄存器来实现的。
这些寄存器包括计数器的初始值、计数模式、计数触发边沿等。
通过配置这些寄存器,可以灵活地控制计数器的工作方式和触发条件。
需要注意的是,具体的计数器触发机制可能会因不同的单片机型号而有所差异。
因此,在编程时应参考相关的芯片手册或数据表,以了解具体的计数器触发机制及其相应的寄存器设置。
1。
单片机定时器与计数器的区别在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,两者的区别是什么呢?下面就跟着店铺一起来看看吧。
单片机计数器与定时器的区别计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。
当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。
在定时器和计数器中都有一个溢出的概念,那什么是溢出了。
呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。
同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。
在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。
在定时器计数器中,我们有个概念叫容量,就是最大计数量。
方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。
把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。
在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。
假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。
问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。
到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。
在定时计数器中,这90滴水就是我们所谓的初始值。
问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。
定时器和计数器是电子设备中常用的两种工作原理。
它们都是通过一定的逻辑电路或芯片来实现特定功能的,为各种应用提供了灵活且准确的计时和计数功能。
定时器的工作原理定时器的工作原理主要是基于计数器和比较器。
它通常由一个计数器和一个比较器组成。
计数器从零开始计数,当计数到设定的值时,比较器发出一个信号,触发相应的动作。
具体来说,定时器的输入信号是时钟信号,这个信号可以是系统的时钟信号,也可以是外部的输入信号。
当定时器接收到输入信号后,计数器开始计数。
当计数到设定的值时,比较器将输入信号与预设值进行比较,如果相等,则发出一个触发信号。
触发信号可以控制输出门的开启或关闭,从而控制输出信号的电平。
当定时器触发时,输出信号的电平会从低电平变为高电平,或者从高电平变为低电平。
这个输出信号可以用于控制其他电路或设备的工作。
计数器的工作原理计数器的工作原理主要是基于触发器的翻转和组合逻辑电路。
它通常由多个触发器和组合逻辑电路组成。
具体来说,计数器的输入信号是时钟信号,这个信号可以是系统的时钟信号,也可以是外部的输入信号。
当计数器接收到输入信号后,触发器开始翻转。
在每个时钟周期内,触发器都会翻转一次。
当触发器翻转到一定的次数后,组合逻辑电路会输出一个触发信号。
触发信号可以控制输出门的开启或关闭,从而控制输出信号的电平。
当计数器触发时,输出信号的电平会从低电平变为高电平,或者从高电平变为低电平。
这个输出信号可以用于控制其他电路或设备的工作。
在计数器中,每个触发器的状态都会被传递到下一个触发器,从而实现连续的计数。
计数器的计数值可以通过改变组合逻辑电路的连接方式来实现不同的功能和计数值。
总的来说,定时器和计数器的工作原理都是基于特定的逻辑电路或芯片来实现特定的计时和计数功能。
它们的应用范围广泛,可以用于各种电子设备中,如定时开关、定时报警器、计数器等。
第7章定时器/计数器MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1(8052提供3个,这第三个称定时器T2)。
它们既可用作定时器方式,又可用作计数器方式。
7 . 1定时器/计数器结构定时器/计数器的基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器)拼装而成。
在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号)。
故其频率为晶振频率的1/12。
如果晶振频率为12MH Z,则定时器每接收一个输入脉冲的时间为1us。
当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1(它在每个机器周期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1)。
加1操作发生在检测到这种跳变后的一个机器周期中的S3P1,因此需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的1/24。
这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。
定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能寄存器(TMOD和TCON)的内容来决定。
用指令改变TMOD或TCON的内容后,则在下一条指令的第一个机器周期的S1P1时起作用。
1、定时器的方式寄存器TMOD图7-1 TMOD寄存器各位定义特殊功能寄存器TMOD为定时器的方式控制寄存器,寄存器中每位的定义如图7-1所示。
高4位用于定时器1,低4位用于定时器0。
其中M1,M0用来确定所选的工作方式,如表7-1所示。
①M1 M0 定时器/计数器四种工作方式选择,见表7-1所示。
定时器计数器常用编程方法定时器和计数器是嵌入式系统中常用的功能模块,用于实现时间测量、任务调度、PWM生成等功能。
在嵌入式系统的开发中,了解和掌握常用的定时器计数器编程方法至关重要。
本文将介绍几种常用的定时器计数器编程方法,以帮助开发者更好地运用定时器计数器。
一、基本概念在进行定时器计数器编程之前,我们首先需要了解一些基本概念。
1. 定时器:定时器是一种能够按照一定时间周期自动计数,并产生相应中断或触发事件的硬件模块。
2. 计数器:计数器是一种能够按照外部信号或者内部时钟信号进行计数,并提供计数结果的硬件模块。
3. 溢出中断:当定时器或计数器的计数值达到最大值后,会发生溢出,并触发溢出中断,用于实现周期性的定时或计数功能。
4. 输入捕获:定时器计数器可以通过输入捕获功能,实时记录外部事件信号的时间戳,用于时间测量等应用。
二、定时器计数器编程方法在嵌入式系统中,常用的定时器编程方法包括常规模式、CTC模式、PWM模式等。
下面分别介绍这些方法的基本原理及编程实现。
1. 常规模式常规模式是定时器最简单的工作模式,通过设置计数器的初值和溢出中断来实现定时功能。
其编程步骤如下:(1)设置定时器计数器的初值,决定计数器的起点。
(2)使能定时器的溢出中断,当计数器溢出时触发中断。
(3)启动定时器计数。
下面是一个使用常规模式实现定时功能的示例代码:```C#include <avr/io.h>#include <avr/interrupt.h>void Timer_Init(){// 设置计数器初值TCNT1 = 0;// 使能溢出中断TIMSK |= (1 << TOIE1);// 启动定时器计数,使用外部时钟源TCCR1B |= (1 << CS12) | (0 << CS11) | (0 << CS10);}// 定时器溢出中断处理函数ISR(TIMER1_OVF_vect){// 处理定时事件}int main(){Timer_Init();// 主循环while (1){// 其他任务处理}return 0;}```2. CTC模式CTC模式(Clear Timer on Compare Match)是一种定时器工作模式,可以实现在指定时间后产生中断或触发事件。
单片机定时器与计数器的工作原理及应用摘要:单片机作为现代电子设备中广泛采用的一种集成电路,其内部包含了丰富的功能模块,其中定时器和计数器被广泛应用于各种领域。
本文将介绍单片机定时器和计数器的工作原理及应用,包括定时器的基本原理、工作模式和参数配置,以及计数器的工作原理和常见应用场景。
希望通过本文的阐述,读者能够深入了解单片机定时器和计数器的基本原理和应用,为电子系统设计提供参考。
引言:单片机作为嵌入式系统中的核心部件,承担着控制和处理各种信号的重要任务。
定时器和计数器作为单片机的重要功能模块,为实现各种实时控制任务提供了有效的工具。
定时器可以生成一定时间间隔的定时信号,而计数器则可以对外部事件的频率进行计数,实现时间测量和计数控制等功能。
一、定时器的工作原理单片机中的定时器通常为计数器加上一定逻辑控制电路构成。
定时器的基本工作原理是通过控制计数器的计数速度和计数值来实现不同时间间隔的输出信号。
当定时器触发时,计数器开始计数,当计数值达到预设值时,定时器产生一个输出信号,然后重新开始计数。
定时器通常由以下几个部分组成:1.计数器:定时器的核心部件是计数器,计数器可以通过内部振荡器或外部输入信号进行计数。
通常情况下,计数器是一个二进制计数器,它可以按照1、2、4、8等倍数进行计数。
2.预设值:定时器的预设值决定了定时器的时间间隔。
当计数器达到预设值时,定时器会产生一个输出脉冲。
3.控制逻辑电路:控制逻辑电路用于控制计数器的启动、停止和重置等操作。
通常情况下,控制逻辑电路由一系列的触发器和逻辑门组成。
二、定时器的工作模式定时器可以根据实际需求在不同的工作模式下运行,常见的工作模式有以下几种:1.定时工作模式:在定时工作模式下,定时器按照设定的时间间隔进行计数,并在计数值达到预设值时产生一个输出脉冲。
这种模式常用于周期性任务的触发和时间测量。
2.计数工作模式:在计数工作模式下,定时器通过外部输入信号进行计数,可以测量外部事件的频率。
计数器与定时器概念
一、计数概念的引入
从选票的统计谈起:画“正”。
这就是计数,生活中计数的例子处处可见。
例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。
二、计数器的容量
从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。
水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。
录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。
三、定时
8031中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?
一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。
那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。
图1
结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。
由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。
那么提供组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶振经过12分频后获得的一个脉冲源。
晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。
问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是多少呢?当然这很容易,就是12M/12等于1M,也就是1个微秒。
结论:计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。
四、溢出
让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。
这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。
水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。
至于TF0是什么我们稍后再谈。
一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。
至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。
五、任意定时及计数的方法
刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。
这个没有问题,问题是我们现实生活中,经常会有
少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?
提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛?
对了,我们采用预置数的方法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。
定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就可以了,怎么办?
10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。