MCS-51单片机内部一般设有两个(有的兼容机有三个)16位的定时/计数器。这两个定时/计数器简称定时器0和定时器1,分别记作T0和T1。T0和T1又分成高8位和低8位两部分,分别记作TH0、TL0和TH1、TL1。MCS-51单片机定时/计数器结构框图如图1-27所示。
其实计时与计数功能并无本质区别,都是在计算输入定时/计数器的脉冲数。不同的是,作为定时器使用时,输入的是单片机内部对应于机器周期的固定脉冲,因而一定的脉冲数总是对应于一定的时间;而用作计数器使用时,输入的是单片机外部的脉冲信号。另外,定时/计数器是独立于CPU的器件,所以它可以和CPU同时工作,运行中并不占用CPU的时间。
1.定时功能:
T0或T1设定为定时器工作方式时,它对单片机内部机器周期计数,即每个机器周期使T0或T1的数值加1,直到计满溢出为止。一个机器周期等于12个振荡周期,所以若单片机晶体振荡频率是12MHz,那么最小的计时单位(每计1个数的时间,即1个机器周期)就是1^s。
2.计数功能:
T0或T1设定为计数器工作方式时,它通过单片机的引脚T0(P3.4)和T1(P3.5)对外部脉冲计数。当输入脉冲信号电平出现由高到低的下降沿时,计数器的数值加1,直到计满溢出。每个机器周期内只对外部脉冲采样一次,若前一个机器周期采样值为“1”,下次机器周期采样值为“0”,计数值才加1。因此,要采集到脉冲信号电平由高到低的下降沿,需要两个机器周期。由此可知,外部脉冲周期至少要等于2个机器周期,即24个振荡周期。或者说,外部脉冲频率不能高于晶体振荡频率的1/24。