1、视频学习

也还是这两个图

定时/计数器:两个功能

定时器可以实现准确定时。

定时功能,计数功能。

一个低电平一个高电平就是一个脉冲。

定时器作用:精确事件定时

如何使用定时计数器:

首先是启动定时计数器,怎么去启动他来。通过特殊功能寄存器TCON来启动。

然后是设计定时计数器的工作模式 ,通过TMOD特殊功能寄存器。

可以通过查询方式来判断定时计数器是否溢出。

它内部有一个16位的定时计数器,如果我们把它设定在定时模式下,每隔一个机械周期这个16位寄存器就会加1,当他们一直加加满的时候(65535)他就会溢出,这个时候单片机就会自动的把TF这一位变成1.  加满了我们通常认为是定时时间到。给他一个初值然后判断需要定时的时间。可以把16的定时计数器放一个初值,让他从这个初值上面加。加满以后TF位会变为1.

低四位与外部中断有关的。B0-B4

用定时器0为例。

TR0:该位由软件置位和清零:就是说由编程去给他赋值1还是赋值0;

TF0:中的当T0被允许计数后也就是说TR0启动。产生溢出时,也就说加满的时候,16位加满65535的时候,他就溢出了,TF0由硬件给他置1的。

有cpu置1.时间到了,可以去做一些指定的工作。必须由软件给他清零。

当使用中断的时候我们不用程序给他清零,他会由硬件给他清零。没用到中断就要用软件清零。

TMOD

有8位,上电的时候默认每一位都是0.不可位寻址。不能直接M0=1;必须用十六位赋值

第七位最高位:

定时器0在里面的第四位。

GATE默认是0,当置1的时候需要满足两个条件。

C/T:0默认是定时器、配置定时还是计数模式

TH0高八位  TL0第八位   这两个可以用来设置初值。

TH0=1  TL0=0  设置的初值就是256   因为是0001 0000 0000 用的是二进制转10进制

加到65535然后TF0就会等于1

8位自动重装串口通讯的时候会用到。

初值放在TH0

使用定时器有几个步骤;首先TCON控制器启动它

然后,通过TMOD设置模式。

加入我要定时10ms毫秒  就是10000us微妙除以1.085这是我们的机器周期,

把初值设置为65535减去刚才算的数,

读取TF是不是1就知道是不是溢出了

th初值设为256

定时

关于定时器0的初始化:

2、教材再理解

一、定时器初步认识

时钟周期:是时序中最小的时间单位,具体计算的方法就是 1/时钟源频率,我们 KST-51 单片机开发板上用的晶振是 11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200 秒。

机器周期:一个机器周期是 12 个时钟周期,也就是 12/11059200 秒

定时器和计数器。定时器和计数器是单片机内部的同一个模块,通过配置 SFR(特殊功能寄存器)可以实现两种不同的功能,

定时器就是用来进行定时的

定时器内部有一个寄存器,我们让它开始计数后,这个寄存器的值每经过一个机器周期就会自动加 1

这个定时器就是每过一个机器周期的时间,也就是 12/11059200 秒,数字自动加 1。

16 位的定时器,也就是 2 个字节,最大值就是 65535,那么加到 65535 后,再加 1 就算溢出,

二、定时器的寄存器:

标准的 51 单片机内部有 T0 和 T1 这两个定时器

表 5-1 的寄存器是存储定时器的计数值的。TH0/TL0 用于 T0,TH1/TL1 用于 T1。

表 5-2 是定时器控制寄存器 TCON 的位分配,表 5-3 是则是对每一位的具体含义的描述。

只要写到硬件置 1 或者清 0 的,就是指一旦符合条件,单片机将自动完成的动作,只要写软件置 1 或者清 0 的,是指我们必须用程序去完成这个动作,后续遇到此类描述就不再另做说明了。

看 TR1,当我们程序中写 TR1 = 1 以后,定时器值就会每经过一个机器周期自动加 1,当我们程序中写 TR1 = 0以后,定时器就会停止加 1,其值会保持不变化。

TF1,这个是一个标志位,他的作用是告诉我们定时器溢出了

比如我们的定时器设置成 16 位的模式,那么每经过一个机器周期,TL1加 1 一次,当 TL1 加到 255 后,再加 1,TL1 变成 0,TH1 会加 1 一次,如此一直加到 TH1和 TL1 都是 255(即 TH1 和 TL1 组成的 16 位整型数为 65535)以后,再加 1 一次,就会溢出了,TH1 和 TL1 同时都变为 0,只要一溢出,TF1 马上自动变成 1,告诉我们定时器溢出了,

