0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机定时器使用时非常重要的6点经验详细的总结

2oON_changxuemc 来源:未知 作者:易水寒 2018-07-01 09:17 次阅读

单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个:

1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。

理解是最好的记忆方法。好的教材一定会给出所有英文缩写的原形。

2. 尽量用形像的方法记忆。

比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像。

3. TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)

定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。其格式为:其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1,各位的说明:

(1)GATE——门控制。

GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。

当INT0引脚为高电平时TR0置位,启动定时器T0;

当INT1引脚为高电平时TR1置位,启动定时器T1。

GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

(2)C/T——功能选择位

C/T=0时为定时功能,C/T=1时为计数功能。

置位时选择计数功能,清零时选择定时功能。

(3)M0、M1——方式选择功能

由于有2位,因此有4种工作方式:

M1M0 工作方式 计数器模式 TMOD(设置定时器模式)

0 0 方式0 13位计数器 TMOD=0x00

0 1 方式1 16位计数器 TMOD=0x01

1 0 方式2 自动重装8位计数器 TMOD=0x02

1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03

单片机定时器0设置为工作方式1为TMOD=0x01

这里我们一定要知道,TMOD的T是TIMER/COUNTER的意思,MOD是MODE的意思。至于每位上的功能,你只要记住图表,并知道每个英文缩写的原型就可以了。

在程序中用到TMOD时,先立即回忆图表,并根据缩写的单词原形理出每位的意义,如果意义不是很清楚,就查下手册,几次下来,TMOD的图表就已经在脑子里了。

8位 GATE位,本身是门的意思。

7位 C/T Counter/Timer

6位 M1 Mode 1

5位 M0 Mode 0

4. TCON: 定时器/计数器控制寄存器(TIMER/COUNTER CONTROL REGISTER)

TMOD分成2段,TCON控制更加精细,分成四段,在本文中只要用到高四段。

TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。

(1)TR0(TR1)——定时器运行控制位

当TR0(TR1)=0 停止定时器/计数器工作

当TR0(TR1)=1 启动定时器/计数器工作

(2)IE0(IE1)——外中断请求标志位

CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。

(3)IT0(IT1)——外中断请求信号方式控制位

当IT0(IT1)=1 脉冲方式(后沿负跳有效)

当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。

(4)TF0(TF1)——计数溢出标志位

当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。注意记忆方法,理解单词原形,就绝对不会把TF和TR搞混。TF的F也就是溢出Over Flow的F。TR的R就是运行Run。默认是0不运行,当然要置1才运行。

5. STC单片机STC89C52RC定时器延时时间的计算

延时时间要根据晶振频率计算,不同板子可能有所不同。

时钟周期:

1/时钟源,晶振频率是11.0592M,那么时钟周期就是 1/11059200秒

机器周期:

一般51单片机是12个时钟周期,也就是 12/11059200秒

单次定时最长时间:

如果是16位的计数器,16位最大值是65535,共可计数65536次。基本的常数一定要记住,还要记住8位最大值是255,共可计数256次,还要记住8位上每位代表的数值。

12 * 65536/11059200 = 0.0711 s,也就是,71 ms内的定时可以单次定时就完成。如果定时时间超过71 ms,就要循环了。

一次定时需要几次机器周期:

计算公式:定时秒数/机器周期

比如要定时1秒, 1/(12/11059200)= 921600次,16位计数器最大可计数65536次,921600次早就益出了。我们可以每次定时10 ms,循环100次就可以定时1秒了,1 s缩小100百倍就是10 ms, 也就是每次需要计数9216次。

确实计数器初始值:

定时10 ms时,如果计数器从0开始计数,就不知道什么时候到了9216次。所以应该计数了9216次,16位计数器最多计数95536次,然后就溢出,一溢出TCON的TF位就会置1,只要经常检测TF位就可以知道什么时候完成10ms的定时了。

计算公式:计数器初始值=最大计数次数 - 需要计数次数

如果定时10 ms,计数器的初始值就是 65536 - 9216

计算计数器的高位和低位:

16位的计数器,也就是两个8位组成,8位的最大计数次数是256。所以:

