一般所有单片机的定时器用做普通定时功能,都需要具备以下几点要素:
1. 时基:时基就是定时器的时钟来源,一般都是来源于内部时钟或外部时钟,并且一般都能设置对应的分频系数,因此要弄清楚 时基来源,分频器设置,设置完时钟来源和分频器就知道计时的最小单元。
2.当前计数器: 该寄存器反应的就是当前实时的计数值,这个计数值在每个计时最小单元的时间内加1或者减1。
3.计数匹配器: 一般向上计数的定时器肯定需要1个计数匹配器,当前计数器从0开始加1,一直加到与计数匹配器相等,则认为定时时间到,这个时候将置位对应标志位或者发出对应中断请求。也有向下计时器,从某个值一直减到0则认为定时时间到,这种定时器不需要计数匹配值。
4.定时中断控制:一般设置定时器都配合对应中断使用,当定时时间到,定时器将设置对应标志位,若使能了定时器中断,定时器将向CPU发出中断请求。
5.定时器计数开关,中断使能开关:有些定时器都有个使能开关,只有使能才开始计数,中断一般都有开关,只有在中断使能开关打开情况下,定时时间到才触发中断请求。
下面分析下PIC单片机的通用定时器TIMER0和TIMER2,并分析下其配置成通用定时器步骤
TIMER0
TIMER0是一个向下计数器,在每个计时最小单元计数器都是由某个值-1,当减到0则认为定时时间到。
根据上面的定时器原理图可将其配置成通用定时器,步骤如下:
1.将TMR0CS置0,配置成定时器模式,其时基为Fosc/4
2.将PSA置0选择需要分频,若设置成1,则不需要分频
3.若需要分频则配置对应分频控制位PS<2:0>
4.设置TMR0,该寄存器为当前计数值,里面的值即为定时时间,该值一直减小到0认为定时时间到
5.若定时时间到,TMR0IF会置1,若设置了TMR0IE=1,则会触发中断请求
TIMER0相关的寄存器说明如下
|