这篇文章,我们对51单片机的定时器0和定时器1的寄存器和功能进行介绍。
1 定时器/计数器工作方式寄存器TMOD
定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器T0和T1的工作方式及功能选择,单片机复位时,TMOD全部被清0,TMOD寄存器的定义如下。
定时器/计数器工作方式寄存器TMOD
这个寄存器的高4位用来设置定时器T1,低4位用来设置定时器T0。
GATE—门控制位。
GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRx位来控制。
GATE=1,定时器/计数器启动与停止由TCON寄存器中TRx位和外边中断引脚(INT0或INT1)上的电平状态来共同控制。
C/T—定时器模式和计数器模式选择位。
C/T=0,定时器模式。
C/T=1,计数器模式。
M1:M0—工作方式选择位。
每个定时器/计数器由4中工作方式,他们由M1和M0设定,对应关系如下表所示。
定时器/计数器的4种工作方式
M1 |
M0 |
工作方式 |
0 |
0 |
方式0:13位定时器/计数器 |
0 |
1 |
方式1:16位定时器/计数器 |
1 |
0 |
方式2:8位初始值自动重置的8位定时器/计数器 |
1 |
1 |
方式3:仅适用于T0,分成两个8位计数器,T1停止计数 |
关于这4中工作方式,我们在介绍完TCON寄存器之后再进行介绍。
2 定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别为88H~8FH,该寄存器可以进行位寻址。TCON寄存器用来控制定时器的启、停,标志定时器的溢出和中断情况。单片机复位时TCON全部清0。这个寄存器的给位定义如下表所示。其中TF1、TR1、TF0和TR0位用于定时器/计数器的设置。IE1、IT1、IE0和IT0位用于外部中断的设置。
定时器/计数器控制寄存器TCON
位序号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符号 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
TF1—定时器1溢出标志位。
当定时器1计满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0。需要注意的是,如果使用定时器的中断,那么该位完全不用人为去操作,但是如果使用软件查询的方式的话,当查询到该位置1后,就必须用软件清0。
TR1—定时器1运行控制位。
由软件清0关闭定时器1。当GATE=1时,INT1为高电平且TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1。
TF0—定时器0溢出标志位。
该位与TF1功能和操作方法相同。
TR0—定时器0运行控制位。
该位与TR1功能和操作方法相同。
IE1—外部中断1请求标志。
当IT1=0时,外部中断INT1为电平触发方式,每个机器周期采用INT1引脚,若INT1引脚为低电平,则置1,否则IE1清0。
当IT1=1时,外部中断INT1为边沿触发方式,当采集到INT1由高电平向低电平的跳变时则将IE1置1。IE1=1表示外部中断1正向CPU申请中断。当CPU响应中断转向中断服务程序时,该位由硬件清0。
IT1—外部中断1触发方式选择位。
IT1=0,电平触发方式,引脚INT1上低电平触发中断。
IT0=1,边沿触发方式,引脚INT1上由高电平向低电平的跳变触发中断。
IE0—外部中断0请求标志。
这一位的用法与IE1相同。
IT0—外部中断0触发方式选择位。
这一位的用法与IT1相同。
3 定时器的4种工作方式
(1)方式0
下图为定时器工作在方式0下的原理图。
在此方式下,定时器配置为13位计数器,由TLn的低5位和THn的8位构成。TLn的低5位溢出时向THn进位。THn计数溢出置位TCON中的溢出标志位TFn(n=0,1)。当GATE=0时,如果TRn=1,则定时器计数。当GATE=1时,允许由外部输入INT1控制定时器1,INT0控制定时器0。这样可以实现脉宽测量。方式0的操作对于定时器0和定时器1都是相同的。
(2)方式1
方式1的工作原理如下图所示。方式1与方式0相比,除了使用了THn和TLn的全部16位外,其它用法与方式0完全相同。
(3)方式2
方式2的工作原理如下图所示。
在这种方式下,定时器/计数器0和1作为可自动重新装载的8位计数器(TLn),TLn用来计数,TLn的溢出,不仅置位TFn,而且将THn的内容重新装入TLn,THn内容由软件预置,重装时THn内容不变。方式2的操作对于定时器0和定时器1也都是相同的。
(4)方式3
对于定时器1,在方式3时,定时器1停止计数。
对于定时器0,在此方式下,定时器0的TL0和TH0作为2个独立的8位计数器。下图为方式3时定时器的原理图。TL0占用定时器0的控制位,包括C/T 、GATE、TR0和TF0以及INT0输入引脚。而TH0限定为定时器功能,不能用作计数器。TH0占用了定时器1的TR1和TF1。此时TH0控制定时器1中断。
方式3是为了增加一个附加的8位定时器/计数器而提供的。使单片机具有三个定时器/计数器。方式3只是用于定时器/计数器0,定时器T1处于方式3时相当于TR1=0,停止计数(此时T1可用来做串行口波特率发生器)。而T0可作为两个定时器用。