单片机学习——定时器/计数器

2023-05-16

单片机必学系列

单片机学习——中断系统

单片机学习——存储器详解(程序存储器、片内RAM、拓展RAM、EEPROM)

单片机学习——定时器/计数器

单片机学习——A/D转换

更新ing


单片机学习——定时器/计数器

  • 单片机必学系列
  • 前言
  • 一、我们怎样定时
    • 1.软件定时
    • 2.硬件定时
    • 3.可编程定时器定时
  • 二、定时器/计数器结构和工作原理
    • 1.定时功能
    • 2.计数功能
  • 三、定时/计数器(T0/T1)的控制
    • 1.TMOD
    • 2.TCON
    • 3.AUXR
  • 四、定时/计数器的工作方式
    • 方式0


前言

一般51单片机是两个定时器(定时器0和定时器1),本文以STC8H8K64U为例(只是多了三个定时器,定时器0-4),讲解定时器,原理与其他单片机并无区别。注意哈:定时器和计数器是一体的,定时器的本质就是个加1计数器,不可能单独再设置一个计数器,那样也太麻烦了。

一、我们怎样定时

1.软件定时

初学单片机的朋友对软件定时非常熟悉,这就是Delay延时函数,让CPU循环执行一段程序,通过选择指令和安排循环次数实现软件定时,软件定时会完全占用CPU,让CPU执行无意义指令,此方法增加了CPU开销,降低了CPU的工作效率。(仅适用于CPU空闲的程序)

2.硬件定时

硬件定时则不占用CPU时间,定时功能全部由硬件电路(如555时基电路)完成,但是需要改变参数调节定时时间,使用不方便,还增加了硬件成本。

3.可编程定时器定时

该定时器的定时值及定时范围可以通过软件进行确定和修改。通过系统时钟/输入信号进行计数与控制,可以用于定时控制、记录事件、输出可编程时钟信号或用作分频器。

二、定时器/计数器结构和工作原理

先给一个STC8H8K64U框架图,再详细讲解。
在这里插入图片描述
我们可以清楚看到TH0、TL0、TH1、TL1,里面H就是高、L就是低的意思,TH0就是定时器0高8位的意思(定时器是16位的),TL0就是定时器0低8位。
TMOD是T0、T1工作方式寄存器,由它确定T0、T1工作方式以及功能。
TCON是T0、T1的控制寄存器,用于控制T0、T1的启动与停止,并且记录T0、T1计满溢出标志位(TF0和TF1稍后详细讲解)。
AUXR是辅助寄存器,它内部的T0x12和T1x12分别用于设定T0、T1内部计数脉冲的分频系数,上图中的P3.4、P3.5分别是T0、T1的外部输入端。

T0、T1的核心电路是一个加1计数器,加1计数器的脉冲来源有两个:一是外部脉冲,P3.4和P3.5,另一个就是系统时钟信号,加1计数器会对脉冲源计数,一个脉冲加1,计数器加满(全1)的时候再加1就会归0,同时使得溢出标志位TF0或者TF1为1(这取决于你在使用哪个定时器/计数器),框架图如下:
在这里插入图片描述

1.定时功能

根据上图,当脉冲源为系统时钟(等间隔脉冲,就是那种固定多久有一个高电平的脉冲)时,由于计数脉冲为同一个时间基准(因为晶振用的是同一个),脉冲数乘以计数脉冲周期(系统周期或12倍系统周期,具体看是否选择12分频)就是定时时间。即当系统时钟确定时,计数器的计数值就确定了时间。意思就是,只是计算加1加了多少次,每次加1的时间间隔(1秒除以晶振频率=振动一次的时间,也就是脉冲的间隔时间)一样,加的次数 x 间隔时间 = 总计时

2.计数功能

根据上图,当脉冲源为单片机外部引脚的输入脉冲时,就是外部事件的计数器。如定时/计数器T0,在其对应的计数输入端T0(P3.4)有一个负跳变时,T0计数器的状态值加一。

负跳变:由高电平变成低电平的过程,又被称为下降沿
正跳变:由低电平变成高电平的过程,也被称为上升沿

三、定时/计数器(T0/T1)的控制

1.TMOD

在这里插入图片描述
B6和B2位都是(C非/T) 特殊符号打不出来

