51单片机定时器详细全解.上

原创 云深之无迹 2022-06-22 18:34


看了很多几本单片机的书,对51定时器的认识又有了一些新的变化。开局一张图(一个简单的单片机程序),其实文章也是来解释这个代码的写法。




在此,后面也会对STC官方的库,做详细的解读和使用




我们使用串口,设置它的寄存器


一共4种模式,八位的可变



2位,4个状态


B6位为0的时候,B7用于帧错误检测,当检测到一个无效的停止位的时候,UART设置它,软件清0.



这个方式0,是使用一个专用的SBUF发送的



TI标志位


发送完以后,自动的变1,相对于有了一个中断。然后中断系统处理,处理完以后就要把状态变回去。



RI也是,一发一收



接收的一个函数



这里是注意的编程要点



这里要开启UART的中断,先开启大中断,接着开启串口的中断



REN是收发功能的开关



1,2,3都是异步通信,0是移位寄存器



接下来配置定时器




只有两个寄存器,灵活使用要



TCON是这样的



TR1,相对于是使能位


关于定时器不得不说,而且最近看了几本相对古老的书,真的很清晰,现在的书比喻一堆也不知道想说什么。


对51来说,其实是只有4种方式:


1、51单片机计数器的脉冲输入脚。主要的脉冲输入脚有Px,y, 也指对应T0的P3.4和对应T1的P3.5,主要用来检测片外来的脉冲。而引脚18和19则对应着晶振的输入脉冲,脉冲的频率和周期为:


F = f/12 = 11.0592M/12 = 0.9216MHZ T = 1/F = 1.085us

2、定时器有两种工作模式,分别为计数模式和定时模式。对Px,y的输入脉冲进行计数为计数模式。定时模式,则是对MCU的主时钟经过12分频后计数。因为主时钟是相对稳定的,所以可以通过计数值推算出计数所经过的时间。所谓的定时器就是恒定的数数。

3、51计数器的计数值存放于特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)



其实就是容器,存放脉冲数的



这是我们单片机的4种定时器模式


4、TLx与THx之间的搭配关系


以下的进制,就是向前进位的意思。

1)、TLx与THx之间32进制。即当TLx计到32个脉冲时,TLx归0同时THx进1。这也称为方式0。


注意x,是两个定时器的意思。



这个图可能更清晰


2)、TLx与THx之间256进制。即当TLx计到256个脉冲时,TLx归0同时THx进1。这也称为方式1。


在方式1时,最多计65536个脉冲产生溢出。在主频为11.0592M时,每计一个脉冲为1.085us,所以溢出一次的时间为1.085usx65536=71.1ms。


2的16次方


3)、THx用于存放TLx溢出后,TLx下次计数的起点。这也称为方式2。
4)、THx与TLx分别独立对自己的输入脉冲计数。这也称为方式3。




最后再看一下这个定时器的容器


H,L都是高低位的说明。


定时器初始化


1)、确定定时器的计数模式。
2)、确定TLx与THx之间的搭配关系。
3)、确定计数起点值。即TLx与THx的初值。
4)、是否开始计数。TRx


看不懂没有关系,继续磨豆腐,再看别的解释。




16位的寄存器最大的数值是这样的



13位是这么大


0,13位模式

1,16位模式

2,8位自动重装模式

3,两个八位模式


有个问题是,定时器总是和中断关联,其实就是,你再应用的时候,不学任何一个都不行。



中断就好像是权力巨大的IF程序,来了以后主程序就得搭理,妈的。就好像,来了快递你必须要去取1一样。


在51里面,这么屌的事件,有这么几个。更装逼的名字叫中断源。分类有三种,外部引脚来的中断,也就是测量使用,比如你想测量一个波形的占空比,一个波肯定是有边沿的,你记录这两个事件,接着你计算中间的时间,相对于计数,这就测量出来了。


其次就是定时器的中断,和UART的中断。


一个这样的来源,就有一个这样的标志,这也好理解啊,你总得说明它发生了不是吗?


