当前位置:首页 > 单片机 > 单片机
[导读]一、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计

一、计数概念的引入

从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。

二、计数器的容量

从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。

三、定时

8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?

一个闹钟,我将它定时在1个小时后闹响,换言之,也能说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是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就能了。

单片机中的定时/计数器都能有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。

在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。顺便说一下,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。


从图1中我们能看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0,至于这里面是什么意思,我们下面介绍。


从图2中我们能看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(我们暂不管)。而TF1(0)我们上节课已提到了,当计数溢出后TF1(0)就由0变为1。原来TF1(0)在这儿!那么TR0、TR1又是什么呢?看上节课的图。

计数脉冲要进入计数器还真不不难,有层层关要通过,最起码,就是TR0(1)要为1,开关才能合上,脉冲才能过来。因此,TR0(1)称之为运行控制位,可用指令SETB来置位以启动计数器/定时器运行,用指令CLR来关闭定时/计数器的工作,一切尽在自已的掌握中。


<单片机定时器/计数器结构>

定时/计数器的四种工作方式

工作方式0

定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位组成13位的计数器,此时TL(1/0)的高3位未用。

我们用这个图来讨论几个问题:

M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。

C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们��编程者。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这是个极普通的常识,几乎没有教材会提这一点,但很多开始学习者却会有此困惑。

GATE:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况

GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。

GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1管脚的控制,只有TR1为1,且INT1管脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性能用来测量一个信号的高电平的宽度,想想看,怎么测?

为什 么在这种模式下只用13位呢?干吗不用16位,这是为了和51机的前辈48系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工作方式。

工作方式1

工作方式1是16位的定时/计

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek推出新一代无刷直流电机 (BLDC) 控制专用单片机 HT32F65233。采用 Arm® Cortex®-M0+ 低功耗内核, 具备 2.5 V~5.5 V 宽电压操作。系统电压为 5 V 时,可获得更高的...

关键字: BLDC单片机 电机驱动 计数器

单片机定时器通过晶振频率来产生精准的计数脉冲,从而实现微秒级别的时间控制。 单片机定时器依托于一个稳定的计数器,该计数器与单片机上的晶振部件相连。晶振经过12分频后,为单片机提供稳定且精准的1MHZ脉冲。由于晶振的频率极...

关键字: 单片机 定时器

编码器‌是一种传感器,主要用于测量旋转运动的角度、角速度和位移等参数。常见的编码器类型包括增量式编码器和绝对值编码器,前者通过检测脉冲的增加或减少来测量旋转方向和距离,后者则直接输出当前的绝对位置信息‌。

关键字: 编码器‌ 定时器

一款语音控制的番茄时间定时器,内置Seeed Studio XIAO ESP32S3感测和圆形显示。用免提时间管理保持高效!

关键字: 定时器 ESP32S3 语音控制

你可能会想象他们使用先进的人工智能相机来计算访客人数,但实际上,一个简单的基于传感器的系统就能有效地完成这项工作!通过在入口和出口点放置红外传感器,这些系统检测移动方向并保持准确计数。不需要花哨的技术。

关键字: Arduino IR传感器 计数器

【2025年3月20日, 德国慕尼黑讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码: IFNNY)近日宣布,其旗下ModusToolboxTM开发平台中的AIROC™...

关键字: MCU 物联网 定时器

该项目利用OLED显示器和两个输入开关,允许用户增加屏幕上显示的两个数字(10和单位)。代码由设置和循环函数组成,用于管理显示和开关输入。

关键字: OLED 显示器 计数器

众所周知,说到延时,很多人都会想到用软件件来实现,比如定时器之类的。今天就来说说用硬件来实现定时的方式,虽说没有那么准,但是有些场合还是用得到的。

关键字: CD4060 定时器

如果定时器的重装值和分频设置不正确,会导致PWM输出的频率和占空比不准确,从而产生误差‌1。

关键字: 定时器 分频

在数字电路设计中,计数器是一种基础的数字电路组件,用于记录并显示脉冲信号的数量或频率。4进制计数器,即模4计数器,是一种特殊的计数器,其计数范围从0到3,共4个状态。本文将深入探讨如何结合D触发器与寄存器来实现一个4进制...

关键字: D触发器 寄存器 计数器
关闭