目录
定时/计数器应用范围
定时/计数器概述
定时/计数器的结构和工作原理
定时/计数器的结构:
定时/计数器的工作原理:
定时/计数器的控制寄存器
定时/计数器方式寄存器TMOD
定时/计数器控制寄存器TCON
定时/计数器的四种工作方式
方式0
方式1
方式2
方式3
总结:
定时/计数器的应用
计算定时/计数初值
定时/计数器应用步骤
定时/计数器的案例分析(见下一篇,尽请期待!!!)
定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。
8051单片机内部有两个16位的可编程定时/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。其逻辑结构如下图所示:
可用一个简单的框图构造它的模型 :N位计数器构成了电路的核心。定时和计数两种方式的区别在于计数器的脉冲来源.初值寄存器是用来设定“定时/计数的具体参数”
注:
(1) 何时控制启动计数? 启动控制(TR)
(2) 如何控制定时还是计数? 定时/计数控制C/T来控制(后面会介绍)
(3) 如何控制定时/计数的长短? N位初值寄存器(设定初值)
参与定时器/计数器管理的SFR有TMOD和TCON
高4位控制T1 |
低4位控制T0 |
||||||
---|---|---|---|---|---|---|---|
门控位 |
计数/定时 方式选择 |
工作方式 选择 |
门控位 |
计数/定时 方式选择 |
工作方式 选择 |
||
G |
C / T |
M1 |
M0 |
G |
C / T |
M1 |
M0 |
M1-M0:工作方式的选择位
M1M0 |
工作方式 |
功能 |
---|---|---|
00 |
方式0 |
13位计数器 |
01 |
方式1 |
16位计数器 |
10 |
方式2 |
两个8位计数器,初值自动装入 |
11 |
方式3 |
两个8位计数器,仅适用T0 |
C/T:计数/定时方式选择位
GATE:门控位
注:TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。
eg:TMOD=0XA6 0XA6 --->1010 0110 说明:高四位(T1双重控制,定时工作方式,并且为方式2)低四位(T0只 受TCON中运行控制位TR0/TR1的控制,计数工作方式,并且方式2)
说明:不管是定时还是计数工作方式,定时器T0或T1在对内部时钟或外部脉冲计数时,不占用CPU时间,除非产生溢出时才可能中断CPU的当前操作。
TCON |
T1 中断标志 |
T1 运行标志 |
T0 中断标志 |
T0 运行 标志 |
INT1 中断 标志 |
INT1 触发 方式 |
INT0 中断 标志 |
INT0 触发 方式 |
---|---|---|---|---|---|---|---|---|
位名称 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
TCON低4位与外中断INT1,INT0有关,已在中断中叙述。不清楚可以查看上一篇blog(单片机(AT89C51)中断系统详解和中断系统应用实验)
高4位与定时/计数器T0、T1有关。
⑴ TF1: 定时/计数器T1溢出(中断)标志。
⑵ TF0: 定时/计数器T0溢出(中断)标志。
⑶ TR1: 定时/计数器T1运行控制位。TR1=1,T1运行; TR1=0,T1停止。
⑷ TR0: 定时/计数器T0运行控制位。TR0=1,T0运行; TR0=0,T0停止。
注:TCON的字节地址为88H,每一位有位地址,均可位操作。
在TMOD的M1-M0中已经提到,现在对此进行深入的探讨
当TMOD中的M0=0,M1=0时,为13位计数或定时方式。其中 TLi 使用低5位。
当TMOD中的M0=1,M1=0时,为16位计数或定时方式。
当TMOD中的M0=0,M1=1时,为8位自动重装初值计数或定时方式。
在方式2时,将16位计数器分成两个8位的计数器,THi 用来存放初值,当计数器溢出时,一方面将TFi置1,申请中断,一方面自动将TH的值装入TL。
T0 在方式3下时,T1作为波特率发生器,T1的控制位TF1、TR1出借给T0使用,而T0则构成两个独立的结构,其中TL0构成一个完整的8位定时器/计数器,而TH0则是一个仅能对晶振频率12分频的定时器。
T1作波特率发生器时,可以设置成方式0、1或2,用在任何不需要中断控制的场合。一般作波特率时常设成方式2的自动重装模式。
M1M0 |
方式 |
计 数 器 配 置 |
0 0 |
0 |
TLx低5位与THx的8位构成13位计数器 |
0 1 |
1 |
TLx与THx构成16位计数器 |
1 0 |
2 |
自动重装初值(THx)的8位(TLx溢出时)计数器 |
1 1 |
3 |
仅用于T0,分成两个8位计数器,T1停止计数 |
其中:
N与工作方式有关: 方式0时,N=13; 方式1时,N=16; 方式2、3时,N=8。
机周时间与主振频率有关:机周时间=12/fosc eg:fosc=12MHZ时,1机周=1uS; fosc=6MHZ 时,1机周=2uS
例:定时器工作方式0,晶振频率6MHz,定时1ms,初值为?
T=2^13-1ms/2us= 8192-500=7692=1 1110 0000 1100 所以:TLi(低五位)=01100 THi(高八位)=11110000
工作方式1,频率12MHz,定时25ms,初值为?
T=2^16-25ms/1us=65536-25000=9E58 所以:TLi(低八位)=0101 1000 THi(高八位)=1001 1110
晶振频率12MHz时,工作方式2的最长定时时间为多少毫秒?四种工作方式最长定时时间分别为多少毫秒?
工作方式2,3--->八位 最长时间=1us*2^8=0.256ms
工作方式1 ---->16位 最长时间=1us*2^16=65.536ms
工作方式0 ---->13位 最长时间=1us*2^13=8.192ms
⑴ 合理选择定时/计数器工作方式
⑵ 计算定时/计数器定时初值(按上述公式计算)
⑶ 编制应用程序
①定时/计数器的初始化
包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。
②正确编制定时/计数器中断服务程序
注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。