51单片机的定时/计数器是一种可编程部件。它的工作方式、计数初值以及启停操作均应在定时/计数器工作前进行初始化,即向相应的寄存器写入相应的控制字。

标准的51单片机内部有T0和T1两个定时器,与这两个定时器有关的特殊功能寄存器主要由定时值存储寄存器、定时器控制寄存器和定时器模式寄存器。在使用定时器的时候,需要完成对定时器配置,配置步骤如下:

第一:设置特殊功能寄存器TMOD,配置好工作模式。

第二:设置计数寄存器TH0和TL0的初值。

第三:设置TCON,通过TRX置1来让定时器开始计数。

第四:判断TCON寄存器的TFX位,监测定时器溢出情况

这里TRX和TFX中的X指的是0或者1。

下面程序使用定时器0,工作模式1,实现20ms的定时功能,控制单片机的P1.0输出周期为40ms的方波信号。

1.首先设置特殊功能寄存器TMOD,配置定时器0工作在模式1。TMOD寄存器的各位如下表所示,根据要求,采用定时器0,而高四位是定时器1的控制位,所以TMOD的高四位置0,TMOD的低四位为定时0的控制位。根据要求定时器0工作在定时器模式,所以C/T(T0)位因该是置0,表示工作在定时模式。本定时器启动不受到单片机引脚INT0外部信号的控制,所以GATA(T0)为清零即可。要求定时器0工作在模式1,则M1(T0)位置0,M0(T0)位置1即可。因此通过以上分析,可知TMOD的各位如下TMOD=0B00000001即,TMOD=0X01.

2.设置计数寄存器TH0和TL0的初值,根据定时时间20ms,确定TH0和TL0的初值。单片机的晶振为11.0592M,时钟周期就是1/11059200,机器周期是12/11059200 秒,定时间20ms,就是要经过X个机器周期得到0.02秒,即X* 12/11059200=0.02,得到X=18432.16位定时器的溢出值是65536(因65535加1才是溢出),这样先给TH0和TL0一个初始值,让它们经过18432个机器周期后刚好达到65536溢出,溢出之后TF0置1,通过TF0就可以得知0.02秒时间到。那么初值y=65536-18432=47104,转换为十六进制就是0XB800;即TH0=0XB8;TL0=0X00;

3.设置TCON,通过TR0置1来让定时器开始计数,即通过TR0=1启动定时器。

4.判断TCON寄存器的TF0位,监测定时器溢出情况,TF0为1则定时器溢出,定时时间到,就可以做相应的处理,比如改变P10引脚电平状态实现40ms方波信号。

将上述定时器初始化设置的流程,封装成一个函数如下:

void timer0_init()

{

TMOD=0X01;

TH0=0XB8;

TL0=0X00;

TR0=1;

}

然后在主函数调用timer0_init()函数实现对定时器的初始化。并在主函数中查询定时器是否溢出,溢出说明定时间到,进行响应的处理,main函数如下

void   main()                        //主函数
{
     timer0_init();//调用定时器初始化函数
    while(1)
     {
         if(1==TF0)//判断定时器是否溢出
         {
          TH0=0XB8;//
          TL0=0X00;//对于定时器0工作1需要溢出之后,重新装入初始值
          P10=~P10;//P10电平状态反转,实现高低电平切换
         }
    
     }
 }

仿真结果如图所示,一个格子是10ms,一个方波周期是4个格子,正好是40ms。

这是一个定时器最简单的一个例子,通过这个例子掌握定时器的使用方法,稍加修改就可以实现一些功能,比如:赛事活动中使用的秒表、智能定时断电插座、通过对单片机端口引脚上输入的由外部事件产生的“触发脉冲信号”进行计数,从而根据计数结果实现相应的功能控制,比如频率计等。

