当前位置:首页 > 单片机 > 单片机
[导读]四、ATMEGA16的定时/计数器四—(01)、四位显示秒表试验首先怀念一下咱们的体育课,再体育课或者田径比赛的时候,老师会经常使用秒表来记录同学们的成绩。在此,来进行一个秒表的设计。(说实话,这个秒表真的太贵了

四、ATMEGA16的定时/计数器

四—(01)、四位显示秒表试验

首先怀念一下咱们的体育课,再体育课或者田径比赛的时候,老师会经常使用秒表来记录同学们的成绩。在此,来进行一个秒表的设计。(说实话,这个秒表真的太贵了,不过只是实验,纯属娱乐)

使用INT0键进行计时的开始/停止,使用S1键作为计时值得清楚,并且采用6位数码管的右四位进行显示。

定时器T0被用作扫描4位数码管(采用溢出中断,每1ms中断一次),而定时器T1则用来计时(咱们用的秒表用来显示四位,两位小数,也就是每计时10ms中断溢出一次)。

1、预分频器和多路选择器

ATMEGA16有两个8位定时/计数器(T/C0、T/C2)和一个16位定时/计数器(T/C1)。

ATMEGA16的定时器/计数器时钟是可选择的。其时钟部分包括预分频器和一个多路选择器。预分频器课被认为是一个有多级输出的分频器。ATMEGA16用一个10位的计数器把输入的时钟分为4种可选择的分频输出。多路选择器可设置使用其中一个分频输出,或者不适用分频输出和使用外部引脚输入时钟。

看图看真相:(其中只有0和1的,2的同理啊~好像那个0和1共用一个,具体我给忘记了,自己看datasheet~)



2、8 位定时器/ 计时器0

T/C0 是一个通用的单通道8 位定时器/ 计数器模块。其主要特点如下:
? 单通道计数器
? 比较匹配发生时清除定时器( 自动加载)
? 无干扰脉冲,相位正确的PWM
? 频率发生器
? 外部事件计数器
? 10 位的时钟预分频器
? 溢出和比较匹配中断源 (TOV0 和 OCF0)

Figure 27为8位定时器/计数器的简化框图(说实话,我也看不懂啊~~)



寄存器:

T/C(TCNT0)和输出比较寄存器(OCR0)为8位寄存器。中断请求(图中简写为Int.Req. ) 信
号在定时器中断标志寄存器TIFR 都有反映。 所有中断都可以通过定时器中断屏蔽寄存器
TIMSK 单独进行屏蔽。图中没有给出TIFR 和TIMSK。
T/C可以通过预分频器由内部时钟源驱动,或者是通过T0 引脚的外部时钟源来驱动。时钟
选择逻辑模块控制使用哪一个时钟源与什么边沿来增加( 或降低)T/C 的数值。如果没有
选择时钟源T/C 就不工作。时钟选择模块的输出定义为定时器时钟clkT0。
双缓冲的输出比较寄存器OCR0 一直与T/C 的数值进行比较。比较的结果可用来产生
PWM波,或在输出比较引脚OC0上产生变化频率的输出。比较匹配事件还将置位比较标志OCF0。此标志可以用来产生输出比较中断请求。

定义:

本文的许多寄存器及其各个位以通用的格式表示。小写的“n” 取代了T/C 的序号,在此即
为0。小写的“x” 取代了输出比较单元通道,在此即为通道A。但是在写程序时要使用精
确的格式,例如使用TCNT0 来访问T/C0 计数器值,等等。



T/C 时钟源:

T/C 可以由内部同步时钟或外部异步时钟驱动。时钟源是由时钟选择逻辑决定的,而时钟
选择逻辑是由位于T/C 控制寄存器TCCR0 的时钟选择位CS02:0 控制的。

计数器单元:

8位T/C的主要部分为可编程的双向计数单元。 Figure 28 即为计数器和周边电路的框图。


根据不同的工作模式,计数器针对每一个clkT0 实现清零、加一或减一操作。clkT0 可以由
内部时钟源或外部时钟源产生,具体由时钟选择位CS02:0 确定。没有选择时钟源时
(CS02:0 = 0) 定时器即停止。但是不管有没有clkT0,CPU 都可以访问TCNT0。CPU 写操
作比计数器其他操作( 如清零、加减操作) 的优先级高。
计数序列由T/C 控制寄存器 (TCCR0) 的WGM01 和WGM00 决定。计数器计数行为与输
出比较OC0 的波形有紧密的关系。有关计数序列和波形产生的详细信息请参考P72“ 工作
模式” 。
T/C溢出中断标志TOV0根据WGM01:0 设定的工作模式来设置。TOV0可以用于产生CPU
中断。

输出比较单元:

8位比较器持续对TCNT0和输出比较寄存器OCR0进行比较。一旦TCNT0等于OCR0,比
较器就给出匹配信号。在匹配发生的下一个定时器时钟周期输出比较标志OCF0 置位。若
此时OCIE0 = 1 且SREG 的全局中断标志I 置位,CPU 将产生输出比较中断。执行中断
服务程序时OCF0 自动清零,或者通过软件写”1” 的方式来清零。根据由WGM21:0 和COM01:0 设定的不同的工作模式,波形发生器利用匹配信号产生不同的波形。同时,波
形发生器还利用max 和bottom 信号来处理极值条件下的特殊情况
Figure 29 为输出比较单元的方框图。


使用PWM 模式时OCR0 寄存器为双缓冲寄存器;而在正常工作模式和匹配时清零模式
双缓冲功能是禁止的。双缓冲可以将更新OCR0 寄存器与top 或bottom 时刻同步起来,
从而防止产生不对称的PWM 脉冲,消除了干扰脉冲。
访问OCR0 寄存器看起来很复杂,其实不然。使能双缓冲功能时,CPU 访问的是OCR0
缓冲寄存器;禁止双缓冲功能时CPU 访问的则是OCR0 本身。(好了,你笨上就这么多吧,我还是看书上的排版比较好啊~~datasheet真的好大啊~``)

3、8位定时/计数器0的寄存器

1)T/C 控制寄存器- TCCR0



