单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝,因此,单片机中的和计数器其实是同一个物理的,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的部件;MCS-51单片机的晶振经过12分频之后提供给单片机稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的。加1计数器输入的计数脉冲有两个来源,一个是由系统的输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。 作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;所以,定时器的分辨率是时钟振荡频率的1/12; 作为计数器使用时,通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2微秒。;计数器的最高频率一般是时钟振荡频率的1/24; 由此可知,不论是定时器还是计数器工作方式,定时器T0和T1均不占用CPU的时间,除非定时器/计数器T0和T1溢出,才可能引起CPU中断,转而去执行中断处理程序。所以说,定时器/计数器是单片机中效率高而工作灵活的部件。 51单片机定时器工作原理图:
由上图可见与定时器相关的寄存器主要有下面这几个:TMOD、 TCON、 TL0、TH0、TL1、TH1。下面介绍一下这几个寄存器 16位加法计数器:
是定时计数器的核心,其中 TL0、TH0、是定时计数器0的底八位和高八位;TL1、TH1是定时计数器1的底八位和高八位;并且高八位和底八位可单独使用。16位加法计数器主要是在设置定时计数器的初值时候使用 TMOD定时器工作模式及方式寄存器
GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。 C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。 M1 M0:T0、T1工作模式选择位
TCON定时器控制寄存器
TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。 TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。 TR1:T1充许计数控制位,为1时充许T1计数(定时)。 TR0:T0充许计数控制位,为1时充许T0计数(定时)。 IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。 IT1:外部中断源1触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。 IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。 IT0:外部中断源0触发方式控制位。此位为1设置为底电平触发,为0设置为下降沿触发。
|