STC89C52RC定时器的最基本实例相关推荐

  1. STC89C52RC定时器2串口通信

    STC89C52RC定时器2串口收发字符串 前言 一.宏定义 二.变量 三.函数 四.结果 前言 众所周知,STC89C52RC有一个定时器2,具体的不说了,你只需要知道本文是将它用来产生串口波特率从 ...

  2. 单片机STC89C52RC定时器

    STC89C52RC定时器:方法1 #include"reg52.h"  unsigned int count=0;                 sbit fm=P2^3; s ...

  3. Spring定时器的使用-多实例下定时重建索引

    2019独角兽企业重金招聘Python工程师标准>>> 前几天接到项目需要定时重建索引的任务,一开始试了试Java自带的Timer,不知道是不是自己对Timer的了解还不够的原因,感 ...

  4. android studio 定时器,Android定时器和Handler用法实例分析

    本文实例讲述了Android定时器和Handler用法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Android Studio 二.定时器使用示例: 初始化: //定 ...

  5. linux定时器(crontab)实例

    linux实验示例----实现每2分钟将"/etc"下面的文件打包存储到"/usr/lobal"目录下 ·Step1:编辑当前用户的crontab并保存 终端输 ...

  6. OnTimer定时器使用踩坑实例和使用方法

    如果遇见一下问题,可能会有帮助: OnTimer进不去 非静态成员引用必须与特定对象相对报错 不知道怎么开启和设置定时器 首先:用SetTimer开启定时器 //设置定时器更新界面SetTimer(0 ...

  7. python timer怎么用_python定时器(Timer)用法简单实例

    python定时器(Timer)用法简单实例 本文实例讲述了python定时器(Timer)用法.分享给大家供大家参考.具体如下: # encoding: UTF-8 import threading ...

  8. 【STM32】通用定时器的PWM输出(实例:PWM输出)

    STM32F1xx官方资料: <STM32中文参考手册V10>-第14章  通用定时器 通用定时器PWM概述 STM32定时器输出通道引脚 这里以TIM3为例来讲解.STM32的通用定时器 ...

  9. TCP的定时器系列 — 超时重传定时器(有图有代码有真相!!!)

    转载 主要内容:TCP定时器概述,超时重传定时器.ER延迟定时器.PTO定时器的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd Q:一条TCP连接 ...

最新文章

  1. Console-算法-一个偶数总能表示为两个素数之和
  2. 【强化学习】DQN及其延伸算法
  3. Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略
  4. 使用delphi 开发多层应用(十二)使用kbmMW webserver 返回JSON
  5. matlab 小技巧
  6. 音频管理_人力资源管理师考试历年真题试卷+视频教程+音频讲义合集分享
  7. 云虚机php.ini在,虚拟主机php.ini在哪
  8. java黄金连分数_蓝桥杯 | Java B组省赛真题练习——黄金连分数-Go语言中文社区...
  9. Spring Boot 使用 AOP 实现页面自适应
  10. distributed crawl
  11. 【链接】Eclipse的Debug调试技巧
  12. flops什么意思中文_不知道什么是FLOPs?进来瞧瞧~
  13. MATLAB 人脸识别矩阵(矩阵、相似度)
  14. python识别图片指定位置文字_python 识别图片中的文字信息方法
  15. ubuntu磁盘清理
  16. java正则表达式多行匹配,正则表达式多行匹配 - Wangle_OP的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. MongoDB 4.2.3 安装以及安装遇到的问题“service MongoDB failed to start,verify that you have sufficient privilege”
  18. connected papers 白嫖攻略
  19. TCP的三次握手与四次挥手
  20. java添加边框_Java如何为边框添加标题?

热门文章

  1. 亿速云服务器 如何上传文件,使用MultipartFile怎么实现一个文件上传功能
  2. h是什么意思 富文本辑器_主流的开源「富文本编辑器」都有什么缺陷?
  3. 正整数n分解成若干个个不同的自然数之和,使得乘积最大
  4. 金茂服务香港上市破发:大跌29% 公司市值52亿港元
  5. [图示]做人36字诀:一)社会交往--教你建功立业
  6. 21天好习惯第一期-3
  7. 中电十所提前批面经(通信算法岗)
  8. BadUSB的前世今生:USB RUBBER DUCKY和Teensy USB
  9. python分析比赛_世界杯:用Python分析热门夺冠球队-(附源代码)
  10. web服务器端预约系统,Web场馆预约管理系统