表 5-4  TMOD——定时器模式寄存器的位分配(地址 0x89、不可位寻址)

C/T: 定时器或计数器选择位。该位被清零时用作定时器功能(内部系统时钟),被置 1 用作计数器功能。

模式 1,是 THn 和 TLn 组成了一个 16 位的定时器,计数范围是 0~65535,溢出后,只要不对 THn 和 TLn 重新赋值,则从 0 开始计数。

模式 2,是 8 位自动重装载模式,只有 TLn做加 1 计数,计数范围 0~255,THn 的值并不发生变化,而是保持原值,TLn 溢出后,TFn就直接置 1 了,并且 THn 原先的值直接赋给 TLn,然后 TLn 从新赋值的这个数字开始计数。

要想让定时器工作,就是自动加 1,从图上看有两种方式,第一种方式是那个开关打到上边的箭头,就是 C/T = 0 的时候,一个机器周期 TL 就会加 1 一次,当开关打到下边的箭头,即 C/T =1 的时候,T0 引脚即 P3.4 引脚来一个脉冲,TL 就加 1 一次,这也就是计数器功能。

三、定时器的计算

时钟周期=12/11059200=1.085069

假如要定时 20ms,就是 0.02 秒

计时器计数是没过一个时钟周期加1,也就是每过1.085069加1

要经过x个机器周期到达0.02秒

x*12/11059200=0.02

得到 x= 18432

十六位定时器溢出是65535

我们可以给给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536

初值 y = 65536 - 18432 = 47104

转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。

也可以TH0= 47104/256

TL1=47104%256

利用定时器准确定时

由1秒加到10秒

先判断是否溢出了也就是TF0=1代表定时了50ms,然后循环mSec++,加一次是50ms,当加到20次的时候正好是1s

然后清零mSec,秒数加1变成1秒,当sec大于10秒清零从0再开始重复。

计数器配置

定时器1和2

定时器1和2 公用一个端口会覆盖掉,只需要写一个或等于就互不影响,tc写入1,计数模式

51单片机---定时器相关推荐

  1. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  2. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  3. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  4. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  5. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  6. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

  7. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

  8. 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)

    Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...

  9. 51单片机定时器及其应用(2)(测量脉冲宽度)

    51单片机定时器及其应用(2)(测量脉冲宽度) 上一篇文章讲了如何使用51单片机的定时器功能制作一个简易的数字钟,上次有一个GATE位没有涉及到,因此这次来介绍一下定时器的这个GATE位的应用,也就是 ...

  10. 51单片机定时器及其应用(3)(测量脉冲频率)

    51单片机定时器及其应用(3)(测量脉冲频率) 前面介绍了定时器的一般应用以及定时器GATE位的应用,还有一个位没有介绍,那就是定时器C/TˉC/\bar{T}C/Tˉ位.前面讲解定时器时总是写作定时 ...

最新文章

  1. 玩.采草莓_2018
  2. 深度学习笔记一:稀疏自编码器
  3. Conda官方下载安装步骤及conda用法详细介绍
  4. java序列化_Java序列化详解
  5. Java A的新本地变量类型推断
  6. Spring事务操作-事务
  7. 蛮力法在字符串匹配问题中的应用(JAVA)--朴素模式匹配算法
  8. 养生之道之一_吃喝相关[转载]
  9. 编辑器、编译器和IDE的区别
  10. Keil——导出代码的PDF文件
  11. oracle数据库怎么切换实例,oracle切换数据库实例
  12. mac 10.8 montion lion 山狮系统上 安装 rails 和 oci8 连 oracle 数据库
  13. WordPress星级评分插件KK Star Ratings评分插件教程
  14. 利达主机联网接线端子_利达主机怎么编辑中文 利达主机接线端子说明
  15. “天下文章一大抄”的时代已经过去
  16. char、nchar、varchar、nvarchar的区别和特点
  17. JAVA导入/出EXCEL表格 POI
  18. rootfs.img文件扩容
  19. Index of索引
  20. 达梦数据库培训学习学习心得

热门文章

  1. Spring中StopWatch的使用
  2. 华为资深工程师带你了解华为七大根技术
  3. matlab中将RGB图像转化为灰度图像
  4. 8500WN12核顶配 极速稳定上网享受数字生活
  5. 解读微博Q1财报:寒冬里稳步向前
  6. Java包(package)的命名规范,java中package命名规则
  7. c语言如何输出整形数组,C语言 有一个整形数组a,有10个元素,要求输出数组中的全部元素...
  8. powerDesigner导出Excel,太好用了
  9. 一篇文章总结大数据营销的几道坎!
  10. 结婚不一定是为了幸福,但离婚一定是