这个世界是高速并行的,对于单片机的世界也是,经常多个中断一起来,关于顺序的问题,引入的解决方案是优先级。


害,有个无奈的事情,就是有的东西天生就自带光环,比如复位事件。基本上就是活土匪了,妈的,我来了,谁也别活。。。



一个中断究竟要怎么样的触发,对于现实世界来讲,就是消息。打电话,喊叫,或者看见。总之是发生了什么。


单片机也是这样,发生了什么。


我想聊聊定时器中断,时刻记得两个使命,定时和计数。其实你该想想时间是什么作用。其实是标度的概念。它说明了两个点,起点和终点,在定义它是均匀的时候,那么你可以无聊的数一下有多少。


总结一下,定时器,不如说是时间,它就是一把尺子。中断就是定位使用的标尺,说:我想从这里开始计数,到下个位置停止。


当然了,处于对技术上面的妥协,定时器中断也来做别的工作。对于定时,有长有短。对于特别长的时间呢。就好像下面这样:



右边是一个计时的间隔



这样看


不同于我们世界的计时法,我们可以看表,秒针一动,一个时间间隔,单片机没有这种东西,它有的是是振荡器。12M,这东西0都数不清,所以不能之间使用,这里就做除法。


我们把这个间隔记录下来,满了以后就传一个数值出去,接着把这个清空,继续装东西,好咧,这就是定时器所有的奥秘了。




接下来看看中断的结构



对于定时器的中断寄存器就是这样



这里面没有编程模型,但是我非要加点这个东西进去。查询模型,查询标准位,然后balabala。


4个中断控制寄存器分别是,定时器,UART,中断允许,中断优先级。功能是中断标志,中断允许,优先级设定。


IE0 ,外部中断0标志当它位1的时候,向CPU发送中断,CPU响应以后硬件请0.



这个就是什么样的信号来激发


单片机响应中断以后,不会自动的关闭中断。转向ISR以后,把中断关闭。为了响应下一次中断。



外中断1,脉冲触发这样设置


这里还需要说一下,中断优先级。两级,高或者低。低级可以被高级的打断,同级不响应。



这个表的作用就是同时来了中断,响应的顺序



这样写ISR



毕竟在主线搬砖,现在突然去支线干活,所以需要保护现场


先把手头的工作做完,PC是执行下一次主线命令的指针,也放入stack。接着搞个围栏,挡同级的中断。ISR虽然小,但也还是一个函数,所以它的PC值装载在主线中,开始运行。



ISR完成的标志是,返回RETI这个指令,相当于,老子完事了~至于这个中断来的时候去哪里执行ISR,也就是入口在哪里,这个是固定的。


这个时候,引起中断的位置会自动清0,主程序的第一条指令是跳转指令,越过这个中断的向量区。


最后擦屁股得指令就用RETI,这个指令可以把中断优先级状态还原,否则中断就认为中断还在运行。还有建议就是PUSH和POP得成对使用。



后面得这个激发次数比较重要



外部中断0 ,下降沿触发




看看汇编得版本



这个是中断得向量表,一个长跳转带你去main还是exit0



mian很简单,初始化sp,然后就是一些设置



最后是服务程序,CPL操作IO ,RRTI来说明中断完成



这段有点拗口


这里需要补充一些东西:


1T、4T、6T和12T是指一个机器周期需要的时钟周期数。比如现在普遍的51单片机STC89S52是12T的,其1个机器周期等于12个时钟周期。


也就是说,机器周期大,时钟周期小。


时钟频率:是指为单片机提供时钟信号的振荡源的周期(也叫时钟周期),当采用12MHz晶振时,一个振荡周期是1/12M秒(1/12000000s)。


时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位


机器周期:对于标准51架构而言,1个机器周期为12个时钟振荡周期,即1微秒。具体计算为:时钟周期 X cycles。如果单片机是12T的话,那么机器周期就是时钟周期×12。


