借鉴:郭天祥《新概念51单片机C语言教程》
一、原理
51单片机,拥有两个定时器,用来中断计数,分别是T0和T1。而52单片机和51单片机的定时器是一样的,只是52比51多了一个定时器/计数器T2,它们的设置都大同小异,下面我来总结各个定时器的用法。定时器T0与T1不同之处在于它们的工作方式3不同,方式0、1、2相同。![c7d6f17ece475dce8ee3165d59c02107.png](https://img-blog.csdnimg.cn/img_convert/c7d6f17ece475dce8ee3165d59c02107.png)
首先我们看要使用定时器T0应该设置的东西:
1、对中断寄存器和定时器进行初始化:
![6758a5f72b0d866deb2474f4737eccd9.png](https://img-blog.csdnimg.cn/img_convert/6758a5f72b0d866deb2474f4737eccd9.png)
初始化函数里的内容也可以写在头文件里,但是为了美观和好查阅,就把它单独写出来,后面在头文件里直接调用就行。那么应该要进行初始化的设置:
①设置定时器的工作方式
单片机内,有其中一个特殊寄存器叫TMOD,这是用来设置定时器工作方式的寄存器,通过软件,将其寄存器内的D0~D7位置0或1,从而达成对定时器的操作。
寄存器TMOD
![f92cc93daf76884e07c1f21d27acee38.png](https://img-blog.csdnimg.cn/img_convert/f92cc93daf76884e07c1f21d27acee38.png)
![5b05bbbd21bcf7cc32437800a2bd91f5.png](https://img-blog.csdnimg.cn/img_convert/5b05bbbd21bcf7cc32437800a2bd91f5.png)
控制M1、M0将它们置1或0,即可达成操作控制方式的目的,然后转换成16进制即方便查阅。
同理,使用定时器1时也是这么设置。注意,有时候也有使用两个定时器T0、T1的时候,那么就是0001 0001两个都是工作方式1。请大家举一反三。