51单片机入门:定时器

定时器的介绍

定时器:51单片机的定时器属于单片机的内部资源,其电路的设计连接和运转均在单片机内部完成。根据单片机内部的时钟或者外部的脉冲信号对寄存器中的数据加1,定时器实质就是加1计数器。因为又可以定时又可以计数,又称之为定时/计数器

作用:在写程序时经常会用到延时代码,比如用循环来实现延时(即让CPU不断进行记数)。但CPU在记数(执行延时)的时候做不了其他的事情,且这种延时是不精确的。因此需要一个工具来帮助CPU进行记数,而这个工具便是定时器。

例如你想在十分钟后做某事,如果身边没有任何工具,你就要自己数600秒,而在你数数时无法分心做其他事。但如果身边有个闹钟,就能定一个10分钟的闹钟,而在这10分钟内你可以做别的事情。

需要注意的是定时器大部分使用情况要搭配中断系统

与定时器相关的寄存器:TH1、TL1、TH0、TL0、TMOD、TCON。

与中断相关的寄存器:IE、IP。


定时与计数

定时功能:通过内部或外接的晶振(即SYSclk),对内部寄存器中的值进行递增计数,当计数到预设值时,定时器会产生一个中断请求信号,通知CPU进行相应处理。(相当于闹钟响了提醒你该做事情了,即定时作用)

计数功能:主要通过外部引脚(T0 Pin/T1 Pin)来实现,只有当外部事件发生时才会产生一个脉冲信号,触发内部寄存器进行加1操作。(它不像定时功能一样以固定的频率递增计数)


定时器资源

以STC89C52为例,其定时器个数为3个(T0、T1、T2),T0、T1与传统的51单片机兼容,T2是此型号单片机增加的资源。

 注意:定时器的资源和单片机的型号关联在一起,不同型号可能含有不同的定时器个数和操作方式。但一般来说,T0、T1的操作是所有51单片机共有的。


CPU时序

指令周期:CPU每取出一条指令并执行这条指令,都要完成一系列的操作,这一系列操作所需要的时间称为指令周期。

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

时钟周期:时钟周期T又称为振荡周期,由单片机片内振荡电路OSC产生,常定义为时钟脉冲频率的倒数,是时序中最小的时间单位。例如,若某单片机时钟频率为1MHz,则它的时钟周期T应为1μs。

三种周期的关系:指令周期由若干(通常1~4)个机器周期组成,而机器周期又包含若干(通常为12)个时钟周期。

状态周期:每个状态周期为时钟周期的两倍。

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


定时器工作模式

对于STC89C52的T1和T0均有四种工作模式:

模式013位定时器/计数器
模式116位定时器/计时器
模式28位自动重装模式
模式3两个8位计数器

 其中模式1最为常用,故只介绍模式1。模式1的内部连接如下所示,可分为三个部分:

SYSclk:系统时钟,即晶振频率,通常为12MHz或11.0592MHz。

进位规则:模式1下,T0的定时器配置为16位定时/计数器,由TL0和TH0的8位(共16位)构成。当TL0的8位溢出时向TH0的8位进位 ,TH0技术溢出时,向TCON中的溢出标志为TF0进位(TF0由0变1)。

计数速率:STC89C52系列的单片机的定时器有两种计数速率(分频):一种是12T模式,每12个时钟加1,与传统8051单片机相同;另一种是6T模式,每6个时钟加1,速度是传统8051单片机的两倍。

 计数器由时钟提供提供脉冲信号,经过分频器(12分频或6分频),每来一次脉冲则计数器加1,当计数到达65535时下一个脉冲会溢出,触发中断(即告诉CPU闹钟响了该干事情了)。

工作方式寄存器TMOD

TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1,具体如下:

01234567
字节地址:89HM0M1C/TGATEM0M1C/TGATE

C/T为定时/计数选择位,寄存器TMOD中的一位,用来控制选择开关:当C/T为1时,连接T0 Pin,为计数器功能;当C/T为0时,连接SYSclk(系统时钟),为定时器功能。