计数器高位 = 初始值/256

计数器低位 = 初始值%6

6.STC89C52RC单片机定时器示例代码:

51单片机定时器使用时非常重要的6点经验详细的总结

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 51单片机
    +关注

    关注

    273

    文章

    5697

    浏览量

    123042
  • C语言
    +关注

    关注

    180

    文章

    7596

    浏览量

    135954
  • 定时器
    +关注

    关注

    23

    文章

    3234

    浏览量

    114371

原文标题:51单片机定时器使用经验总结

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于51单片机中断与定时器的知识总结的太棒了

    关于51单片机中断与定时器的知识总结的太棒了
    发表于 10-08 08:52

    基于51单片机定时器2的操作与实现

    基于51单片机定时器2的操作与实现,51单片机定时器2的使用!
    发表于 02-22 17:53 12次下载

    51单片机定时器寄存器设置及应用详细

    51单片机定时器寄存器设置及应用详细
    发表于 03-28 16:46 7次下载

    51单片机课件定时器

    51单片机课件定时器
    发表于 05-10 11:24 3次下载

    52单片机有几个定时器?52单片机定时器1和52单片机定时器2程序对比

    52单片机有几个定时器?STC89C52RC其实是有三个定时器单片机,STC89C52RC共有3个定时器,分别是T0、T1、T2。而
    发表于 11-10 14:30 3.5w次阅读

    51单片机定时器工作原理

    51单片机定时器工作原理及用法
    的头像 发表于 03-14 13:51 9.5w次阅读

    51单片机学习教程之51单片机的六点知识点介绍

    本文档的主要内容详细介绍的是51单片机学习教程之51单片机的六点知识点介绍包括了:1.51
    发表于 04-17 17:27 3次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>学习教程之<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的六<b class='flag-5'>点知识点</b>介绍

    51单片机的应该如何使用定时器详细资料和实例说明

    本文档的主要内容详细介绍的是51单片机的应该如何使用定时器详细资料和实例说明。
    发表于 08-29 17:28 0次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>的应该如何使用<b class='flag-5'>定时器</b><b class='flag-5'>详细</b>资料和实例说明

    51单片机定时器T0的中断使用法详细说明

    本文档的主要内容详细介绍的是51单片机定时器T0的中断使用法详细说明程序免费下载。
    发表于 08-22 17:30 0次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>T0的中断使用法<b class='flag-5'>详细</b>说明

    如何同时使用51单片机定时器0和串口使用问题详细说明

    本文档的主要内容详细介绍的是如何同时使用51单片机定时器0和串口使用问题详细说明。
    发表于 08-13 17:32 27次下载
    如何同时使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>0和串口使用问题<b class='flag-5'>详细</b>说明

    51单片机定时器和计数器的使用资料详细说明

    本文档的主要内容详细介绍的是51单片机定时器和计数器的使用资料详细说明。
    发表于 07-09 17:40 1次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>和计数器的使用资料<b class='flag-5'>详细</b>说明

    基于51单片机定时器

    设计思路。这样自己拿到任何型号的51单片机,只要有原理图,都可以自主设计。博主刚接触单片机,才疏学浅,可能会出现设计不足和错误,欢迎大家评论区交流。^ _ ^/**********************************
    发表于 11-04 21:06 35次下载
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>

    51单片机——定时器

    51单片机——定时器为什么使用定时器定时器原理?定时器设置中断配置源代码为什么使用
    发表于 11-11 16:36 40次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>定时器</b>

    C51单片机重要知识总结,建议收藏!

    文章目录文章目录00 写在前面01 C51基本数据类型总结02 C51数据类型扩充定义03 关于单片机04 单片机工作的基本时序05
    发表于 11-11 19:06 55次下载
    C<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>重要</b>知识<b class='flag-5'>点</b><b class='flag-5'>总结</b>,建议收藏!

    51单片机定时器问题总结

    51单片机定时器中断的理解个人最近几天学习总结51单片机定时
    发表于 11-23 16:51 2次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>问题<b class='flag-5'>总结</b>