目录
免责声明:本文以STC89C52单片机为例
定时器功能
主要有三个功能
1.用于定时系统中,实现软件定时,使程序每隔一定时间完成一次操作
2. 取代长时间延迟,提高CPU效率和处理速度
3.实现多个任务的切换执行
定时器工作模式
51单片机定时器有四种工作模式
模式 0:13 位定时器/计数器
模式1:16位定时器/计数器(常用)
模式 2:8 位自动重载模式
模式 3:两个八位计数器
模式 1(常见)
定时器由三部分组成:时钟、计数单元、中断
以下是51单片机定时器方式1的内部电路图
如图所示,红色部分为它的时钟源和中断,其余部分为它的计数单元。
原理:可以看出图中TL0、TL1各占8位,时钟源每来一个脉冲,TL0就+1,当TL0存满后溢出到TH0。两个计数器一共有16位,可以计数2的16次方个数,也就是0~65535。当加到最大值时,TF0(TimerFlag)置1,请求中断,TL0、TH0置0。
定时器时钟源
时钟有两种,一种是系统时钟,一种是外部时钟(T0 Pin)。
SYSclk:系统时钟,即晶振周期,不同芯片的晶振频率不一样,51单片机的晶振频率为12MHz,所以它的时钟周期为晶振频率的倒数,即1/12us;
晶体振荡器:通电后产生固定频率的内部组件;
外部时钟:芯片的T0引脚连接外部晶振单元;
C/T:C代表计数器,T代表定时器,字母上方的横线代表低电平有效。简单来说这是一个寄存器,当这个寄存器配置为1时,实现计数器功能,当配置为0时,实现定时器功能。
从上图我们可以看出系统时钟有两种模式,一种是➗12,一种是➗6,就是分频,可以粗略理解为降低其晶振频率,➗12 表示频率变成 1MHz,产生的每个脉冲为 1us,同理,➗6 表示 2us,每个脉冲算一个数。
中断系统
CPU能实时处理外部紧急事件的系统。
当紧急事件触发时,CPU暂停当前工作来处理紧急事件,然后返回到被中断的地方继续工作。
当多个中断请求同时发生时,中断会有优先级,不同的CPU优先级数不同,高优先级中断可以打断低优先级中断,这个过程也叫中断嵌套。
定时器寄存器
图中是51单片机的相关寄存器,各个寄存器的详细配置暂时就不画出来了,具体请查阅芯片手册。
补充
这里补充一些模拟电子方面的知识,仍然以定时器模式1的电路图为例:
你可以看到,我用三个彩色框在图片中圈出了三个不同的东西。
红色框是NOT门
蓝色框是或门
绿色框是与门
实际使用
我们都知道寄存器是连接软件与硬件的媒介,使用时只要按照对应芯片手册对寄存器进行配置即可。