? Bit 7 – FOC0: 强制输出比较
FOC0仅在WGM00指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在
使用PWM 时,写TCCR0 要对其清零。对其写1 后,波形发生器将立即进行比较操作。
比较匹配输出引脚 OC0 将按照COM01:0 的设置输出相应的电平。要注意FOC0 类似一
个锁存信号,真正对强制输出比较起作用的是COM01:0 的设置。
FOC0不会引发任何中断,也不会在利用OCR0作为TOP的CTC模式下对定时器进行清零
的操作。
读FOC0 的返回值永远为0。

? Bit 6, 3 – WGM01:0: 波形产生模式
这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。T/C 支持的
模式有:普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM 模式,详见
Table 38 与P72“ 工作模式” 。



? Bit 5:4 – COM01:0: 比较匹配输出模式
这些位决定了比较匹配发生时输出引脚OC0 的电平。如果COM01:0 中的一位或全部都
置位, OC0 以比较匹配输出的方式进行工作。同时其方向控制位要设置为1 以使能输出
驱动器。
当OC0 连接到物理引脚上时, COM01:0 的功能依赖于WGM01:0 的设置。Table 39 给
出了当WGM01:0 设置为普通模式或CTC 模式时COM01:0 的功能。







? Bit 2:0 – CS02:0: 时钟选择
用于选择T/C 的时钟源。



如果T/C0 使用外部时钟,即使T0 被配置为输出,其上的电平变化仍然会驱动记数器。
利用这一特性可通过软件控制记数(这里应该注意一下下~~~)。

2)T/C0计数寄存器—TCNT0



通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对TCNT0 寄存器的写访问
将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0 的数值有可能丢失一
次TCNT0 和OCR0 的比较匹配。

3)输出比较寄存器—OCR0



输出比较寄存器包含一个8 位的数据,不间断地与计数器数值TCNT0 进行比较。匹配事
件可以用来产生输出比较中断,或者用来在OC0 引脚上产生波形。

4)中断屏蔽寄存器—TIMSK



? Bit 1 – OCIE0: T/C0 输出比较匹配中断使能
当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。
当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。
? Bit 0 – TOIE0: T/C0 溢出中断使能
当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。当T/C0
发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。

5)定时/计数器中断标志寄存器—TIFR



? Bit 1 – OCF0: 输出比较标志0
当T/C0 与OCR0( 输出比较寄存器0) 的值匹配时,OCF0 置位。此位在中断服务程序里
硬件清零,也可以对其写1 来清零。当SREG 中的位I、OCIE0(T/C0 比较匹配中断使能
) 和OCF0 都置位时,中断服务程序得到执行。
? Bit 0 – TOV0: T/C0 溢出标志
当T/C0 溢出时, TOV0 置位。执行相应的中断服务程序时此位硬件清零。此外, TOV0
也可以通过写1 来清零。当SREG 中的位I、TOIE0(T/C0 溢出中断使能) 和TOV0 都置
位时,中断服务程序得到执行。在相位修正PWM 模式中,当T/C0 在0x00 改变记数方
向时, TOV0 置位(这里我还真的不会~~)。

下面的是个补充:具体我也不知道~因为我也没有用过,回头用了再来更新,哈。



4、16位定时/计数器T/C1

16位的T/C 可以实现精确的程序定时( 事件管理)、波形产生和信号测量。其主要特点如下
? 真正的16 位设计( 即允许16 位的PWM)
? 2 个独立的输出比较单元
? 双缓冲的输出比较寄存器
? 一个输入捕捉单元
? 输入捕捉噪声抑制器
? 比较匹配发生时清除寄存器( 自动重载)
? 无干扰脉冲,相位正确的PWM
? 可变的PWM 周期
? 频率发生器
? 外部事件计数器
? 4 个独立的中断源(TOV1、 OCF1A、OCF1B 与ICF1)

