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暂停对原来的中断源的服务程序,转而去处理优先级更高的中断请求源,处理完后再回到原低级中断服务程序,最后回到主程序。此过程为中断嵌套。这样的中断系统为多级中断系统,没有中断嵌套的系统为单级中断系统

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!

1.1. Web技术演化 1.1.1. 简单网站 1.1.1.1. 静态页面 Web技术在最初阶段,网站的主要内容是静态的,大多站点托管在ISP上,由文字和图片组成,制作和表现形式也是以表格为主。当时的用户行为也非常简单,基本只是浏览网…

51单片机—直流电机

1.元件介绍 2.驱动电路 3.电机调速 一般会保证一个周期的时间是一样的 应用&#xff1a; 1.LED呼吸灯 #include <REGX52.H>sbit LEDP2^0;void Delay(unsigned int t) {while(t--); } void main() {unsigned char Time,i;while(1){for(Time0;Time<100;Time){for(i0;…

Linux相关命令(1)

1、找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件&#xff0c;然后把他们重新生成一下。要求只能用一行命令。 find ./ -type f -name "*aaa*" ! -name "*bbb*" -exec touch {} \;文件系统操作命令 df&#xff1a;列出文件系统的整体磁盘使用情况 …

RocketMQ基础知识和常见问题

RocketMQ 是一个 队列模型 的消息中间件&#xff0c;具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内…

Linux 创建交换空间

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

明牌空投:Cosmos生态项目Joltify零撸教程

简介&#xff1a;Joltify Finance 是基于Cosmos SDK的Layer1公链&#xff0c;做RWA赛道的&#xff0c;它可以将加密世界中的大量流动性与现实世界的金融资产合并&#xff0c;将有形资产转换为代币或NFT的过程&#xff0c;使它们能够在链上进行交易&#xff0c;从而在DeFi和传统…

内存卡损坏怎么修复数据,内存卡损坏修复数据方法

内存卡损坏是许多用户都可能面临的问题。当我们的内存卡损坏时,其中存储的重要数据可能会受到威胁,承载着我们无尽回忆的数据,一旦失去,将成为大家心中永远的遗憾。因此我们迫切需要找到一种方法来修复这些数据。本文将介绍一些内存卡损坏修复数据方法,帮助大家解决因为内…

外卖店优先级c++

题目 输入样例&#xff1a; 2 6 6 1 1 5 2 3 1 6 2 2 1 6 2输出样例&#xff1a; 1样例解释 6时刻时&#xff0c;1 号店优先级降到 3&#xff0c;被移除出优先缓存&#xff1b;2 号店优先级升到 6&#xff0c;加入优先缓存。 所以是有 1 家店 (2 号) 在优先缓存中。 思路 …

严平稳随机过程、广义平稳随机过程、各态历经性

严平稳随机过程指的是所有统计特性均与时间起点无关&#xff0c;即时间平移不影响其任何统计特性。工程上解释即可以在任意时间点去测量信号的统计特性&#xff0c;不会因为测量的时间改变而产生影响。 广义平稳随机过程&#xff0c;常常称为平稳过程&#xff0c;指的是均值与自…

makefile编译第一讲

更多精彩内容在公众号。关注公众号&#xff0c;加v&#xff0c;免费送你两本makefile电子书。轻松掌握makefile 在C和C中&#xff0c;首先要把源文件编译成中间代码文件&#xff0c;在windows下就是obj文件&#xff0c;linux下就是.o文件&#xff1a;object file。这个动作叫做…

2.9 什么是A/B测试?如何进行A/B测试?

2.9 什么是A/B测试&#xff1f; 场景描述 在互联网公司中&#xff0c;A/B 测试是验证新模块、新功能、新产品是否有效&#xff0c;新算法、新模型的效果是否有提升&#xff0c;新设计是否受到用户欢迎&#xff0c;新更改是否影响用户体验的主要测试方法。在机器学习领域中&…

Google XSS Game Level 6 通关方式

文章目录 链接&#xff1a;[Google XSS Game](#https://xss-game.appspot.com/)Level 6 - Follow the &#x1f407;思路1 &#xff08;当然&#xff0c;我使用这个方式没有成功&#xff0c;所以才来记录下&#xff09;解法2 【最简单的解法】需要注意的一个小问题 链接&#x…

C++入门笔记开源【研究生3年+7W字】

博主研究生3年时间积累了一个C的基础知识文档&#xff0c;共计7W字。几乎把常用的各种语法和接口都包含进去了。一个文档&#xff0c;markdown格式的&#xff0c;可以当做工具书来使用。由于本文档内容较多&#xff0c;直接复制到csdn会各种卡&#xff0c;而且图片链接不对&…

全智能深度演进,一键成片让视频创作颠覆式提效

全智能一键成片&#xff0c;让内容创作的「边际成本」逼近于零。 大模型和AIGC技术的发展&#xff0c;可以用“日新月异”来形容&#xff0c;其迭代速度史无前例&#xff0c;涌现出的各类垂直应用模型&#xff0c;也使得音视频行业的应用场景更加广泛和多样化。 然而&#xff…

PTA L2-027 名人堂与代金券

对于在中国大学MOOC&#xff08;http://www.icourse163.org/ &#xff09;学习“数据结构”课程的学生&#xff0c;想要获得一张合格证书&#xff0c;总评成绩必须达到 60 分及以上&#xff0c;并且有另加福利&#xff1a;总评分在 [G, 100] 区间内者&#xff0c;可以得到 50 元…

Unity vision pro模拟器开发教程-附常见问题解决方案

前言 庄生晓梦迷蝴蝶&#xff0c;望帝春心托杜鹃 废话 去年苹果发布会上&#xff0c;推出了Vision Pro这一款XR产品。并且宣布Unity作为其主要合作伙伴&#xff0c;负责开发XR的开发产品。 这消息一出&#xff0c;当晚Unity的股价直接被熔断。产品发布之后&#xff0c;一直等…

java篇 让java对象具有链式调用

一 操作 1.1 流程 1.在类中引入注解Accessors(chain true)&#xff0c;引入后&#xff0c;不要在使用自定义的getter&#xff0c;setter方法 Data Accessors(chain true) public class Student {private String name;private int age;Overridepublic String toString() {r…

【模板】AcWing873. 《欧拉函数》(C++)

【题目描述】 给定 n 个正整数 &#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义 【输入格式】 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一个正整数 。 【输出格式】 输出共 n 行&#xff0c;每行输出一个正整数 的欧拉函数。 【数据范围】 1≤n≤1…

opencv 十八 python下实现0缓存掉线重连的rtsp直播流播放器

使用opencv打开rtsp视频流时&#xff0c;会因为网络问题导致VideoCapture掉线&#xff1b;也会因为图像的后处理阶段耗时过长导致opencv缓冲区数据堆积&#xff0c;从而使程序无法及时处理最新的数据。为此对cv2.VideoCapture进行封装&#xff0c;实现0缓存掉线重连的rtsp直播流…

Mall 西瑾商城uniapp商城项目:一个全平台兼容的电商解决方案

一、引言 随着移动互联网的快速发展&#xff0c;电商行业正经历着前所未有的变革。在这个背景下&#xff0c;一个优秀的电商平台需要具备全平台兼容、高效的商品管理、用户友好的界面设计以及强大的消息和客服支持等功能。本文将详细介绍Mall 西瑾商城uniapp商城项目&#xff…