您现在的位置是:首页 > 单片机

HT48R05A-1的定时计数器

2019-12-28 18:15:18

定时/计数器

    HT48R05A-1提供一个定时/计数器。定时/计数器包含一个8位可编程的向上计数的计数器,时钟可以来自外部时钟或系统时钟。

    如果采用内部系统时钟,那么只有一个参考时基信号,这个内部时钟来自fsys。

    外部时钟输入,允许用户去计量外部事件,测量时间长度或脉冲宽度或产生一个精确的时基信号。

    有两个寄存器与定时/计数器相关联即TMR(0DH)和TMRC(0EH)。有两个物理寄存器对应TMR的位置,写入TMR会将初始值装入定时/计数器的预置寄存器中,而读TMR则会获得定时/计数器的内容,TMRC是定时/计数器控制寄存器。

    TM0和TM1位定义操作模式,事件计数模式用来记录外部事件,这时时钟来源于外部TMR引脚,定时器模式是作为一个普通的定时器功能,时钟源来自fINT时钟。脉冲宽度测量模式能用来计量外部引脚TMR上的高电平或低电平的宽度,计数是基于fINT时钟。

HT48R05A-1定时/计数器


    在事件计数或定时器模式中,一旦定时/计数器开始计数,它将会从当前定时/计数器中的数值开始计数到FFH,一旦产生溢出,计数器会从定时/计数器预置寄存器重新装载并且同时产生相应的中断请求状态位(TF:INTC的第5位)。

    在脉冲宽度测量中,将TON和TE置为“1”,如果TMR接收到从低到高的电平跳变(或从高到低的变化,如果TE位被清除),就开始计数直到TMR返回到原来的电平并且复位TON位。测量的结果被保留在定时计数器中,甚至电平跳变再一次发生也不会改变,也就是,一次只能测量一个周期。直到TON再次被置位,只要再接收到跳变信号,那么测量过程会再次执行。要注意在这个操作模式中,定时/计数器的启动计数不是根据逻辑电平,而是信号的边沿跳变触发。一旦发生计数器溢出,计数器会从定时/计数器的预置寄存器重新装入,并激活中断。这种情况与其它两个模式一样,要使得计数运行,只要将定时器启动位(TON:TMRC的第4位)置“1”。在脉冲宽度测量模式中TON在测量周期结束后自动被清除。但在另外两个模式中,TON只能由指令来复位。定时/计数器的溢出是唤醒信号之一。不管是何种模式,若写“0”到ETI位即可禁止响应的中断服务。

    在定时/计数器为OFF状态下,写数据到定时/计数器的预置寄存器中,同时也会将数据装入定时/计数器中。但若是定时/计数器已经开启,写到定时/计数器的数据被保留在定时/计数器的预置寄存器中,直到定时/计数器发生计数溢出为止,再由预置寄存器加载新的值。当定时/计数器的数据被读取时,会禁止时钟输入以防出错,因为禁止时钟输入可能导致计数错误,所以程序员必须加以考虑。

    TMRC的0-2位被用于定义定时/计数器的内部时钟源的前置分频因子。定义如下表所示,定时/计数器的溢出信号被用于产生驱动蜂鸣器的PFD信号。
HT48R05A-1的TMR寄存器