定时器
定时器作用
(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
(2)替代长时间的Delay,提高CPU的运行效率和处理速度
注:Delay是单片机程序中常用的延迟函数。
· 定时器会根据时钟的输出信号,每隔一段时间使计数单元的数值加一,当计数单元的数值达到我们所定的数值是,就会触发中断系统。
定时器的常用模式
16位
TL和TH:表示计数系统能计两个字节,高字节是TH,低字节是TL, 0表示定时器0。
总共可以存65535这么大的数。
Q:那么计数系统如何工作呢?
A:时钟每隔一段时间会给计数单元一个脉冲,这16计数器的值就会+1。
Q:如果加满了,即计数单元数值达到65535会产生什么?
A:数值溢出,计数器回到0的位置,即又回到最初的起点~。数值满的时候,由TF0(中断系统处)向中断系统申请中断。
时钟: SYSclk:系统时钟,即晶振周期,本开发板上的晶振为12MHz。
T0 Pin:是单片机一个外部接口(在原理图CPU处可见)。
常用的是SYSclk,定时器会将12M进行分频,看一下上面的图,如果是12T分频就是将12M进行12分频,则输出的频率就是1MHz,1MHz对应的时间周期就是1微秒。即计数单元每1微秒就要计一次数。
中断系统
中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
比如说你明天早上八点开会,你定一个八点的闹钟,等闹钟响了你就知道要去开会了,这时候你就要放下手中的事情去开会,开完会回来你就会继续干刚才的事情。
Q:如果同时有好几件事情需要你放下手中的工作呢?
A:那就要自己划分轻重缓急将这几件事情进行排队,单片机的CPU总是先响应优先级最高的中断请求。
Q:如果CPU在执行一个中断请求时,突然出现另一个比它优先级要高的中断请求怎么办?
A:这么说吧,比如你在喝茶视为一个中断,这时你的老板让你帮忙买东西,你肯定要觉得老板的这个中断请求要比你这个喝茶的中断优先级要高,所以你肯定要先去处理老板的要求,返回来再继续工作。 在CPU中这叫做中断嵌套。 即高优先级中断可以打断低优先级中断。
中断执行顺序如下:
注:一般现在的51单片机把优先级分为四个等级,中断源可以有8个。
中断号
寄存器
单片机通过配置寄存器来控制内部线路的连接,通过内部线路不同连接方式来实现不同电路,不同电路完成不同的功能。
因此我们写关于定时器的代码主要关注寄存器
下面是一些主要的寄存器:
寄存器详解
接下来就是从单片机手册中截取的寄存器解释以及用法
注:因为我们通常使用16位定时器,所以要把M1、M0设置为0 1