一、简介
定时器实际上就是Soc当中的一个内部外设。定时器常与计数器扯到一起,计数器也是Soc当中的一个内部外设,计数器顾名思义是用来计数的,就和我们的秒表一样,秒表实际上就是一个计数器,每隔一个单位走一个格(就是计一个数),因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值*计数时间周期,就能得到一个时间段,这个时间段就是我们定的时间(这就是定时器了)。计数器和定时器其实是一回事。
二、定时器的原理
定时器计时其实是通过计数来实现的。定时器内部有一个计数器,每隔一个时钟周期,计数器就计数一次,定时器的时间就是计数器计数值x时钟周期。
- 振荡周期:为单片机提供定时信号的振荡源周期。
- 状态周期:2个振荡周期为一个状态周期。
- 机器周期:一个机器周期包含六个状态周期,十二个振荡周期。
- 指令周期:完成一条指令所占用的全部时间
三、51单片机的定时器
STC89C52有三个16位定时器,T0、T1、T2,单片机内的定时器和CPU是相互独立的,互不影响,所以它们的执行不需要CPU的参与,而软件延迟利用若干次空循环实现,占用CPU。
四、内部结构
定时/计数器的实质是加一计数器(16位),由高8位和低八位两个寄存器TH和TL组成,TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0,T1的启动和停止及设置溢出标志位。
五、定时器/计数器0和1的相关寄存器
1、定时器/计数器控制寄存器TCON
TCON为定时器/计数器TO、T1的控制寄存器,同时也锁存TO、T1溢出中断源和外部请求中断源等,TCON格式如下:
TF1:定时器/计数器T1溢出标志。T1被允许计数以后,从初值开始加1计数。当最高位产生溢出时由硬件置“1”TF1,向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”TF1 (TF1也可由程序查询清“0”)。
TR1:定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7) =O,TR1=