51单片机定时器/计数器

51单片机的定时器/计数器

本文主要涉及51单片机的定时器/计数器的相关内容,主要包括定时器相关寄存器的相关配置以及定时器的配置代码参考。

文章目录

  • 51单片机的定时器/计数器
    • 一、 CPU 时序知识
    • 二、 51 单片机定时器原理
    • 三、 51 单片机定时/计数器结构
  • 51单片机的定时器/计数器
    • 一、 CPU 时序知识
    • 二、 51 单片机定时器原理
    • 三、 51 单片机定时/计数器结构
      • 3.1 工作方式寄存器 TMOD
      • 3.2 控制寄存器 TCON
    • 四、 51 单片机定时/计数器的工作方式
    • 五、 定时器配置

一、 CPU 时序知识

在了解定时器前需要先了解一下有关时序:
①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。

②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周期或时钟周期。

③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。

④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。

例如:外接晶振为 12MHz 时,51 单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;

二、 51 单片机定时器原理

有两个可编程的定时/计数器 T0、T1,定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两个寄存器 THx 和 TLx 组成。它随着计数器的输入脉冲进行自加 1,也就是每来一个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。

T0、 T1不论是工作在定时器模式还是计数器模式,实质是对脉冲信号进行计数。
计数器模式是对外部脉冲进行计数
定时器模式是对单片机内部脉冲信号(机器周期)计数。

单片机复位时计数器初值为0。

三、 51 单片机定时/计数器结构

51单片机的定时器/计数器

一、 CPU 时序知识

在了解定时器前需要先了解一下有关时序:
①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。

②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周期或时钟周期。

③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。

④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。

例如:外接晶振为 12MHz 时,51 单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;

二、 51 单片机定时器原理

有两个可编程的定时/计数器 T0、T1,定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两个寄存器 THx 和 TLx 组成。它随着计数器的输入脉冲进行自加 1,也就是每来一个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。

T0、 T1不论是工作在定时器模式还是计数器模式,实质是对脉冲信号进行计数。
计数器模式是对外部脉冲进行计数
定时器模式是对单片机内部脉冲信号(机器周期)计数。

单片机复位时计数器初值为0。

三、 51 单片机定时/计数器结构

在这里插入图片描述

在这里插入图片描述

3.1 工作方式寄存器 TMOD

工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于 T0,高
四位用于 T1。
在这里插入图片描述

GATE 是门控位
GATE=0 时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时/计数器工作;
GATA=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了 INT0/1 引脚为高电平这一条件

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

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

在这里插入图片描述

3.2 控制寄存器 TCON

TCON 的低 4 位用于控制外部中断。TCON 的高 4 位用于控制定时/计数器的启动和中断申请。
在这里插入图片描述

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 类同.

四、 51 单片机定时/计数器的工作方式

  1. 方式 0
    方式 0 为 13 位计数,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位组成。TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU发出中断请求。其结构图如下所示
    在这里插入图片描述

门控位 GATE 具有特殊的作用。当 GATE=0 时,经反相后使或门输出为 1,此时仅由 TR0 控制与门的开启,与门输出 1 时,控制开关接通,计数开始;当 GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和 TR0 共同控制。当 TR0=1 时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。计数模式时,计数脉冲是 T0 引脚上的外部脉冲。计数初值与计数个数的关系为:X=2^13-N。

  1. 方式 1:
    方式 1 的计数位数是 16 位,由 TL0 作为低 8 位,TH0 作为高 8 位,组成了16 位加 1 计数器。其结构图如下所示

计数初值与计数个数的关系为:X=2^16-N。

五、 定时器配置

在使用定时器时,应该如何配置使其工作?其步骤如下(各步骤顺序可任意):
①对 TMOD 赋值,以确定 T0 和 T1 的工作方式,如果使用定时器 0 即对 T0 配置,如果使用定时器 1 即对 T1 配置。
②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1。
③如果使用中断,则对 EA 赋值,开放定时器中断。
④使 TR0 或 TR1 置位,启动定时/计数器定时或计数。

在这里插入图片描述

void time0_init(void)
{
TMOD|=0X01;//选择为定时器 0 模式,工作方式 1
TH0=0XFC;//(65536-1000)/256 //给定时器赋初值,定时 1ms
TL0=0X18;//(65536-1000)%256
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}   

对于定时器 1 的使用方法是一样的,只是将上述的 0 变为 1 即可

void time0() interrupt 1 //定时器 0 中断函数
{//中断响应需要实现的内容
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215397.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一图看懂!生成式AI 算法现状

截至2023年8月,在算法备案系统登记的相关算法已经有151个,我们可以观察到All in AI的中国公司布局生成式AI算法的现状。在这151个算法中,33.8%的生成合成式算法都集中在文本生成领域,而图像、多媒体和音频方向也是各家的主攻方向之…

window系统,如何多开微信

window系统多开微信的方法其实有很多种,今天我们介绍一种超实用简单的方法多开微信。 方法: 用命令符打开多个微信的方法介绍 用命令符打开多个微信之前,需要先获取当前微信的安装目录地址。 右键微信图标,单击“属性”。 在目标文本框下可…

PDF控件Spire.PDF for .NET【转换】演示:将PDF彩色图像转换为灰度(黑白)

将包含彩色图像的 PDF 转换为灰度图像可以帮助您减小文件大小,并以更实惠的模式打印 PDF,而无需消耗彩色墨水。在本文中,您将了解如何使用Spire.PDF for .NET在 C# 和 VB.NET 中以编程方式实现转换。 Spire.Doc 是一款专门对 Word 文档进行操…

【数值计算方法(黄明游)】解线性代数方程组的迭代法(一):向量、矩阵范数与谱半径【理论到程序】

文章目录 一、向量、矩阵范数与谱半径1、向量范数a. 定义及性质补充解释范数差 b. 常见的向量范数 l 1 l_1 l1​、 l 2 l_2 l2​、 l ∞ l_\infty l∞​ 范数性质关系 2、矩阵范数a. 矩阵的范数b. 常见的矩阵范数相容范数算子范数 3、谱半径4、知识点总结1. 向量范数2. 矩阵范数…

数字图像处理(实践篇)二十二 使用opencv进行人脸、眼睛、嘴的检测

目录 1 xml文件 2 涉及的函数 3 实践 使用opencv进行人脸、眼睛、嘴的检测。 1 xml文件 方法① 下载 地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_default.xml文件 对着Raw右键,选择“链接…

和鲸科技携手深圳数据交易所,“数据+数据开发者生态”赋能人工智能产业发展

信息化时代,数据驱动决策的重要性日益凸显。通过利用数据可以深入了解市场需求、客户行为、竞争态势等关键信息,从而制定更为有效的战略和决策。围绕推动数据要素产业发展,近日,深圳数据交易所(以下简称“深数所”&…

ALTERNET STUDIO 9.1 Crack

ALTERNET STUDIO 9.1 发布 宣布 AlterNET Studio 9.1 版本今天上线。AlterNET Studio 9.0 是一个中期更新,重点是改进我们所有的组件库。 以下是 AlterNET Studio 9.1 的发布亮点: Roslyn C# 和 Visual Basic 解析器现在支持代码修复/代码重构。 代码修复…

JVM虚拟机系统性学习-对象存活判断算法、对象引用类型和垃圾清除算法

垃圾回收 在 JVM 中需要对没有被引用的对象,也就是垃圾对象进行垃圾回收 对象存活判断算法 判断对象存活有两种方式:引用计数法、可达性分析算法 引用计数法 引用计数法通过记录每个对象被引用的次数,例如对象 A 被引用 1 次&#xff0c…

docker mysql8 设置不区分大小写

docker安装Mysql8.0的坑之lower_case_table_names_docker mysql lower_case_table_names-CSDN博客https://blog.csdn.net/p793049488/article/details/108365929 docker run ‐di ‐‐nametensquare_mysql ‐p 33306:3306 ‐e MYSQL_ROOT_PASSWORD123456 mysql

广东佛山开房屋租赁发票

我是20223年12月办理的,给大家做个参考。 一、准备材料 (如果非房东本人办理,还需要房东签份授权书,多复印几份或者直接签多份,不然会被税务局收走) 废话不多说,直接上图。 二、线上预约 附个…

变量与方法面试题

char 型变量中能不能存储一个中文汉字,为什么? char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法)&a…

内存cache大量使用问题导致应用异常问题

概述 28s应用崩溃查看内存使用有大量cache。 分析 查看free 信息平时的确存在大量cache使用的情况查看dmes信息发现filesendserver崩溃 崩溃信息为系统调用 查看到page allocation failure:order 5 同时也看到系统内存使用情况 查看到系统实际还有部分内存为空闲内存&am…

如何部署自己的服务渲染页面为Pdf文档

前言 相信大家都觉得官方发布的文档生成模块https://docs.mendix.com/appstore/modules/document-generation/很有用,它能把Mendix页面像素级导出到Pdf文件中,这对于归档等业务非常有价值。但部署依赖公有云提供的渲染服务,而中国本土用户对…

<软考高项备考>《论文专题 - 4 论文题目和框架》

1 大数据分析论文的题目 2 论文写作的基础 2.1 10大知识域、49个过程、5大过程组 领域启动计划执行监控收尾整合管理1.制定项目章程2.制订项目管理计划3.指导与管理项目工作4.管理项目知识5.监控项目工作6.实施整体变更控制7.结束项目或阶段范围管理1.规划范围管理2.收集需求…

mysql数据库学习笔记(1)

今天开始学mysql数据库,为什么要学这个呢,因为数据库可结构化存储大量的数据信息,方便用户进行有效的检索和访问。数据库可有效地保持数据信息的一致性、完整性、降低数据冗余。数据库可满足应用的共享和安全方面的要求,把数据放在…

《Spring Cloud Alibaba 从入门到实战》分布式消息(事件)驱动

分布式消息(事件)驱动 1、简介 事件驱动架构(Event-driven 架构,简称 EDA)是软件设计领域内的一套程序设计模型。 这套模型的意义是所有的操作通过事件的发送/接收来完成。 传统软件设计 举个例子,比如一个订单的创建在传统软…

Vuex快速上手

一、Vuex 概述 目标:明确Vuex是什么,应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。例如:购…

数字化手术麻醉临床信息系统源码,全方位实时数据调阅及采集,自动生成各种手术医疗文书

医院手术麻醉管理系统源码,自主版权,二次开发方便快捷 技术架构:PHP、 js 、mysql、laravel、vue2 手术麻醉临床信息管理系统是数字化手段应用于手术过程中的重要组成部分,用数字形式获取并存储手术相关信息,既便捷又…

【深度学习】注意力机制(二)

本文介绍一些注意力机制的实现,包括EA/MHSA/SK/DA/EPSA。 【深度学习】注意力机制(一) 【深度学习】注意力机制(三) 目录 一、EA(External Attention) 二、Multi Head Self Attention 三、…

使用wire重构商品微服务

一.wire简介 Wire 是一个轻巧的Golang依赖注入工具。它由Go Cloud团队开发,通过自动生成代码的方式在编译期完成依赖注入。 依赖注入是保持软件 “低耦合、易维护” 的重要设计准则之一。 此准则被广泛应用在各种开发平台之中,有很多与之相关的优秀工…