(C非/T) :功能选择位。(C非/T)=0时,设置为定时工作模式;(C非/T)=1时,设置为计数工作模式。
M1和M0:T0、T1工作方式选择位.

GATE:门控位。
当(GATE)=0时,软件控制位TR0或TR1置1即可启动定时/计数器;
当(GATE)=1时,软件控制位TR0或TR1须置1,同时还须INT0(P3.2)或INT1(P3.3)引脚输入为高电平方可启动定时/计数器,即允许外部中断INT0(P3.2)、INT1(P3.3)输入引脚信号参与控制定时/计数器的启动与停止。
在这里插入图片描述

2.TCON

在这里插入图片描述
TF1:定时/计数器1溢出标志位。
当定时/计数器1计满产生溢出时,由硬件自动置位TF1,在中断允许时,向CPU发出中断请求,中断响应后,由硬件自动清除TF1标志。也可通过查询TF1标志,来判断计满溢出时刻,查询结束后,用软件清除TF1标志。

TR1:定时/计数器1运行控制位。
由软件置1或清0来启动或关闭定时/计数器1。当(GATE)=0时,TR1置1即可启动定时/计数器1;当(GATE)=1时,TR1置1且INT1(P3.3)输入引脚信号为高电平时,方可启动定时/计数器1。

3.AUXR

在这里插入图片描述
T0x12:
当(T0x12)=0,定时计数脉冲完全与传统8051单片机的计数脉冲一样,计数脉冲周期为系统时钟周期的12倍,即12分频;当(T0x12)=1,计数脉冲为系统时钟脉冲,计数脉冲周期等于系统时钟周期,即无分频。

T1x12:
当(T1x12)=0,定时计数脉冲完全与传统8051单片机的计数脉冲一样,计数脉冲周期为系统时钟周期的12倍,即12分频;当(T1x12)=1,计数脉冲为系统时钟脉冲,计数脉冲周期等于系统时钟周期,即无分频。

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

工作方式部分过多,本人建议找视频讲解便于理解,文字部分阐述不容易理解,故在此仅放不同工作方式原理图。

方式0

在这里插入图片描述
GATE、INT0和TR0之间的关系
GATE、INT0和TR0之间的关系,决定定时器/计数器是否能正常工作。这三个信号通过逻辑或门和逻辑与门产生control信号,用于控制内部SYSclk信号或者外部脉冲通过T0引脚是否能接入该定时器/计数器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机学习——定时器/计数器 的相关文章

