在学习单片机的时候,我们发现很多功能都是通过中断来实现的。之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法。8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次方为65536。由于单片机的定时器是递加式的,所以最大值减去所要定时的值就是初值,举例如下:
最大值为100,我们只需要38,怎么办呢,由于是递加的,我们只需要在62时开始计时就可以了。
用虚拟示波器抓到的波形如下:
以proteus仿真为例简单讲解定时器赋初值
用proteus搭建的电路图如下,晶振为12M,P2.0每10ms翻转一次,即P2.0输出的频率为100HZ。 这里使用16位的定时器,那单片机定时器0的最大计数就是65536.晶振为12M,那单片机的一个机器周期就是1us,定时器 0工作在方式1时最大定时65.536ms。- 定时器的定时时间T = (65536-X),单位是us;
- 定时器初值X = 65536-T;
用虚拟示波器抓到的波形如下: