六、51单片机之定时器/计数器_理论

2023-05-16

1、什么是定时器、计数器

定时器就是单片机设定一个时间间隔,时间间隔到后通知单片机。例如设置100ms的定时器,100ms后定时器通知单片机时间到了。

(1)定时器是单片机的一种内部外设。(以前的单片机只有CPU,也就是只有运算器和控制器。伴随集成电路的发展,定时器、串口等也集成到单片机内部,所以定时器称为内部外设)。

(2)定时器就相当是单片机的"闹钟"。

(3)一定程度上定时器就是计数器,计数器就是定时器,往后看就能理解了。

(4)计数器用于记录外部脉冲产生的个数,如果外部脉冲产生的时间间隔是可知且固定的,就可以通过脉冲个数✖脉冲时间间隔得到定时时间。

2、定时器如何工作

定时器定时器本质上是计数时钟脉冲的个数。时钟脉冲一般由晶振和起振电路产生(这句话了解可)。

一般定时器的工作流程:

(1)第一步:设定定时器的时钟源(51单片机中不需要,因为这种简单的单片机只有一个时钟源,没得选)

(2)第二步:初始化时钟相关的寄存器

(3)第三步:设定定时时间(即设定脉冲计数个数)

(4)第四步:通过脉冲个数判断定时时间是否到了,但通常情况是设置中断,时间到后(计数值到后)会自动通知单片机。这一步也可以理解为设置中断处理程序。

(5)第五步:打开定时器

(6)运行时:定时器计数值到后产生中断,在中断中做想做的事。

3、软件控制硬件的关键——寄存器

3.1、什么是寄存器

(1)寄存器的英文是Register。

(2)寄存器,既可以往里面写内容,也可以把里面的内容读出来。一般按位定义。

(3)寄存器使用地址访问,编程上像内存一样。(了解即可)

3.2、寄存器的工作原理

(1)寄存器与硬件之间有双向影响,寄存器可能影响硬件,硬件也可能影响寄存器。

(2)硬件可以读写寄存器

(3)寄存器可以抽象理解为硬件和软件之间的桥梁。

(4)在复杂单片机中,IO口的输入输出功能,输出高低电平,也可以通过寄存器来配置。

(5)总结:寄存器是软件能够控制硬件的关键。

3.3、单片机学习的关键就是各种寄存器

(1)单片机学习主要包括2个:CPU和各种内部外设

(2)各种内部外设的编程就是操纵寄存器。

(3)熟悉一款单片机其实就是熟悉他的寄存器。

(4)寄存器会随着单片机的复杂而复杂。

4、51单片机定时器简介

细节可参照具体型号单片机数据手册/参考手册。

4.1、数据手册部分内容

在STC89C51RC单片机中手册部分内容:

(1)定时器/计数器的核心部件是一个加法(也有减法)的计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时的定时器/计数器每12个晶振时钟或者每6个晶振时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚,则为计数方式,每来一个脉冲加1。

(2)该单片机可工作在12T或6T工作模式下。当外部晶振频率为12MHz时,12T工作模式下相当于12分频,6T工作模式下6分频。分频后得到的时钟频率才是CPU的工作时钟。该单片机默认是12T工作模式,可通过stc-isp下载程序软件勾选是能6T(双倍速)模式,这样下载程序,单片机便工作在6T模式下。

(3)在STM32单片机中是外部晶振频率倍频后的时钟为CPU工作时钟。

4.2、51单片机相关周期知识补充

(1)兆赫兹是波动频率单位之一。波动频率的基本单位是赫兹,采千进位制;1兆赫相当于1000千赫(KHz),也就是10^6赫兹。

(2)赫兹是国际单位制中频率的单位,它是每秒钟的周期性变动重复次数的计量。 赫兹简称赫。每秒钟振动(或振荡、波动)一次为1赫兹,或可写成次/秒。

(3)单片机中的常见周期

晶振周期:晶振的振荡周期,也就是晶振震动一次所花的时间,比如1MHz晶振震荡周期是 1/1MHz(1/1000000)s,也就是1微妙。一般也称为振荡周期。

时钟周期:时钟周期,如果晶振的输出没有经过分频或倍频就直接作为cpu的工作时钟,则时钟周期就等于晶振的振荡周期;如果晶振的输出经过分频或倍频后作为cpu的工作时钟,则时钟周期就就是分频或倍频后的。即,时钟周期是CPU的实际工作频率的倒数,是时序中最小的时间单位。51单片机没有分频或倍频,而STM32中有。51单片机中晶振周期等于时钟周期。

注:学习51单片机经常看见时钟周期就是振荡周期这种说法是不够严谨的。

机器周期:机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成。

5、51单片机定时器的主要寄存器

定时器/计数器0和1的相关寄存器。(STC89C52RC单片机数据手册)

(1)51单片机中寄存器可以按位访问。

5.1、定时器/计数器控制寄存器TCON

SFR nameAddressbitB7B6B5B4B3B2B1B0
TCON88HnameTF1TR1TF0TR0IE1IT1IE0IT0

(1)TF:Time Flag,定时器溢出标志位。

(2)8个位。名称后面带1的对应定时器1,名称带0的对应定时器0。

(3)定时器为加法定时器。

(4)IT位设置外部中断触发方式。外部中断触发方式一般就是:边沿触发和电平触发2种。边沿触发又分为:上升沿触发、下降沿触发、双边沿触发(上升沿下降沿都会触发);电平触发方式分为:高电平触发、低电平触发2种。

5.2、定时器/计数器工作模式寄存器TMOD

5.3、TL0

5.4、TL1

5.5、TH0

5.6、TH1

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

六、51单片机之定时器/计数器_理论 的相关文章

随机推荐

  • 最大子序列和问题

    最大子序列和问题Maximum Subsequence Sum include lt iostream gt include lt vector gt using namespace std 使用命名空间 T N 61 O N 3 Cubi
  • C++基础之基础

    C 43 43 xff08 容纳了好几种编程范式 xff09 xff1a 面向对象编程 泛型编程 过程化编程 面向对象编程 xff1a 其本质是以建立模型体现出来的抽象思维过程和面向对象的方法 抽象 继承 多态 xff1a 抽象性是指将具有
  • 这五大MySQL在线课程,最适合初学者的你!

    全文共3214字 xff0c 预计学习时长7分钟 图片来源 xff1a pexels com 64 pixabay 过去几年 xff0c 有句话越来越流行 xff1a 人人必须学习如何编码 这值得鼓励 在当今以信息和技术为中心的世界里 xf
  • 课程作业(单链表C++实现)

    单链表的操作C 43 43 实现 include lt iostream gt using namespace std 使用命名空间 template lt typename dataType gt 定义一个数据类型模板 class lin
  • 课程作业(二叉查找树)

    mainTest cpp include lt iostream gt include 34 binarySearchTree h 34 using namespace std int main cout lt lt 34 请按前序输入一棵
  • C++程序设计实践指导——第一章 简单编程 (2)

    第一章 简单编程 xff08 2 xff09 1 9 统计与替换字符串中的关键字 建立一个类WordNum xff0c 统计一个英文字符串中的英文单词个数 字符串中的各英文单i司以一个或多个空格分隔 如字符串 34 I am a stude
  • STL+Python+图像处理-学习资源

    1 C 43 43 STL学习网站 CPlusPlus com CppReference com gcc gnu org 2 Python学习书籍及网站 Python Crash Course Learn Python the Hard W
  • STL----------C++Primer(笔记)

    1 string string word cin gt gt word getline cin word 关系操作符 lt lt 61 gt gt 61 include lt cctype gt 头文件 string s 61 34 Hel
  • 侯捷-STL与泛型编程(GP)笔记

    1 stl体系结构基础介绍 分配器 xff08 allocator xff09 xff1a 主管分配内存 适配器 xff08 adaptor xff09 xff1a 进行一个转换 xff0c 与另一个对象绑定 include lt iost
  • 课程作业——数据结构与算法C++(1)

    课程作业6 xff08 归并排序 冒泡排序 插入排序 选择排序 xff09 归并排序 冒泡排序 插入排序 选择排序 主程序 include lt iostream gt include lt vector gt using std vect
  • C++程序设计实践指导——第二章 样例讲解

    复数计算器 include lt iostream gt include lt cmath gt include lt string gt include lt fstream gt include lt ctime gt using na
  • 步进电机控制与LCD显示L297与L298

    步进电机控制与LCD显示L297与L298 上次介绍了PWM和L298结合的电机调速 xff01 接下来介绍L297与L298结合的例子 xff01 PWM电机调速 下面是L297的简介 xff1a L297是步进电机专用控制器 xff0c
  • 变分自编码器(一):原来是这么一回事

    https kexue fm archives 5253 过去虽然没有细看 xff0c 但印象里一直觉得变分自编码器 xff08 Variational Auto Encoder xff0c VAE xff09 是个好东西 于是趁着最近看概
  • Linux 安装npm

    1 root 登录linux 2 cd usr loacl node 没有目录就自己创建一个 3 wget https npm taobao org mirrors node v4 4 7 node v4 4 7 linux x64 tar
  • DE1-SOC开发笔记

    verilog FPGA 采用verilog开发语言 xff0c 使用时序和组合逻辑 进行行为 xff0c 数据流 xff0c 结构建模 RTL级编程 xff0c 在实际板卡上面验证逻辑的正确性 sopc xff1a 软硬件结合的开发方式
  • 关于立创EDA使用的几点心得

    对于立创EDA 与AD仅为小白 xff0c 仅布过简单的双层板 xff0c 以下仅记录自己的几点心得 1 如果想要在立创商城 xff0c 嘉立创实现打板贴片一体化 xff0c 采用的普遍的两种方法 xff1a 立创EDA xff0c 有在线
  • 《当下即是生活》季羡林——读书笔记

    目录 书籍简介 经典摘录 三思而行 满招损 xff0c 谦受益 牵就与适应 睁一只眼 闭一只眼 论压力 论恐惧 难得糊涂 春色满寰中 槐花 书籍简介 作者季羡林 本书精选季羡林关于人生活法的散文 xff0c 阐述一个人怎样活在当下 xff0
  • Python装饰器

    Python的装饰器 decorator 可以说是Python的一个神器 xff0c 它可以在不改变一个函数代码和调用方式的情况下给函数添加新的功能 Python的装饰器同时也是Python学习从入门到精通过程中必需要熟练掌握的知识 小编我
  • Python学习笔记--带参数的装饰器

    带参数的装饰器 装饰器的副作用柯里化functools带参数的装饰器多参数小结 装饰器的副作用 def fn 39 39 39 this is fn 39 39 39 help fn 结果 xff1a Help on function fn
  • 六、51单片机之定时器/计数器_理论

    1 什么是定时器 计数器 定时器就是单片机设定一个时间间隔 xff0c 时间间隔到后通知单片机 例如设置100ms的定时器 xff0c 100ms后定时器通知单片机时间到了 1 定时器是单片机的一种内部外设 以前的单片机只有CPU 也就是只