单片机成长之路(51基础篇) - 014 定时器/计数器
一.定时器的结构
定时器功能由TO和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。内部通过总线与CPU相连。定时器T0和T1各由2个8位特殊功能寄存器TH0,TL0与TH1,TL1构成。工作方式寄存器TMOD用于设置定时器的工作模式和工作方式。控制寄存器TCON用于启动和停止定时器的计数,并控制定时器的状态。定时器的工作方式、启动、停止、溢出标志、计数器等都是可编程的,通过设置寄存器TMOD,TCON,TH0,TL0,TH1和TL1实现。TH0和TL0存放定时器T0的初值或计数结果。TH0存放高8位,TL0存放低8位;TH1和TL1存放定时器T1的初值或计数结果。TH1存放高8位,TL1存放低8位。
二. MCS-51单片机控制字详解–TMOD T2MOD
1.工作方式寄存器TMOD
TMOD(89H)格式如图:
位序
|
B7
|
B6
|
B5
|
B4
|
B3
|
B2
|
B1
|
B0
|
位符号
|
GATE
|
C/T
|
M1
|
M0
|
GATE
|
C/T
|
M1
|
M0
|
(1)GATE为门控位。
GATE=0时,定时器的启动不受到外部中断请求信号的影响。一般情况下GATE=0。
GATE=1时,T0的启动受INT0端口(P3.2引脚)信号控制,T1的启动受T1端口(P3.3引脚)信号控制,只有当外部中断信号NT0和NT1为高电平的时,才能启动定时器。
(2)M1,MO为工作方式选择位。
(3)C/T为计数器模式和定时器模式选择位。
C/T=0时(内部时钟计数器),定时器模式。
C/T=1时(外部电平计数器),计数器模式。
2.特殊功能寄存器TCON
TCON格式
位地址 |
8F |
8E |
8D |
8C |
8B |
8A |
89 |
88 |
位符号 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
低4位中断有关,高4位的功能如下:
(1)TF1,TF0为计数溢出标志位。
定时器T0或T1计数溢出时,由硬件自动将此位置1。
TFx可以由程序查询,也是定时中断的请求源。
(2)TR1,TR0为计数运行控制位。
TRx=1时,启动定时器/计数器工作。
TRx=0时,停止定时器/计数器工作。
定时器工作方式
MCS-51的定时器T0有4种工作方式,即方式0、方式1、方式2、方式3。
MCS-51的定时器T1有3种工作方式,即方式0、方式1、方式2。
1.方式0
在这种方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位组成。TL1的高3位不定。
方式0定时时间为
(213-初值)×振荡周期×12
例如,若晶振频率为12MHz,则最长的定时时间为(28-0)×(1/12)×12us=8.191msA
2.方式1
在这种方式下,16位寄存器TH1和TL1为16位的计数器,除位数外,其他与方式0相同。
方式1定时时间为
(216-初值)×振荡周期×12
例如,若晶振频率为12MHz,则最长的定时时间为
(26-0)×(1/12)×12uS=65.536ms
3.方式2
THx作为常数缓冲器,当TLx计数溢出时,在置1溢出标志TFx的同时,还自动的将THx中的初值送至TLx,使TLX从初值开始重新计数。
方式2定时时间为
(28-初值)×振荡周期×12
例如,若晶振频率为12MHz,则最长的定时时间为
(22-0)×(1/12)×121S=0.256ms
4.方式3
T0在方式3时被拆成2个独立的8位计数器,即TH0和TL0。
当T0处于方式3时,T1仍可设置为方式0、方式1和方式2。由于TR1,TF1和T1的中断源都已被定时器TO占用,所以定时器T1仅有控制位C/T来决定其工作在定时方式或计数方式。当计数器计满溢出时,不能置位TF1,而只能将输出送往串口。所以,此时定时器T1一般用作串口的波特率发生器,或不需要中断的场合。
定时器编程步骤
MCS-51单片机的定时器/计数器是可编程的,具体步骤如下。
(1)对TMOD赋值,以确定定时器的工作模式。
计算初值的方法如下。
设计数器的最大值为M,则置入的初值X为:计数方式X=M一计数值
定时方式由(M-X)T=定时值,得X=M-定时值/T
T为计数周期,是单片机的机器周期。
方式1时,M=216=65536。方式2和3时,M=20=256。
例如:机器时钟频率为12MHz,机器周期为1us时。
若工作在方式0,则最大定时值为23×1us=8.192ms。
若工作在方式1,则最大定时值为216×1us=65.536ms。
(2)置定时/计数器初值,直接将初值写入寄存器的THO,TLO或TH1,TL1。
(3)对TCON寄存器中的TRO或TR1置位,启动定时/计数器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。
(4)查询溢出标志TFx的状态,决定是否停止定时/计数器。