1.定时/计数器的基本原理
定时器的本质是计数器(对时钟脉冲计数),计数器则是对外来脉冲计数.
基本工作原理:
t = (计数器最大空间-计数初值) × 机器周期 = (2^n-a)×12/fosc (μs)
计数值N = (计数器满计数值 - 计数初值) = (2^n – a )
t与n、a、fosc三个因素有关,N与n、a两个因素有关
2.定时/计数器的结构
2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)——加1计数器
2个外部引脚T0(P3.4)和T1(P3.5)——接入外部脉冲
2个控制寄存器TCON和TMOD——管理计数器的运行
3.定时器/计数器的控制(重重重点)【背住】
(1)
(2)定时器控制寄存器——TCON
系统上电默认值为TCON = 0,则默认状态应为:TR0和TR1均为关闭状态、电平中断触发方式、没有外部中断请求
(3)定时器方式寄存器—TMOD
例 : 设置T0为定时器方式1,允许TR0启动;T1为计数器方式0,允许INT1启动。
则 TMOD = 1100 0001B =0xc1
系统上电默认值为TMOD = 0,则默认状态应为:T0和TI均为定时器方式0,允许TR0、TR1启动。
4.定时/计数器的工作方式(重点)
T0有4种工作方式,每种工作方式都有定时和计数2种方式。
T1只有3种工作方式(T0的方式3中占用了T1的部分资源)。
(1)方式1(01)——使用16位定时/计数器(THx+TLx)
定时时间:t = (2^16- a)×12/fosc (μs)
最大定时时间(a=0,fosc =12MHz):t = 216(s) = 65536 (μs)
计数值: N = (2^16 – a )
最大计数值:N = 65536 (脉冲)
实例1 设单片机的fosc=12MHz,采用T0定时方式1在P1.0脚上输出周期为2ms的方波。
TH0高八位;TL0低八位
(2)方式2(10)——8位计数器
延时时间 t = (2^8-a)×12/fosc (微秒) → 12MHz时的最大定时量为256μs
可自动重装载计数初值(TLx溢出后, THx数值可自动装入TLx)
实例2 采用T0定时方式2在P1.0口输出周期为0.5ms的方波(设fosc=12MHz)
(3)方式0——13位定时/计数器(THi7-0+TLi4-0)
定时时间 t = (2^13 - a)×12/fosc (μs)
计数初值 a = 2^13 - t×fosc/12
12MHz时的最大定时量t=2^13μs = 8.192ms
(4)方式3
搞懂
使用定时/计数器的步骤
(1)设置TMOD——确定定时/计数器的工作状态
(2)计算计数初值——产生期望的定时间隔
计数初值 a = 216- t×fosc/12 (t ≤65536 μs)
装载计数初值:THx = a / 256 TLx = a % 256
(3)确定采用何种方式处理溢出结果
(4)启动定时器:TR0 = 1 或 TR1= 1
(5)进行定时或计数结束后的其它工作
(6)为下次定时/计数做准备(清TFx标志+重装载计数初值)
若是中断方式,则无需软件清TFx标志位;
若是查询方式,需要软件清除TFx标志位。