单片机定时器_51为例

计时器记录单片机外部发生的事情;而定时器是单片机自身提供的计数器 , 51单片机经过12分频后提供给单片机的只有1MHZ的脉冲 , 脉冲时间间隔1微秒 。MC51外接12M晶振(11.0592MHZ) , 12MHZ/12=1MHZ=1000000次/秒=1000000次/1000000微秒=1次/1微秒=1指令/1微秒 。晶体每震荡1次就产生1个脉冲 , 花费1微秒 , 执行一次指令 。
单片机中的时间概念就是根据脉冲数量得出来的 。1脉冲=1微秒=1机器周期=1指令 。
MCS-51单片机定时器/计数器的简单结构图:
 
8051有2个定时器T0、T1,分别由寄存器TL0,TH0和TH1,TL1构成 。作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;
计数器使用时:通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳变时,计数器的值就自动加1;计数器的最高频率一般是时钟振荡频率的1/24;
每个定时器/计数器工作模式有4种 。
在模式0、1和2时,T0和T1的工作模式相同;在模式3时,两个定时器/计数器的工作模式不同;
模式0:TL0低5位 , TH0全部8位构成13位计数器/定时器 。定时或计数脉冲个数加到TL0上,从预先设置的初值(时间常数)开始累加,不断递增1;当TL0计满后,向TH0进位,直到13位寄存器计满溢出;溢出时自动清零 , 切中断标记TF0置1;若需重新计数 , 则启动相关指令重置质检常数 , 且中断标记TF0置0;
 
模式1:
由TL0和TH1共同构成的16位计数器/定时器 。
 
工作模式3:
由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器;工作模式3的结构如下图:
 
四、定时器/计数器的定时/计数范围
工作方式0——13位定时器 / 计数器 工作 模式,最多可计数2的13次方 次,即:8192次,[0,8191];
工作方式1——16位定时器/计数器 工作 模式,最多可计数2的16次方 次,即:65536次,[0,65535];
工作方式2——8位定时器/计数器工作模式 , 计算次数最多为2^8,即256 , ,[0,255];
工作方式3——8位定时器/计数器工作模式  , 计算次数最多为2^8,即256 , ,[0,255];
预置数的计算公式:预置数=最大值-需要计数的次数;
五、计数/定时器的控制寄存器分别是TMOD H和TCON,它们都在特殊寄存器区;
1、工作模式控制寄存器TMOD(89h):
 
2、工作状态控制寄存器TCON(88H):
 
IT0:外部中断0触发控制位 , 1表示边沿 , 0表示电平;
IE0:外部中断申请标志位 , 1表示有;
EX0:外部中断0允许位 , 1表示允许 , 
ET0:定时/计数器0中断允许位 , 1表示允许溢出中断
六、定时器/计数器的初始化
注:由于8051单片机的定时器/计数器使用的时钟脉冲是外部晶振(12MHZ)经过12分频(12MHZ/12=1MHZ)之后的频率,所以,一个时钟脉冲就是1微秒;所以,8192个脉冲=8192微秒=8.192毫秒;65536个脉冲=65536微秒=65.536毫秒; 256个脉冲=256微秒=0.256毫秒;
1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);
2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);
3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;
【单片机定时器_51为例】4、启动定时器/计数器:TR0/TR1=1;

    推荐阅读