定时器实质是计数器。当计数脉冲周期一定时,就有定时功能。

一、向上计定时数器举例

当一个255毫升的烧杯,提前放入155毫升水后,此烧杯最多容纳100毫升水。生活常识大家都明白。

同理,对于八位定时计数器来说,提前存入一个数(比如说155),那么当计到FF时益处,相当于能计数101个脉冲(这点和烧杯例子不同之处)。所以我们只要计算出需要计数的数,用定时计数器的最大值减去该值即可。现在很多单片机有溢出自动赋初值功能,比较方便。

二、向下定时计数器举例

当放入155毫升水时,就能流出155毫升水。放入200毫升水,能流出200毫升水。水越多定时越长。

同理,在单片机当中只要把我们想要计数的脉冲数放入计数器寄存器即可。减到0再减到0xFF时置位中断标记。在中断里重新赋值。自动重装载的功能省去赋值这一步。

三、比较型定时计数器

这种类型结合了向上定时计数器和向下定时计数器的优点。用实物举例就是开口可以移动。如下图所示。开口在155毫升处就只能装155毫升,在50毫升处就只能装50毫升。

同理,我在只要在单片机当中设置计数的最大值即可。到达此值再加1溢出,置位定时计数器中断标记。

四,对于长定时的处理

由于定时计数器的位数一定,最大定时时间也一定,超过使用范围的可使用软件计时。既增加一个全局变量,来一次中断加1,加到想要的值后赋值0。

对于单片机而言,改变定时器的时间有以下几种方法:

1、从源头改变,改变外部晶振大小;

2、改变ccu中pll锁相环的参数,各个芯片不一样,查询用户手册就可以了;

3、改变定时器模块的分频何预分频寄存器;

4、改变定时器的比较器的值;