GATE为门控位,当GATE为0时,经过非门为1,进入或门(因为或门为有1出1,因此此时可忽略INT0),再进入与门,当TR0为1时才能出1,这样contorl开关才能连通;当GATE为1时,INT0必须为1,TR0为1时开关才能连通。

 M0/M1为四种工作模式设置位

M0M1工作模式说明
0 0模式013位定时/计数器
0 1模式116位定时/计数器
1 0模式28位自动重装
1 1模式3两个8位计数器

 工作方式寄存器TCON

TCON的高四位用于定时/计数器的启动和中断申请;低四位用于外部中断。此处只介绍高四位。

01234567
字节地址:88HTR0TF0TR1TF1

 TF1:T1溢出中断请求标志,T1计数溢出时由硬件自动使TF1=1。CPU响应中断后硬件自动使TF1=0。(TF1也可以由软件置1或0)

TR1:T1运行的控制位。当TR1=1时,T1开始工作;当TR1=0时,T1停止工作。TR1由软件控制,故软件可控制定时/计数器的启动与停止。

TF0、TR0:针对于T0,作用与上述的TF1、TR1一样。


 中断系统

中断系统是为了使CPU具有对外界紧急事件的实时能力而设置的。

中断:当CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后再回到原来被中断的地方,继续原来的工作。实现这种功能的部件称为中断系统

中断源:请示CPU中断的请求源称为中断源。中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断时,要进行优先级排序(优先处理最紧急的中断请求源)。CPU总是先响应优先级别高的中断请求。

中断嵌套:当CPU正在处理一个中断源请求时,发生了另一个优先级高的中断源请求。CPU暂停对原来的中断源的服务程序,转而去处理优先级更高的中断请求源,处理完后再回到原低级中断服务程序,最后回到主程序。此过程为中断嵌套。这样的中断系统为多级中断系统,没有中断嵌套的系统为单级中断系统

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

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

相关文章

Apipost智能Mock功能详解

在接口开发过程中,Mock功能可以帮助开发者快速测试和验证接口的正确性和稳定性,以便快速迭代和修复问题。Apipost推出智能Mock功能,可以在智能期望中填写一些触发条件,开启后,Apipost会根据已设置的触发条件&#xff0…

python食品安全信息管理系统flask-django-nodejs-php

。 食品安全信息管理系统是在安卓操作系统下的应用平台。为防止出现兼容性及稳定性问题,编辑器选择的是Hbuildex,安卓APP与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进食品安全信…

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点: 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

大模型分布式推理ray

一、目录 1 框架 2. 入门 3. 安装教程 4. 相关文档、案例阅读 二、实现 1 框架:Ray:将一个模型拆分到多个显卡中,实现分布式预测、训练等功能。 2. 入门 : 案例:通过ray 实现分布式部署,分布式推理服务。…

python拍卖行系统的设计与实现flask-django-nodejs-php

此系统设计主要采用的是python语言来进行开发,采用django/flask框架技术,框架分为三层,分别是控制层Controller,业务处理层Service,持久层dao,能够采用多层次管理开发,对于各个模块设计制作有一…

排序算法记录(冒泡+快排+归并)

文章目录 前言冒泡排序快速排序归并排序 前言 冒泡 快排 归并,这三种排序算法太过经典,但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大,但时间长了也还好。主要是回忆这些算法干了啥很耗时间。 如果在笔试时要写一个o(nlogn)的…

408学习笔记-17-C-C/C++中程序内存区域划分

C/C中程序内存区域划分 C/C程序内存分配的几个区域: 1、栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高…

基于python+vue拍卖行系统的设计与实现flask-django-nodejs-php

拍卖行系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,拍卖行…

Flink:维表 Join 难点和技术方案汇总

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

SQLiteC/C++接口详细介绍sqlite3_stmt类(十二)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(十一) 下一篇: SQLiteC/C接口详细介绍sqlite3_stmt类(十三) 48、sqlite3_stmt_isexplain sqlite3_stmt_is…