指令周期:执行一条指令的时间,是机器周期的倍数。不同的CPU,执行不同的指令,所需要的指令周期不同。 


机器周期是单片机执行的最小倍数。


不同的单片机指令执行速度不同。1T单片机的计时器是兼容传统12T单片机的。也就是说只是执行一般的指令会快12倍。



新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。


就是什么1T单片机,比传统的快12倍。


在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。


在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。


完成一个基本操作所需要的时间称为机器周期。


一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说:


一个机器周期=6个状态周期=12个时钟周期


指令周期

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

时钟周期、机器周期、指令周期之间的关系图如下。


时序图


时钟周期(振荡器的倒数)最小,写做一个P,接着把这个X2,当作状态周期。


6个状态作为一个机器周期。


通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

MCS-51中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:

·单字节指令单机器周期·

单字节指令双机器周期·

双字节指令单机器周期·

双字节指令双机器周期·

三字节指令双机器周期·

单字节指令四机器周期(如单字节的乘除法指令)



这里截取数据手册看看。注意看,都是使用的机器周期,好好牢记,6个状态一个机器周期。



指令时序图


为了好说明指令在什么时候执行,这里就写:



S1P2

S2P1

S取(1-6),P(1,2),就这样


S是6分频的时钟周期




现在再看这个


S5P2,是不是可以看懂了。在第五个状态周期的第二个时钟周期进行对外采样。


遇到特别短的脉冲的时候要考虑这个,如果太短就捕获不到了。


再总结一下:


MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期。


·节拍与状态:我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。 


·机器周期:MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。·指令周期:执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期。


呼,文章虽然很长,但是对于定时器的内容,我还是没有写出来好难受。。。



最后朋友家养了两只猫猫,毛茸茸可太可爱了!!!



好小一只

评论
  • 在当前人工智能(AI)与物联网(IoT)的快速发展趋势下,各行各业的数字转型与自动化进程正以惊人的速度持续进行。如今企业在设计与营运技术系统时所面临的挑战不仅是技术本身,更包含硬件设施、第三方软件及配件等复杂的外部因素。然而这些系统往往讲究更精密的设计与高稳定性,哪怕是任何一个小小的问题,都可能对整体业务运作造成严重影响。 POS应用环境与客户需求以本次分享的客户个案为例,该客户是一家全球领先的信息技术服务与数字解决方案提供商,遭遇到一个由他们所开发的POS机(Point of Sal
    百佳泰测试实验室 2025-01-09 17:35 88浏览
  • HDMI 2.2 规格将至,开启视听新境界2025年1月6日,HDMI Forum, Inc. 宣布即将发布HDMI规范2.2版本。新HDMI规范为规模庞大的 HDMI 生态系统带来更多选择,为创建、分发和体验理想的终端用户效果提供更先进的解决方案。新技术为电视、电影和游戏工作室等内容制作商在当前和未来提供更高质量的选择,同时实现多种分发平台。96Gbps的更高带宽和新一代 HDMI 固定比率速率传输(Fixed Rate Link)技术为各种设备应用提供更优质的音频和视频。终端用户显示器能以最
    百佳泰测试实验室 2025-01-09 17:33 96浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 88浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 68浏览
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 74浏览
  • 职场是人生的重要战场,既是谋生之地,也是实现个人价值的平台。然而,有些思维方式却会悄无声息地拖住你的后腿,让你原地踏步甚至退步。今天,我们就来聊聊职场中最忌讳的五种思维方式,看看自己有没有中招。1. 固步自封的思维在职场中,最可怕的事情莫过于自满于现状,拒绝学习和改变。世界在不断变化,行业的趋势、技术的革新都在要求我们与时俱进。如果你总觉得自己的方法最优,或者害怕尝试新事物,那就很容易被淘汰。与其等待机会找上门,不如主动出击,保持学习和探索的心态。加入优思学院,可以帮助你快速提升自己,与行业前沿
    优思学院 2025-01-09 15:48 77浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 82浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 87浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 112浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 79浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 102浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