51单片机总结之定时器
来源:互联网 发布:mac照片如何复制粘贴 编辑:程序博客网 时间:2024/05/05 05:48
1.引言
我开始看单片机的书籍比较早,只有C语言基础而没有数电基础(不知道要学),所以我在很多地方概念都是模模糊糊的。尤其是什么控制位什么寄存器什么逻辑电路都不懂,只纯粹的想写C语言操作单片机就行了。现在有了一定的基础,发现了很多以前知其然不知其所以然的东西,所以在这里稍微的总结一下,同时我想可能对基础不扎实的同学有一定的帮助(其实我基础也不扎实~嘻嘻)。
2.定时器的控制寄存器
对硬件(单片机)的操作,从本质上将就是对寄存器的操作。一个寄存器通常是1字节,即8位。每一位(bit)可以联想成一个开关,打开这个开关就能做一件事,关闭这个开关就能停止做一件事。
8051系列的单片机中定时器由两个寄存器控制,这两个寄存器名称分别是TMOD(Time Mode,工作方式寄存器)和TCON(Time Configuration,控制寄存器)。因为这些寄存器是操作单片机中定时器的,有特殊功能作用,所以属于特殊功能寄存器而不是通用寄存器。另外想要记住这两个寄存器的名称也很简单,用英文全称来记忆。
下面先对两个控制寄存器各个位进行总结:
2.1 工作方式寄存器(TMOD)
51单片机有两个定时器,其中TMOD的高四位控制定时器1,低四位控制定时器0。
2.1.1 门控位(GATE)
我初学的时候没有用到这个位,不过我还是简单对它总结一下吧:
可以通过编程对这个位置1或清零。
当GATE = 0时,只要使TCON中的TR0或TR1置1,就可以启动定时器了。
当GATE = 1时,除了使TCON中的TR0和TR1置1以外,还需要外部中断INT0或INT1为高电平,才能启动定时器。即比GATE = 0时多一个启动条件。
2.1.2 定时/计数模式选择位(C/T)
其中C的英文全称是Count,意思是计数器。T是Timer,定时器。置1为选择计数器工作模式,置0为选择定时器工作模式。(T上面应该画一横的,表示低电平有效)。
当C/T = 0时,为定时模式。此时定时器计数的时间是一个机器周期,一个机器周期的时间长度和晶振频率有关。大家都知道周期T和频率f是互为倒数的关系。而知道了晶振频率fosc后,还要除以12(硬件内部结构12分频的结果),它的倒数就是一个机器周期。即如果单片机采用12MHz的晶振,那么机器周期就是1微秒。
每经过一个机器周期,定时器的数值就会加1,直到计数器产生溢出,最后产生中断执行自己写的程序,这个程序就是你想让单片机计数结束后做什么的程序。
当C/T = 1时,为计数模式,这里不详细总结了。
另外上电复位后,这里的控制位默认是0,即定时模式。
2.1.3 工作方式选择(M1和M2)
2.1.4 注意事项
TMOD不能单独对一个位置1或清零。只能一个字节的写入TCOM设置定时器。
另外,CPU复位时TCOM所有的位都清零。
2.2 控制寄存器(TCON)
这里主要关注TCON高四位,低四位是和外部中断有关的控制位。
2.2.1 溢出中断请求标志位(TFn)
标题上的TFn中的n表示0或1,即溢出中断请求标志位分别有TF0和TF1。TF的英文全称是Timer overflow Flag,即定时器溢出标志位。
当定时器Tn(n=0、1)计数溢出后,相应的TFn由硬件自动置1,然后向CPU申请中断,执行中断程序。
CPU响应中断后,硬件自动对TFn清零。
另外,TFn也可以在程序中置1或清零。
2.2.2 定时器运行控制位(TRn)
TR的英文全称是Timer Run,即定时器运行(控制位)。
当TRn = 1时,定时器n运行;
当TRn = 0是,定时器n停止。
3.定时器的结构
知道了如何控制定时器之后,现在再来看一下定时器的结构。
定时器的实质是加一计数器(16位),由高8位和低8位两个寄存器组成(THn和TLn)。
不同工作方式(M1M0控制),THn和TLn也有不同的功能。我最常用的是使用工作方式1——16位定时器。所以也只是稍微总结一下,因为足够用了,能做很多事情了。
在这个工作方式下,THn和TLn合起来作为16位计数器。由TLn作为低8位,THn作为高8位(因为L是low,H为High)。当16位计数器溢出时,TFn置1。然后产生中断,进入并执行中断程序。
若使用12MHZ的晶振,定时器每加1则需要1微秒时间,如果把THn和THn都置为00H,当定时器溢出并产生中断的时候,就已经过了65536微秒(2^13次方微秒)。
- 51单片机总结之定时器
- 51单片机定时器总结
- 单片机之定时器知识点总结
- 51单片机之定时器
- 51单片机定时器计数器中断总结
- 51单片机定时器计数器中断总结
- 单片机之定时器
- 51单片机定时器实验
- 51单片机(AT89C52)定时器
- 51单片机定时器
- 51单片机定时器详解
- 51单片机定时器
- 51单片机-定时器/计数器
- 51单片机定时器资料
- 51单片机定时器/计数器
- 51单片机定时器
- 单片机之定时器练习题3
- msp430单片机之定时器模块
- 显示用户权限
- 理解 T4 模板:<#@ parameter #> 指令
- TableLayout中的特殊属性
- RTP/RTCP(一)-H264关于RTP协议的实现
- fork - 利用信号在父子进程间传递指针的实验
- 51单片机总结之定时器
- 在访问 Internet Explorer 中的网页时,为什么收到"中止操作"错误消息?
- UML 基础:类图
- QT中线程及其同步的用法
- 你必须懂的 T4 模板:深入浅出
- 修改指定用户权限
- 内核Kbuild-Makefile-Kconfig之间的关系
- java classpath: what does it mean?
- 优秀的开发者博文