单片机定时器与计数器的区别

如题所述

第1个回答  2022-06-02
  在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,两者的区别是什么呢?下面就跟着我一起来看看吧。

  单片机计数器与定时器的区别
  计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。

  在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。

  在定时器计数器中,我们有个概念叫容量,就是最大计数量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。

  在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。

  在定时计数器中,这90滴水就是我们所谓的初始值。问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?

  我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。

  在这里计数初值有3个,假设有方式0:计数初值=8912(2的13次方)—100=8812。方式1:计数初值=65536(2的16次方)—100=65436。方式0:计数初值=256(2的8次方)—100=156。

  根据所得的初始值,再将其转换为16进制或者2进制,就可以进行计数或者定时了。当然要让程序完全的运行起来还需要相应的寄存器进行设置。这些可以从各种单片机教程中找到。
  单片机中定时器与计数器的区别
  定时器实际上也是计数器,只是计数的是固定周期的脉冲

  定时/计数器很容易理解的啊

  定时器实际上也是工作在计数方式下,只是计数的是固定周期的脉冲,由于脉冲周期固定,由计数值可以计算时间,有定时功能

  定时和计数只是触发来源不同(时钟信号和外部脉冲)其他方面是一样的。

  单片机里的寄存器可以看成一个个电子开关,用来切换不同的功能、信号。

  51里通过TMOD里的T/C 位切换计数信号的来源

  当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加1,计数频率为1/12fosc,当晶振频率6MHZ时,计数频率为500KHz,每2us计数值加1;晶振12MHZ就是每1us加1 了。

  当T/C工作在计数器是,计数脉冲来自外部脉冲输入管脚T0(P3.4)或T1(P3.5),当T0或T1脚上负跳变时计数值加1 ,识别管脚负跳变需要2个机器周期,即24个振荡周期。所以T0或T1脚输入的可计数的外部脉冲的最高频率为1/24fosc,当晶振12MHZ时,最高计数频率为500KHz,高于此频率将计数出错。

  至于赋初值就是杯子原理了,由于51只能加计数,且只能在杯子刚刚满的那一刻发出中断,触发中断程序,所以我们就往杯子里先放好一定的豆子,再来相应数量的豆子就满了,然后中断程序就自动工作了。

  注意:

  定时和计数只是触发来源不同(时钟信号和外部脉冲)其他方面是一样的。

  假设我们要定时一定时间(100个机器周期),我们就置初值为(溢出值-100)就行了,假设我们要计件100个,实际上也是置初值为(溢出值-100),然后将输入脉冲设为外部输入就可以了

  所以说:定时和计数只是触发来源不同(时钟信号和外部脉冲)其他方面是一样的。

  在中断里置初值是为下一个循环作准备,没什么好说的,看需要定了。

  由于定时计数器的值也可以随时读出来,所以我们也可以从0开始计数,从而计算一段时间或一定脉冲的数量哦,这是照样可以打开中断,中断时就说明已经又计数了(定时器溢出值)个脉冲哦,在中断里进行溢出处理,就可以计算出远远大于(定时器溢出值)的数字了

  此时也要注意一点:51读数时除了T/C2的捕捉功能,直接读TH和TL可是不断变化的哦,具体的还是看书。当你理解了定时计数器后,我们甚至还可以将计数值置为(溢出值-1),从而实现自动单步(定时模式)或作为外部中断(计数模式)用哦,仔细想想吧,呵呵;-)

  至于中断中的需要保护现场的原因,是为了防止不小心修改了别的程序的参数,从而影响别的程序的运行,所以要且只要保护中断程序自己动过的数据,将动过的那些存储器在退出中断时恢复到进入时的状态,就不会影响被中断的程序了。

  汇编需要自己保存现场,反正程序就是自己编的嘛,一切尽在掌握中;

  C的话编译器会自动进行覆盖分析,自动保存需要保存的变量,一般应用时尽可放心,当然,如果你很了解编译器做了什么,也可以嵌入汇编天马行空自由发挥啊,但新手可不建议这样哦,还是交给编译器吧。

  其实这些可以说都是基础知识啊,如果不明白肯定是你的书看的不够仔细哦.

