本篇文章来介绍单片机上的一个新的功能,定时/延时器。本篇和接下来的几篇都是描述性的内容,可能比较枯燥!
0x01:软件延迟的问题
在前面的文章中,所有的延时是依靠软件的延时,也就是让芯片去“空转”,就是让 CPU 去数数。但是,使用这样的方式进行延时很多场景下会存在问题,当 CPU 在“空转”时,某个外部设备改变了电平信号,这时,这个信号就不会被单片机处理了,从而相当于是丢失了一个或多个信号。
其实单片机本身可以解决这个问题,因为定时/延时有专门的部件,叫做定时器。
0x02:定时器和计数器的概念
定时器和计数器使用同一个电路,通过配置寄存器,可以让该电路当作定时器或计数器来使用。
定时或者计数的本质就是让单片机某个部件数数。当该电路用作定时器的时候,靠内部震荡电路进行数数;当该电路用作计数器的时候,它会数外面的信号(负跳变,从高电平变低电平的过程),读取针脚的数据。
标准 C51 有 2 个定时器/计数器:T0 和 T1。它们的使用方法一致。
C52 相比 C51 多了一个 T2。
本篇文章就先说明这两点,第一个,软件延迟可能会丢信号;第二定时器和计时器在 C51 单片机中有专门的部件,并且通过配置寄存器来进行使用,C51 有 2 个定时器/计数器,C52 有 3 个定时器/计数器。