随机推荐

  • 算法学习模板——素数问题、费马小定理、LCM/GCD和欧拉降幂

    万里之行 xff0c 始于足下 本博客总结近期学习到的部分数论模板 xff0c 以便于日后查询使用 作者水平有限 xff0c 难免存在疏漏不足 xff0c 恳请诸位看官斧正 倘若我的文章可以帮到你 xff0c 十分荣幸 当然 xff0c 以
  • NVIDIA显卡BUG解决 Unable to determine the device handle for GPU 0000:02:00.0: Unknown Error

    报错 实验室去年到今年断了几次电 xff0c 然后服务器上的2080Ti一直就感觉有点小毛病 属于是被折磨了几个月了 然后前两周断电后 xff0c 显卡就基本上完全用不了了 xff0c 经常服务器开机都会失败 并且就算服务器开机成功过后 x
  • 数据库E-R图基础概念

    E R图也称实体 联系图 Entity Relationship Diagram xff0c 提供了表示实体类型 属性和联系的方法 xff0c 用来描述现实世界的概念模型 ER模型的基本元素 实体 xff1a 用方框表示 xff0c 实体名
  • 51单片机蜂鸣器

    蜂鸣器分为两类 1 有源蜂鸣器 2 无源蜂鸣器 有源蜂鸣器比较简单 xff0c 只要有电流通过 xff0c 蜂鸣器就会发声 一般改变不了音调和音量 无源蜂鸣器要给一定频率的脉冲信号 xff0c 蜂鸣器才会发出声音 对于无源蜂鸣器只要改变频率
  • 数据分析----数据清洗

    文章目录 前言一 数据清洗是什么 xff1f 二 步骤1 选择列2 缺失值处理1 找到缺失值2 处理缺失值的方法 3 数据类型转化4 重复值处理 总结 前言 随着科技的不断发展 xff0c 数据在我们生活中越来越多 xff0c 面对繁杂的数
  • python装饰器

    装饰器 一 概念 1 装饰器 xff08 Decoration xff09 装饰器是一种设计模式 xff0c 经常用来实现 34 面向切面的编程 34 AOP 实现在不修改源代码的情况下 xff0c 给程序动态添加功能的一种技术 2 装饰器
  • 拒绝拖延!

  • 使用qemu-img转换镜像格式

    qemu功能强大 xff0c 详细了解其功能请到官网查看 https www qemu org docs master system images html qemu img能将RAW qcow2 VMDK VDI VHD xff08 vp
  • KEIL5MDK最新版(3.37)安装以及旧编译器(V5)安装

    最近KEIl5最新版本出来了 xff0c 但官方不在默认安装V5编译器 xff0c 导致某些代码无法兼容 xff0c 为了防止搞忘 xff0c 便把方法上传网上 旧编译器的安装思路是 在以前有V5编译器的KEILMDK安装包中复制粘贴到新的
  • mp4转ros bag包

    操作方法 python2 mp4 to bag py lane video mp4 lane camera bag 执行转化命令 rosbag play l TLout bag camera image raw 61 image raw0
  • 深度学习之卷积神经网络CNN详细

    需要PPT加Q1271370903 一 深度学习引入 1 各学习方法之间的联系 SL SSL和UL是传统ML方法 DL提供了一个更强大的预测模型 可产生良好的预测结果 RL提供了更口快的学习机制 且更适应环境的变化 TL突破了任务的限制 将
  • 基于51单片机实现红外循迹

    红外循迹外观 xff1a 红外循迹原理 xff1a 红外循迹模块原理还是很简单的 xff0c 和许多光电传感器原理一样 xff0c 当发射器发射出去的光被接收器接收到后 xff0c 模块上对应的LED灯点亮 xff0c 此时相应的输出引脚输
  • Ubuntu“从服务器获取共享列表失败:拒绝连接”问题的解决方法

    本来是可以的 xff0c 在安装nginx后 xff0c ubuntu连接不上共享文件 有过以下尝试 删除nginx和所有配置 xff0c 关闭代理 或者搜一些什么安装smbd包什么的 还有连接ip地址进行挂载的 以及开放端口 我解决的方法
  • C语言:scanf的使用

    目录 一 scanf的循环读取 1 scanf的一次读取 2 加入while循环使scanf能进行循环读取 3 由于scanf出错时会返回EOF xff0c 故代码改为 4 加入rewind清空缓冲区 xff08 只适用于vs xff09
  • 搭建mysql的主从关系

    目录 1 什么是mysql主从 2 为什么要使用MySQL主从 3 MySQL主从的实现原理 4 如何搭建mysql主从关系 4 1 搭建两台有mysql的虚拟机 可以克隆 4 2 保证自己的mysql可以远程访问 4 3 修改ip地址 因
  • 关于虚拟机装Anaconda教学

    文章目录 一 第一步装VMware Workstation Pro虚拟机的安装二 下载虚拟机镜像文件三 安装python解释器 xff0c 安装Anaconda xff1a python解释器 xff1a 直接在DOS上安装 xff0c 操
  • C#ftp服务器配置与文件上传

    个人分享 public void test ftp服务器路径 string ftpServer 61 34 ftp 192 168 0 1 34 ftp本地路径 string ftpDefaultUrl 61 34 A 34 登入到ftp的
  • 完整的前端项目开发流程

    一个项目从一开始的计划到最后的上线 大概要经过以下的流程 产品设计原型审评项目分工项目开发项目测试项目构建项目上线 1产品设计 主要负责人 产品经理 产品经理前期负责收集销售 客户 领导的零散需求 然后做需求分析 完成产品设计 需求分析 需
  • debian11 sid

    编辑 etc apt sources list xff0c 增加下面二行 xff1a deb http ftp us debian org debian sid main contrib non free deb src http ftp
  • 单片机学习——定时器/计数器

    单片机必学系列 单片机学习 中断系统 单片机学习 存储器详解 xff08 程序存储器 片内RAM 拓展RAM EEPROM xff09 单片机学习 定时器 计数器 单片机学习 A D转换 更新ing 单片机学习 定时器 计数器 单片机必学系