【51单片机】定时/计数器

1. 定时/计数器结构

在这里插入图片描述

简介

  • 用途:定时器和计数器
  • 核心:加1计数器
  • 原理:每来一个脉冲,加1计数器加1,当加到全1时再来一个脉冲使加1计数器归零,同时加1计数器的溢出使TCON寄存器中的TF0(或TF1)置1,向CPU发出中断请求
  • 脉冲来源
    定时器:由单片机内部时钟晶振器输出脉冲源提供
    计数器:由T0或T1引脚输入的外部脉冲源提供(8051的是P3.4或P3.5引脚)
  • 注意:T0或T1都不能同时既做定时器也做计数器

补充:

  • 计数的工作原理
    通过引脚P3.2(T0)或P3.5(T1)对外部脉冲信号进行计数。
    当输入脉冲信号产生由 1 到 0 的下降沿时,定时器的值加 1,在每个机器周期,CPU采样引脚 P3.4 和 P3.5 的输入电平。若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加 1
    由于检测一个 1 到 0 的跳变需要2个机器周期,故最高计数频率为振荡频率的二十四分之一
    虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期

两个定时器的区别

  • T0可分成2个独立的8位定时器,而T1不能
  • T1可作为串口的波特率发生器,而T0不能

2.相关寄存器

  • TCON( TCON 能位寻址

在这里插入图片描述

项目                                                                                                 说明
  TF1T1计数溢出时,硬件自动置TF1 = 1。故只编写溢出判断和TF1 = 0即可。在中断允许下,该位发出中断请求并进入中断后,其由硬件自动置零。在中断屏蔽下,该位可用作查询方式,此时由编程置零。
  TR1GATE = 1,INT1=1时,软件置TR1=1,启动T1。GATE = 0,软件置TR1 = 1,启动T1
  • TMOD( TMOD不能位寻址 ,复位值0x00)

在这里插入图片描述

  • GATE = 0  不受外部控制
    GATE = 1  计数器T0和T1分别受P3.2和P3.3引脚上的电平控制。当P3.2(或P3.3)为高电平,同时TR0(或TR1)为1,计数器T0(或T1)开始计数;当P3.2(或P3.3)为低电平,计数器T0(或T1)停止计数。

在这里插入图片描述

3.几种工作方式的初值计算

方式0

  • 工作原理:13位计数器,使用TL0的低5位和TH0的高8位组成,TL0的低5位溢出时向TH0进位。TH0溢出时发出中断请求。
    在这里插入图片描述
  • 初值计算公式:
    在这里插入图片描述

方式1

  • 工作原理:16位计数器,TL0作为低8位,TH0作为高8位
    在这里插入图片描述
  • 初值计算公式:
    在这里插入图片描述

方式2

  • 工作原理:计数器溢出后,计数器自动将上次设置的初值重装。
    在这里插入图片描述

  • 初值计算公式:
    注意:晶振频率必须选择12的整数倍,因为定时器的频率是晶振频率的1/12。
    在这里插入图片描述

  • 优点:
    适合做比较精准的脉冲信号发生器

  • 缺点:
    只有8位计数器,当定时较长时间时会带来麻烦和影响精度。最多经过256个机器周期,该计数器就会溢出,若使用12MHz晶振也只有256us的时间。

方式3

  • 工作原理:
    将T0分成两个独立的8位定时/计数器TL0和TH0。
    TL0为正常的8位定时/计数器,计数器溢出后置位TF0,申请中断,之后重装初值。
    TH0也是8位定时/计数器,但由于TL0占用了TF0和TR0,因此TH0占用定时器TF1和TR1(所以T1不能用)

注意:只能用于定时/计数器T0,T0工作在方式3时,T1不要使用在有中断的场合。通常该种情况下T1用作串口波特率发生器。

在这里插入图片描述


4.时钟周期与机器周期的相关计算

在这里插入图片描述


5.编程流程

在这里插入图片描述

参考文章

https://blog.csdn.net/weixin_42625444/article/details/93471117

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值