HT46R064B/065B/066B
定时/计数器
定时/计数器在任何单片机中都是一个很重要的部分,提供程序设计者一种实现和时间有关功能
的方法。这些芯片具有一到两个 8 位的向上计数器。每个定时/计数器有三种不同的工作模式,可以
当作一个普通定时器、外部事件计数器或脉冲宽度测量使用。并且提供了一个内部时钟分频器,以
扩大定时器的范围。
有两种和定时/计数器相关的寄存器。第一种类型的寄存器是用来存储实际的计数值,赋值给此
寄存器可以设定初始值,读取此寄存器可获得定时/计数器的内容;第二种类型的寄存器为定时器控
制寄存器,用来定义定时/计数器工作模式和定时设置。定时/计数器的时钟源可来自内部时钟源或
外部定时器引脚。
配置定时/计数器输入时钟源
定时/计数器的时钟源可有多种选择,可以是内部时钟,也可以是外部引脚。当定时/计数器工
作在定时器模式或脉冲宽度测量模式时,使用内部时钟作为时钟源。对于某些定时/计数器,内部时
钟首先由分频器分频,分频比由定时器控制寄存器的位 T0PSC0~ T0PSC2 来确定。对于定时/计数器
0,内部时钟源可以通过 TMR0C 寄存器的 T0S 位来选择 fSYS 或者 LXT 振荡器。
当定时/计数器在事件计数模式时,使用外部时钟源,时钟源由外部时钟输入引脚 TCn 提供。
每次外部引脚由高电平到低电平或者由低电平到高电平(由 TnEG 位决定)进行转换时,计数器增加
一。
定时/计数寄存器 - TMR0, TMR1
定时/计数寄存器 TMR0 和 TMR1 是位于特殊数据存储器内的特殊功能寄存器,用于储存定时
器的当前值。在用作内部定时且收到一个内部计数脉冲或用作外部计数且外部定时/计数器引脚发生
状态跳变时,此寄存器的值将会加一。定时器将从预置寄存器所载入的值开始计数,到 FFH 时定时
器溢出且会产生一个内部中断信号。定时器的值随后被预置寄存器的值重新载入并继续计数。
注意,上电后预置寄存器处于未知状态。为了得到定时器的最大计算范围 FFH,预置寄存器需
要先清为零。定时/计数器在关闭条件下,写数据到预置寄存器,会立即写入实际的定时器。而如果
定时/计数器已经打开且正在计数,在这个周期内写入到预置寄存器的任何新数据将保留在预置寄存
器,直到溢出发生时才被写入实际定时器。
定时/计数控制寄存器 - TMR0C, TMR1C
Holtek 单片机灵活的特性也表现在定时器的多功能上,定时/计数器能提供三种不同的工作模
式,由相应的控制寄存器来选择定时/计数器的工作方式。
定时/计数控制寄存器为 TMRnC,配合相应的 TMRn 寄存器控制定时/计数器的全部操作。在使
用定时器之前,需要先正确地设定定时/计数控制寄存器,以便保证定时器能正确操作,而这个过程
通常在程序初始化期间完成。
定时/计数控制寄存器的第 7 位和第 6 位,即 TnM1/TnM0,用来设定定时器的工作模式。定时/
计数控制寄存器的第 4 位即 TnON,用于定时器开关控制,设定为逻辑高时,计数器开始计数,而
清零时则停止计数。定时/计数控制寄存器的第 0~2 位用来控制输入时钟预分频器。如果使用外部时
钟源,预分频器位将不起作用。如果定时/计数器工作在外部事件计数模式或脉冲宽度测量模式,
TnEG 位即 TMRC 寄存器的第 3 位将可用来选择上升沿或下降沿触发。TnS 位用来选择内部时钟源。
Rev 1.00
2011-04-13
39