硬件结构
51有两个定时/计数器,即T0、T1;
T0由两个8位的寄存器TH0、TL0构成,字节地址为8CH、8AH;
T1由两个8位的寄存器TH1、TL1构成,字节地址为8DH、8BH;
定时计数器主要受方式寄存器 TMOD 和控制寄存器TCON的控制。方式寄存器TMOD用于设置定时器的工作方式,控制寄存器TCON用于启动和停止定时/计数器的计数,并控制定时器的工作状态。
进位标志(溢出):CY
寄存器TCON
TCON字节地址为 88H ,用于控制定时/计数器的启、停,标志定时器的溢出和中断情况。可按位寻址
高四位用于控制定时/计数器,低4为控制外部中断
TF1:T1 溢出标志位。当T1计数满溢出时,硬件将TF1置1,并申请中断。进入服务程序后,由硬件将TF1自动清0。
TR1:T1运行控制位。TR1=1,启动定时器。由软件控制。
TF0:T0溢出标志位,功能同TF1。
TR0:T0运行控制位。功能同TR1。
寄存器TMOD
字节地址为89H,不能按位寻址。高4位用于T1,低4位用于T0
M1、M0:工作方式选择位。
M1M0 = 00:方式0,13位定时/计数器,最大计数8192次;
M1M0 = 01:方式1,16位定时/计数器,最大计数65536次;
M1M0 = 10:方式2,8位自动重装定时/计数器,最大计数256次;
M1M0 = 11:方式3,把T0分为两个8位计数器,最大计数256;
C/T:定时器工作方式控制位。
C/T = 0:定时工作方式,脉冲来自单片机的内部;
C/T = 1:计数工作方式,脉冲由外部提供;
GATE:计数器工作方式控制位。
GATE = 0:计数器不受外部控制;
GATE = 1:计数器 T0 和 T1 分别受 P3.2 和 P3.3 引脚上的电平控制。当P3.2 (P3.3) 引脚为高电平时,置 TR0 (TR1) 为1,计数器T0 (T1)开始工作;反之停止工作。
THx、TLx赋值
计数模式:
计数N个:
方式0:THx =(8192-N)/32 ;TLx = (8192-N)%32。
方式1:THx = (65536-N)/256 ;TLx = (65536-N)%256。
方式2:THx = 256-N;TLx = 256-N。
定时模式:
定时 t ms:机器周期为T,T = 12/ f (Mhz) us
则计数个数为:N = t/T =t*12 / f *1000 ;
eg.晶振为12Mhz时,定时1ms,N = 1000;
方式0:THx =(8192-N)/32 ;TLx = (8192-N)%32。
方式1:THx = (65536-N)/256 ;TLx = (65536-N)%256。
方式2:THx = 256-N;TLx = 256-N。
方式3
方式3只适用于定时/计数器T0;将T0分成两个独立的8位定时/计数器TL0和TH0。
TL0为正常的8位定时/计数器,计数溢出后置位TF0,并向CPU申请中断,之后再重新装初值,占用TF0和TR0。
TH0 跟TL0差不多,不过占用的是 TF1 和 TR1 。