2024蓝桥杯每日一题(单调队列)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:单调栈 试题二:滑动窗口 试题三:子矩阵 试题四:最大子序和 试题一:单调栈 【题目描述】 给定一个长度为 N 的整数数列,输出每…

jvm提供的远程调试 简单使用

JVM自带远程调试功能 JVM远程调试,其实是两个虚拟机之间,通过socket通信,达到远程调试的目的; 前提 确保本地和远程的网络是开通的; 本地操作 远程操作 在启动命令参数中 把上面的内容复制进去

【3GPP】【核心网】【4G】4G手机接入过程,手机附着过程(超详细)

1. 4G手机接入过程,手机附着过程 附着(Attach): 终端在PLMN中注册,从而建立自己的档案,即终端上下文 进行附着的三种情况: ①终端开机后的附着,初始附着 ②终端从覆盖盲区返回到…

解决用POI库生成的word文件中的表格在python-docx无法解析的问题

问题背景 用apache-poi生成word文件中表格&#xff0c;在使用python-docx库解析时报错&#xff1a; 问题分析 1. word文档本质上是一个rar压缩包&#xff0c;用winrar解析后如下&#xff1a; 2. 查看document.xml&#xff0c;可以看到table元素下面是没有<w:tblGrid>这…

Vue3快速上手(十七)Vue3之状态管理Pinia

一、简介 Pinia官网:https://pinia.vuejs.org/zh/ 从官网截图里可以直接看到,pinia是一个vuejs的状态(数据)管理工具。功能性同vuex。logo是小菠萝。它是一个集中式状态管理工具。就是将多个组件共用的数据管理起来,重复利用。有点类似缓存的意思。 二、Pinia环境搭建 …

【LVGL-按钮按钮矩阵部件】

LVGL-按钮&按钮矩阵部件 ■ LVGL-按钮部件■ 按钮部件&#xff1a; 点击三个按钮一个回调函数修改label值。 ■ LVGL-按钮矩阵部件■ 示例一&#xff1a;按钮换行&#xff0c;和宽度设置。■ 示例二&#xff1a;设置按钮宽度为2倍■ 示例三&#xff1a;获取点击的按钮下标&…

大数据主要组件HDFS Iceberg Hadoop spark介绍

HDFSIceberghadoopspark HDFS 面向PB级数据存储的分布式文件系统&#xff0c;可以存储任意类型与格式的数据文件&#xff0c;包括结构化的数据以及非结构化的数据。HDFS将导入的大数据文件切割成小数据块&#xff0c;均匀分布到服务器集群中的各个节点&#xff0c;并且每个数据…

Gartner发布网络安全应用生成式AI指南:应用生成增强功能提升企业网络安全能力和效率的三个领域及9个实例

生成增强功能是专门为提高知识工作者的生产力、解决网络安全技能短缺问题并降低大型语言模型带来的风险而构建的。安全和风险管理领导者通过在运营中采用生成增强来提高团队的能力。 主要发现 与其他人工智能实现相比&#xff0c;生成式人工智能 (GenAI)解决方案&#xff0c;特…

绿色节能|AIRIOT智慧建材能耗管理解决方案

建材供应是建筑业不可或缺的一个重要环节&#xff0c;在环保和企业可持续发展的双重需求下&#xff0c;建材生产商对建材生产过程中的能耗掌握和能耗管理尤其关注。但在实际生产和运营过程中&#xff0c;传统的建材能耗管理方式往往存在如下痛点&#xff1a; 用户管理权限不完善…

汽车ECU的虚拟化技术(五) -- 对MCU虚拟化实现难点的思考

目录 1.概述 2.虚拟化软件的难点 2.1 虚拟化中的中断处理 2.2 虚拟ECU的通信 3.小结 1.概述 在上面文章里汽车ECU的虚拟化技术(四) -- 对MCU虚拟化实现难点的思考-CSDN博客&#xff0c;解了OEM面临新的电子电气架构下的集成难点&#xff0c;引入了hypervisor以及VM调度机制…