51 单片机定时器原理及相关器件
定时器
定时器作用
(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
版权声明: 本文为 InfoQ 作者【孤衫】的原创文章。
原文链接:【http://xie.infoq.cn/article/b2616bb8c307de14fa15ed114】。文章转载请联系作者。
评论