【单片机学习】51单片机【定时/计数器】,详细介绍

51单片机学习

  • 一、先知先会
    • 1、CPU时序的有关知识
      • 1.1、周期换算
      • 2、在学习定时器之前需要明白的
      • 3、定时/计数器的工作原理
      • 4、51单片机定时器结构
  • 二、定时/计数器的控制
    • 1、工作方式寄存器TMOD
    • 2、控制寄存器TCON
    • 3、定时/计数器的工作方式
      • 方式0:13位计数器(`TR0`控制型)
      • 方式1:16位加1计数器
      • 方式2:8位自动重装(重装初值)
      • 方式3:只适用于定时/计数器`T0`
      • 使用定时器,该做哪些工作

一、先知先会

1、CPU时序的有关知识

  • 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
  • 状态周期2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期时钟周期
  • 机器周期1个机器周期=6个状态周期=12个振荡周期。
  • 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。

1.1、周期换算

【单片机学习】51单片机【定时/计数器】,详细介绍_第1张图片

2、在学习定时器之前需要明白的

(1)51单片机有两组定时器/计数器;

因为既可以定时,也可以计数,所以称为定时/计数器。

(2)定时/计数器和单片机的CPU是相互独立的。

定时/计数器工作过程是自动完成的,不需要CPU的参与。

(3)51单片机中的定时/计数器是根据机器内部的时钟或者是外部脉冲信号对寄存器中的数据加1

(4)有了定时/计数器之后,可以增加单片机的效率。

一些简单的重复加1的工作可以交给定时/计数器处理,CPU转而处理一些复杂的事情。同时可以实现精确定时

3、定时/计数器的工作原理

【单片机学习】51单片机【定时/计数器】,详细介绍_第2张图片

4、51单片机定时器结构

​ 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

【单片机学习】51单片机【定时/计数器】,详细介绍_第3张图片

二、定时/计数器的控制

​ 51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式TCON用于控制其启动和中断申请

1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:

【单片机学习】51单片机【定时/计数器】,详细介绍_第4张图片
  • GATE是门控位, GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0TR1为1,就可以启动定时/计数器工作。

    GATE=1时,需要用软件使TCON中的TR0TR1为1,同时外部中断引脚INTO/1也为高电平时,才可以启动定时/计数器工作。【相较于上面的方式,该方式多一个外加高电平(所以常用上面的方式)】

  • C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计数模式。

  • M1M0:工作方式设置位。定时/计数器有四种工作方式。

【单片机学习】51单片机【定时/计数器】,详细介绍_第5张图片

2、控制寄存器TCON

TCON的低4位用于控制外部中断,已在【中断部分】介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。

其格式如下:

【单片机学习】51单片机【定时/计数器】,详细介绍_第6张图片
  • TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
  • TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
  • TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
  • TR0(TCON.4):T0运行控制位,其功能与TR1类同。

3、定时/计数器的工作方式

方式0:13位计数器(TR0控制型)

【单片机学习】51单片机【定时/计数器】,详细介绍_第7张图片

GATE=0经过反相器,为1,经过或门还是为1(此时不用管INT0引脚,因为门嘛),再经过与门(此时等于多少就由TR0来控制),当TR0=1时导通,开始计数,否则不导通。【由TR0控制】

GATE=1经过反相器,为0,此时还得看INT0引脚,若为1,经过或门为1(否则为0,计时器就开启不了),再经过与门(此时结果为多少就由TR0来控制),当TR0=1时导通,开始计数。【由TR0控制】

【单片机学习】51单片机【定时/计数器】,详细介绍_第8张图片

方式1:16位加1计数器

【单片机学习】51单片机【定时/计数器】,详细介绍_第9张图片

方式2:8位自动重装(重装初值)

【单片机学习】51单片机【定时/计数器】,详细介绍_第10张图片

方式3:只适用于定时/计数器T0

【单片机学习】51单片机【定时/计数器】,详细介绍_第11张图片

通常使用方式1方式2

使用定时器,该做哪些工作

初始化程序应完成如下工作:【编写程序也是按如下步骤进行】

  • TMOD赋值,以确定T0T1的工作方式;
  • 计算初值,并将其写入TH0TL0TH1TL1
  • 打开计时器0 中断 开关ET0
  • 中断方式,则对EA(总中断开关)赋值,打开定时器中断;
  • 使TR0TR1置位,启动定时/计数器定时计数
【单片机学习】51单片机【定时/计数器】,详细介绍_第12张图片

你可能感兴趣的:(#,51单片机,单片机,51单片机,c语言)