51手记之标准51(五)
MCS51内带有两个可编程16位定时/计数器T0和T1,定时/计数器计数脉冲源自单片机时钟时称定时器,计数器脉冲源自单片机P3.4或P3.5时称计数器。
结构:2个16位T/C分别有2个8位计数器TH0(TH1)、TL0(TL1)组成“+1”计数器
控制寄存器:TCON
方式寄存器:TMOD
1.工作原理
1)定时器
定时输入信号:内部振荡信号的1/12分频(每个机器周期做一次“+1”运算),若单片机晶振频率为12MHZ,则计数周期为1us,由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。
2)计数器
由外部引脚(T0为P3.4,T1为P3.5)输入计数脉冲,外部输入脉冲发生负跳变时,进行“+1”操作,外部输入脉冲宽度应大于2个机器周期;计数的最高频率一般为振荡频率的l/24。
2.工作方式
T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。
1)工作方式0
13位方式由TL0的低5位和TH0的8位构成13位计数器(TL0的高3位无效)。

定时器T0能否启动工作,还受到了TR0、GATE和引脚信号INT0的控制。由图中的逻辑电路可知,当GATE=0时,只要TR0=1就可打开控制门,使定时器工作;当GATE=1时,只有TR0=1且INT0=1,才可打开控制门。GATE,TR0,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT0则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TR0=1,打开T0;TR0=0,关闭T0。在特殊的应用场合,例如利用定时器测量接于INT0引脚上的外部脉冲高电平的宽度时,可使GATE=1,TR0=1。当外部脉冲出现上升沿,亦即INT0由0变1电平时,启动T0定时,测量开始;一旦外部脉冲出现下降沿,亦即INT0由l变O时就关闭了T1。定时器启动后,定时或计数脉冲加到TL0的低5位,从预先设置的初值(时间常数)开始不断增1。TL0计满后,向TH0进位。当TL0和TH0都计满之后,置位T1的定时器回零标志TF0,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。
定时初值==(213-(TH0,TL0))/f==(8192-(TH0,TL0))/f,f为计数脉冲频率
2)工作方式1

当T0为工作方式3时,TH0和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
2)工作方式1
16位方式,与工作方式0基本相同,区别仅在于工作方式1的计数器TL0和TH0组成16位计数器,从而比工作方式0有更宽的定时/计数范围。

定时初值==(216-(TH0,TL0))/f==(65536-(TH0,TL0))/f,f为计数脉冲频率
3)工作方式2
8位自动装入时间常数方式。由TL0构成8位计数器,TH0仅用来存放时间常数。

启动T0前,TL0和TH0装入相同的时间常数,当TL0计满后,除定时器回零标志TF0置位,具有向CPU请求中断的条件外,TH0中的时间常数还会自动地装入TL0,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。
定时初值==(28-(TL0))/f==(256-(TL0))/f,f为计数脉冲频率
4)工作方式3
2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。

通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
定时初值0==(28-(TL0))/f==(256-(TL0))/f,f为计数脉冲频率
定时初值1==(28-(TH0))/f==(256-(TH0))/f,f为计数脉冲频率


3.控制寄存器
定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。
1)定时器方式控制寄存器TMOD

TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:门控制位。其作用见图1.6。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自动装入时间常数方式)。
MlM0=11:工作方式3(2个8位方式--仅对T0)。
GATE:门控制位。其作用见图1.6。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自动装入时间常数方式)。
MlM0=11:工作方式3(2个8位方式--仅对T0)。
2)定时器控制寄存器TCON

TFl,TRl用于定时器T1;TF0,TR0用于定时器T0。两组符号有相同的含义。
TF:定时器/计数器中断请求标志位。当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。如对TF查询,定时器回零后,要用指令将TF清零。
TR:定时器/计数器开闭控制位。
IEl,ITl用于外部中断1(1NTl);IE0,IT0用于外部中断0(1NT0)。两组符号的含义相同。
IT:下跳沿/低电平引起外部中断请求的选择位。IT=1,由下跳沿引起;IT=0,由低电平引起。
IE:外部中断的中断申请标志。IE=0,表明无外部中断请求;IE=1,表明有外部中断请求。当有外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。
TF:定时器/计数器中断请求标志位。当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。如对TF查询,定时器回零后,要用指令将TF清零。
TR:定时器/计数器开闭控制位。
IEl,ITl用于外部中断1(1NTl);IE0,IT0用于外部中断0(1NT0)。两组符号的含义相同。
IT:下跳沿/低电平引起外部中断请求的选择位。IT=1,由下跳沿引起;IT=0,由低电平引起。
IE:外部中断的中断申请标志。IE=0,表明无外部中断请求;IE=1,表明有外部中断请求。当有外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。
评论