定时/计数器 一、80C51定时/计数器 定时/计数器是 单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行 通信中波特率发生器。 (二) 定时/计数器的控制寄存器 ⒈ 定时/计数器控制寄存器TCON TCON | T1 中断标志 | T1 运行标志 | T0 中断标志 | T0 运行标志 | INT1 中断标志 | INT1 触发方式 | INT0 中断标志 | INT0 触发方式 | 位名称 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | 位地址 | 8FH | 8EH | 8DH | 8CH | 8BH | 8AH | 89H | 88H |
(1) TCON.7 TF1:定时器1溢出标志位。当定时器1计满数产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。 (2) TCON.6 TR1:定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。 (3) TCON.5 TF0:定时器0溢出标志位。其功能及操作情况同TF1。 (4) TCON.4 TR0:定时器0运行控制位。其功能及操作情况同TR1。 (5)其他四个在中断说明。 ⒉ 定时/计数器工作方式控制寄存器TMOD | | 门控位 | 计数/定时方式选择 | | 门控位 | 计数/定时方式选择 | | G | C / T | M1 | M0 | G | C / T | M1 | M0 | | | | | | | | |
⑴ M1M0 —— 工作方式选择位 M1M0 | 工作方式 | 功能 | 0 0 | 方式0 | 13位计数器 | 0 1 | 方式1 | 16位计数器 | 1 0 | 方式2 | 两个8位计数器,初值自动装入 | 1 1 | 方式3 | 两个8位计数器,仅适用T0 |
⑵ C/T —— 计数/定时方式选择位 C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。 C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。 ⑶ GATE —— 门控位 GATE=0,运行只受TCON中运行控制位TR0/TR1的控制。 GATE=1,运行同时受TR0/TR1和外中断输入信号的双重控制。只有当INT0/INT1=1且TR0/TR1=1,T0/T1才能运行。 TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。 (三). 定时/计数器工作方式 ⒈ 工作方式0 13位计数器,由TL0低5位和TH0高 8位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213 = 8192。 初值确定:TH0=(8192-5000)/32;TL0=(8192-5000)%32;进行5ms的延时。12M晶振。 ⒉ 工作方式1 16位计数器,最大计数值为216 = 65536。 初值确定:TH0=(65536-50000)/256;TL0=(65536-50000)%256;进行50ms的延时。12M晶振。 ⒊ 工作方式2 8位计数器,仅用TL0计数,最大计数值为28= 256,计满溢出后,一方面使溢出标志TF0 = 1;另一方面,使原来装在TH0中的初值装入TL0。 优点:定时初值可自动恢复;缺点:计数范围小。 适用于需要重复定时,而定时范围不大的应用场合。 初值确定:TH0=TL0=256-200进行200us的延时。12M晶振。 ⒋ 工作方式3 方式3仅适用于T0,T1无方式3。 ⑴ T0方式3 在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 ① TL0使用T0原有的控制寄存器资源:TF0,TR0,GATE,C/T,INT0,组成一个8位的定时/计数器; ② TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能对片内机周脉冲计数,组成另一个8位定时器(不能用作计数器)。 ⑵ T0方式3情况下的T1 T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。 (四)、定时/计数器的应用 ⒈ 定时器/计数器初始化的主要内容 (1) 选择工作方式:通过对方式寄存器TMOD进行设置 (2) 给定时器赋初值 (3) 根据需要设置中断控制字 (4) 启动定时器 1. 定时器/计数器初值设定方法 (1)根据定时长短,选择工作方式 (2)计算定时/计数初值 80C51定时/计数初值计算公式:
其中: N与工作方式有关: 方式0时,N=13;方式1时,N=16;方式2、3时,N=8。 机周时间与主振频率有关:机周时间=12/fosc,fosc=12MHZ时,1机周=1mS; fosc=6MHZ 时,1机周=2mS。
|