6.1 定时器/计数器的结构及工作原理 6.1.1 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
图6-1 AT89C51定时器/计数器逻辑结构图
6.1.2 定时器/计数器的工作原理 定时器/计数器是一个二进制的加1寄存器,当启动后就开始从所设定的计数初始值开始加1计数,寄存器计满回零时能自动产生溢出中断请求。但定时与计数两种模式下的计数方式却不相同,定时器模式时,每个机器周期寄存器增1,即寄存器对机器周期计数。
6.2 定时器/计数器的控制 6.2.1 方式控制寄存器 1.工作方式寄存器TMOD 6.2 定时器/计数器的控制 6.2.1 方式控制寄存器 1.工作方式寄存器TMOD 特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1,8位格式如图6-2所示。TMOD的地址为89H,其各位状态只能通过CPU的字节传送指令来设定而不能用位寻址指令改变,复位时各位状态为0。
图6-2 定时器方式控制寄存器TMOD格式 TMOD各位的控制功能说明如下: (1) M0、M1:工作方式控制位。 (2) C/ :模式控制选择位。 (3) GATE: 图6-2 定时器方式控制寄存器TMOD格式
表6-1 T0、T1工作方式选择 M1 M0 工作方式 计数器功能 方式0 13位计数器 1 方式1 16位计数器 方式2 方式0 13位计数器 1 方式1 16位计数器 方式2 自动重装初值的8位计数器 方式3 T0:分为两个8位独立计数器;T1:停止计数
2.定时器控制寄存器TCON TCON是一个8位寄存器,用于控制定时器的启动/停止以及标志定时器溢出中断申请。TCON的地址为88H,既可进行字节寻址又可进行位寻址。复位时所有位被清零。各位定义如图6-3所示。图中TR0和TR1分别用于控制T0和T1的启动与停止,TF0和TF1用于标志T0和T1是否产生了溢出中断请求,详细说明请参阅5.2节。
图6-3 定时器控制寄存器TCON各位定义
定时器/计数器T0和T1是在TMOD和TCON的联合控制下进行定时或计数工作的,其输入时钟和控制逻辑可用图6-4综合表示。
图6-4 T0和T1输入时钟与控制逻辑图
6.2.2 工作方式 1.工作方式0 方式0时,定时器/计数器被设置为一个13位的计数器,这13位由TH的高8位和TL中的低5位组成,其中TL中的高3位不用,如图6-5所示。
图6-5 定时器/计数器T0在方式0下的逻辑结构图
(1) 当C/ =0时,T0选择为定时器模式,对CPU内部机器周期加1计数,其定时时间为:T=(213-T0初值)×机器周期。 (2) 当C/ =0时,T0选择为计数器模式,对T0(P3.4)脚输入的外部电平信号由“1”到“0”的负跳变进行加1计数。 (3) 当GATE=0时,或门的另一输入信号 将不起作用,仅用TR0来控制T0的启动与停止。 (4) 当GATE=1时, 和TR0同时控制T0的启/停。只有当两者都为“1”时,定时器T0才能启动计数。
2.工作方式1 方式1时,定时器/计数器被设置为一个16位加1的计数器,该计数器由高8位TH和低8位TL组成。定时器/计数器在方式1下的工作情况与在方式0下时的基本相同,差别只是计数器的位数不同。 3.工作方式2 方式2时,定时器/计数器被设置成一个8位计数器TL0(或TL1)和一个具有计数初值重装功能的8位寄存器TH0(或TH1)。逻辑结构如图6-6所示。
图6-6 定时器/计数器T0在方式2下的逻辑结构图
4.工作方式3 定时器/计数器T0和T1在前三种工作方式下,其功能是完全相同的,但在方式3下,T0与T1的功能相差很大。当T1设置为方式3时,它将保持初始值不变,并停止计数,其状态相当于将启/停控制位设置成TR1=0,因而T1不能工作在方式3下。当将T0设置为方式3时,T0的两个寄存器TH0和TL0被分成两个互相独立的8位计数器,其逻辑结构如图6-7所示。
图6-7 定时器/计数器T0在方式3下的逻辑结构图