猜你喜欢

1. 单片机的硬件结构是什么

2. 10秒定时器电路设计

3. 单片机技术论文

4. 单片机的发声原理

5. 单片机开题报告范文

6. 电子实习报告单片机

7. 单片机实训报告范文3篇

单片机的定时和计数有什么 区别?
1、触发来源不同:定时器的触发来源是外部脉冲,而计数器的触发来源是时钟信号。2、计数对象不同:定时器实际上也是计数器,只是计数的是固定周期的脉冲;计数器只是计数时间。单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与...

单片机片内定时器与计数器的主要区别是什么?
单片机片内定时计数器的主要区别是:1)模式控制寄存器TMOD的D2或是D6位来控制。D2或D6位为0时,选择定时工作方式;为1时选择计数工作方式。2)在定时方式时,计数脉冲输入信号由内部时钟提供;计数方式时计数脉冲来自于相应的外部输入引脚。3)定时器是对单片机的机器周期数进行计数;计数器对外部输入...

单片机定时器与计数器的区别
单片机计数器与定时器的区别 计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。在定时器和计数器中都有一个溢出的概念,那什么是溢出了。

51单片机T0作为定时器和计数器有哪些区别?
一、变化不同:计数器记录外部脉冲信号,信号每变化一次,计数器才加1;而定时器则是使用单片机内部的规则脉冲信号,脉冲的间隔是相同的。二、含义不同:定时器T1没有方式3 ,方式3只适合定时器T0,使其增加一个8位定时器。若定时器T1选择方式3,T1将停止工作,相当于TR1=0的情况。在工作方式寄存器T...

单片机8051定时器和计数器方式的区别是什么
单片机8051定时器和计数器的区别如下:\\x0d\\x0a1、定时器是以内部时钟作为基准来工作的,计数器是以外部脉冲输入来计数的。\\x0d\\x0a2、TMOD的C\/T位等于0时为定时器模式,等于1时为计数器模式\\x0d\\x0a3、定时器模式与外部IO口无关,计数器模式需要P3.4,P3.5输入脉冲 ...

定时器和计数器的区别有哪些?
定时器是通过设定初值,然后单片机在你设定的初值上每个指令周期加1,直到溢出,设置溢出标志位,而计数是对某个IO口的脉冲进行计数。两者最关键区别是定时器的计数脉冲是单片机内部的,计数器的计数脉冲来自输入引脚。定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,...

51单片机定时和计数有何不同点和相同点
1.计数功能是对外来脉冲进行计数,一般由T0,T1两个引脚输入,当输入引脚脉冲发生负跳变时,计数器加1.2.定时功能也是通过计数来完成的,不过此时的计数脉冲来自单片机的内部,也就跟单片机的内部晶振有关.

单片机中定时器和计数器 的相同点
单片机中定时器和计数器,它们就是同一个东西,称为“定时器\/计数器”。它可以通过软件设置,工作在“定时”或者“计数”方式。工作在“定时”方式时,将对系统的机器周期进行计数,数字就代表时间;工作在“计数”方式时,将对外来的脉冲的下降沿计数,数字就代表脉冲的个数。

51单片机中 定时器与计数器是一样的吗
一样的,定时器和计数器是这个功能的一体两面。当使用内部时钟作为脉冲源时,它就是定时器,当使用外部脉冲时,它就是计数器。当然,这个需要寄存器配置

单片机定时器\/计数器主要有什么作用?
作用一:计数概念的引入 作用二:定时 作用三:溢出 单片机提供内部定时和外部计数的功能,功能差不多都是定时和计数达到终点时,产生中断,而CPU则暂时放下目前所执行的程序区处理中断。定时器:主要用于产生固定时间(比较精确),也可以作为UART等外设的频率发生器。计数器:主要是计量引脚产生脉冲的个数。

相似回答
大家正在搜