先看看图吧:


寄存器:

定时器/ 计数器TCNT1、输出比较寄存器OCR1A/B 与输入捕捉寄存器ICR1 均为16 位
寄存器。访问16 位寄存器必须通过特殊的步骤,详见P85“ 访问16 位寄存器” 。T/C 控
制寄存器TCCR1A/B 为8 位寄存器,没有CPU 访问的限制。中断请求( 图中简写为
Int.Req.) 信号在中断标志寄存器TIFR1 都有反映。所有中断都可以由中断屏蔽寄存器
TIMSK1 单独控制。图中未给出TIFR1 与TIMSK1。
T/C可由内部时钟通过预分频器或通过由T1引脚输入的外部时钟驱动。引发T/C数值增加(
或减少) 的时钟源及其有效沿由时钟选择逻辑模块控制。没有选择时钟源时T/C 处于停止
状态。时钟选择逻辑模块的输出称为clkT1。
双缓冲输出比较寄存器OCR1A/B 一直与T/C 的值做比较。波形发生器用比较结果产生
PWM或在输出比较引脚OC1A/B输出可变频率的信号。参见P91 “输出比较单元” 。比较匹
配结果还可置位比较匹配标志OCF1A/B,用来产生输出比较中断请求。
当输入捕捉引脚ICP1 或模拟比较器输入引脚( 见P189 “ 模拟比较器” ) 有输入捕捉事件
产生( 边沿触发) 时,当时的T/C 值被传输到输入捕捉寄存器保存起来。输入捕捉单元包
括一个数字滤波单元( 噪声消除器) 以降低噪声干扰。
在某些操作模式下, TOP 值或T/C 的最大值可由OCR1A 寄存器、ICR1 寄存器,或一
些固定数据来定义。在PWM 模式下用OCR1A 作为TOP 值时, OCR1A 寄存器不能用
作PWM 输出。但此时OCR1A 是双向缓冲的, TOP 值可在运行过程中得到改变。当需
要一个固定的TOP 值时可以使用ICR1 寄存器,从而释放OCR1A 来用作PWM 的输出。

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

74LS192是一款广泛应用在数字电子系统中的同步十进制可逆计数器集成电路,属于美国德州仪器(TI)早期推出的7400系列TTL逻辑家族的一员。该芯片设计为四位二进制计数器,并因其特殊的十进制计数特性以及双向计数能力而广...

关键字: 74ls192 计数器

2023年11月28日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 宣布与全球工业自动化领域知名供应商Siemens签订代理协议。Sieme...

关键字: 工业自动化 人机接口 计数器

外部输入、输出继电器、内部继电器、定时器、计数器等器件的接点可多次重复使用,无需用复杂的程序结构来减少接点的使用次数。

关键字: plc编程 定时器 计数器

单片机可以通过“定时/计数模式选择位C/T”令定时/计数器工作于定时或计数模式下,也可通过“工作方式选择位M1M0”设定其工作方式。C/T和M1M0等与定时/计数器有关的位在寄存器TCON或TMOD中,见表4-8和表4-...

关键字: 寄存器 计数器 定时器

在家电产品和工业应用系统中,定时和计数是两种常用的功能,如:微波炉加热计时和流水线上产品数目统计等。MCS-51单片机内部集成的两个可编程定时/计数器T0和T1使用灵活、方便,在仪器仪表等工业产品中应用广泛。

关键字: 计数器 定时器 单片机

TMOD 的地址是 89H ,它不能位寻址 ,它里面的内容被称为方式字,设置时一次写入,其各位的定义如图 6.2 所示。高 4 位用于定时器 T1 ,低 4 位用于定时器 T0 。

关键字: 定时器 计数器 单片机

单片机定时器其实跟我们平时常说的计数器,是同一个电子元件,只不过计数器记录的是单片机外部情况,所接收的也是外部脉冲,而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件。

关键字: 定时器 计数器 单片机

电子专业的学生或爱好者总是喜欢为他们的家庭或学校制作各种电路,尤其是那些会闪烁几盏灯的电路。市场上有许多电路和套件可以周期性、随机或顺序地闪烁任意数量的 LED 或灯,但是一种非常通用的 IC 可用于制作简单的 LED...

关键字: LED 闪光灯驱动 计数器

德科集团(The Adecco Group)的最新研究,面对日益加剧的经济不确定性,企业必须解决员工经济和福利问题,以在这些不确定时期为员工提供支持,并避免员工离职。德科集团调研发现:全球五分之三(61%)的人担心他们的...

关键字: ECC GROUP 定时 UI

摘要:高压磁电机是航空活塞发动机点火系统中的核心部件,磁电机内定时和发动机外定时关乎发动机的正常运转。没有准确的定时,发动机可能无法正常启动或者异常抖动。此外,点火系统的检查亦关系到发动机能否持续正常工作。基于此,详细分...

关键字: 磁电机 定时 点火系统
关闭
关闭