7.1单片机入门教程之定时器

本文介绍了51单片机中的定时器,作为内部资源,它可以实现计时和提高CPU效率。定时器有多种工作模式,其中模式1最为常用。通过配置寄存器,定时器可以启动计数,当达到预设值时产生中断。中断系统在此过程中起到关键作用,允许CPU处理其他任务。此外,文章还讨论了软件定时器、ROM和RAM的区别,以及相关的寄存器配置。
摘要由CSDN通过智能技术生成

1.定时器的介绍

51单片机的定时器属于单片机的内部资源,他的电路的连接和运转都是在单片机的内部进行完成的。这个定时器和我们之前学的比如说是独立按键,数码管还有lcd1602之类的这些硬件实际上都是单片机的io口控制的一个外设,就像我们单片机都是实实在在的设备但是我们这个定时器的话,虽然说是一个实在的电路但是这个电路是可以在这个单片机的内部进行完成的,就是说如果把单片机上面的STC89C52那个芯片拿走的话,就只有这个单片机也可以完成定时器这个功能,所以我们是这个单片机就是属于单片机的一个内部资源。

🍻1.1定时器的作用

1用于计时系统,可实现 软件计时,或者使程序每隔一固定时间完成一项操作。

2 替代长时间的 Delay(),提高 CPU 的运行效率和处理速度,当然还有其它的一些用途。

注意⇢在进行Delay()的时候CPU是干不了其它的事情的,就会占用CPU的时间。如果用定时器来计这个"死等"的时间,那么此时CPU就可以做其它的事情了。比如-按键扫描

💣1.2软件定时和两种寄存器的介绍

软件定时

软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。

但由于软件定时器是通过程序实现的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。

两种寄存器的介绍

在单片机里面,有两种寄存器,第一种是ROM(read only memory),第二种是RAM(read random memory)

⒈ROM的功能(只读储存器)⇢ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变,就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理

⒉RAM的功能(随机储存器)⇢RAM就是在程序运行中,数据会随时改变的,就像我们的黑板,写上了可以擦,擦完再写上去,相当于程序运行的时候,调用ROM里面的数据进行各种运算

2.STC89C52定时器资源

注意:T就是Timer(计数器)的缩写,现在很多不同类型的单片机还会增加额外的定时器,对于单片机每一个功能模块来说,都是由他的特殊寄存器来控制的

3.定时器框图

定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号『注:这个闹钟是有一个时钟给它提供一个脉冲的计数脉冲』。每隔 "一秒" (这每隔一秒是相当于小闹钟每隔一秒走一格的,但我们这个定时器不是每隔一秒是每隔一个固定的时间段),计数单元的数值就增加一,当计数单元数值增加到 "设定的闹钟提醒时间" 时 (就是当我们闹钟加①加①之后加到最大值的时候,最后会拥有一个设定的闹钟,那么在这个51单片机里面就是设定的最大值),计数单元就会向中断系统发出中断申请 (中断系统(中断系统是为了使得CPU具有外界紧急事件的实时处理能力而设置的)其实也是51单片机的内部资源,那么中断系统其实就是一个消息提醒的一个机制"就相当于别人打断了你"),产生 "响铃提醒" ,使得程序跳转到中断服务函数中执行!

4.定时器的工作模式

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

模式0:13位定时器/计数器

模式1:16位定时器/计数器(常用)

模式2:8位自动重装模式

模式3:两个8位计数器

在这里由于模式一是最最常用的一个模式,那么接下来我们就来详细讲解下模式一的工作模式

如上图所示

这一段是定时器提供时钟时间的

这一段是属于它的计数系统

这一段是它的一个中断,其实中断后面还有电路

5.计数器的工作流程

1『定时系统是怎么计数的TL0TH0,其实这个是一个十六位的一个计数器。在这个里面它拥有一个计数系统,高字节叫做 TH低字节叫做 TL0 代表的是定时器 0,这两个字节总共可以计数到 65535 ,注⇢定时器只能从 0~65535,到 65535 你想让它接下来继续往后面的话,它是不可以的(已经是最大的数字了)

⒉『那么这个计数系统如何工作』计数系统的左边的时钟给了它提供了一个脉冲(方波),每来一个脉冲它的定时器的值就会加 1,一直这样循环往复的话。当加到 65535 的时候,那么再下一个脉冲的时候它就会产生一个溢出,溢出的时候这个计数器就会到原来0的一个位置(因为65535加1的时候它就会回到0的位置)。所以,当它溢出的时候会掷出一个标志位。『TF0→标志位』,拥有了这个标志位它就会想中断系统进行申请中断,主要就是靠上述所说的功能来进行实现,这也是它的一个工作机制

如上图所示的就是属于计时系统的控制位,用来控制时钟,TR0用来控制定时器的启动是不是暂停,当给TR0赋值是1的时候就是开始计数

Gate等于0的时候,经过

就会变为1,

这个的话相当于编程中的或|操作,都是0即为0,这当gate是0的时候,经过这两个操作就是变为1了,

这个相当于编程里面的&操作只有当TR0等于1的时候才会给他返回1然后开始计数

定时器时钟

SYSclk⇢系统时钟,即晶振周期,本开发板上的晶振为 12 或 11.0592 MHz,MCU in 12T mode 进行 1MHZ 的一个分频,每隔 1us 进行一次计数,当它为最大值的时候就会产生一次的中断。频率公式 f = 1 / T,12 = 1 / T,例如:50=1 / T,算出来T=0.02秒,也就是50hz。的频率下振动一次需要0.02秒,以HZ为单位,T以秒(s)为单位。

分频→它会把12T的这个模式进行分频输出1MHZ。

拓展秒换算如下↓

1MHZ=1000 000HZ

1KHZ=1000HZ

1KHz = 103Hz 1MHz = 103KHz 1GHz = 103MHz 1THz = 103GHz

1秒(s) =1000毫秒(ms)

1毫秒(ms)=1000微秒 (us)

1微秒(us)=1000纳秒 (ns)

1纳秒(ns)=1000皮秒 (ps)

1千赫 (kHz 103 Hz) = 1 000 Hz;

1兆赫 (MHz 106 Hz) = 1 000 000 Hz;

1吉赫 (GHz 109 Hz) = 1 000 000 000 Hz;

1太赫 (THz 1012 Hz) = 1 000 000 000 000 Hz;

T0 pin ⇢ 单片机外部上的一个接口,时钟可以由系统时钟来进行提供也可以由外部的引脚来进行提供。当它由外部引脚来进行一个提供的话。我们的定时器其实就是一个计数器,因为外部引脚每次来一个脉冲它就会进行一个加1的操作,就相当于是计脉冲的一个计数器。

所以,我们可以看到这个时钟有两个来源 系统时钟、外部的引脚(不是很常用)

如上图所示:这是一个选择开关,C = Count(计数) ,T = Timer(计时器) ,C = 1、T = 0,如果这一位给 1 就链接到 T0 pin (计数器),给 0 的话就是连接到 SYSclk(定时器)。

6.中断系统

😋6.1中断系统流程图

主程序(main)函数 --> 其它子函数 --> 中断来了定时器溢出,中断请求 --> 跳转到中断的一个函数里面执行中断里面的任务 --> 中断执行完之后再返回原来断点的地方就是原来从哪里停的现在从哪里回来(实际上相当于调用完函数执行下面的内容) --> 然后再继续执行主函数。

7.STC89C52中断资源

interrupt0 表示的是外部中断(0)。

interrupt1 表示(定时器中断0)

interrupt2 表示(外部中断1)

interrupt3 表示(定时器中断1)

interrupt4 表示(串口中断)

interrupt5表示(定时器2中断)

interrupt6表示(外部中断2)

interrupt7表示(外部中断3)

8.定时器和中断系统

  • 中断源:INT0(外部中断0)

  • INT1(外部中断1)

  • T0(定时器0)

  • T1(定时器1)

  • RXD和TXD(同属串口中断)

🌷8.1大概流程

定时器时钟系统[12MHZ分频]

计数系统(TR0启动⒈或者暂停0)然后计数器开始增加增加到溢出产生中断

接在TF0,ET0两个开关

PT0有两个开关(决定了到高优先级还是低优先级,注:PT0为1高优先级、PT0为0低优先级)

9.1定时器有关的寄存器

单片机通过配置寄存器来控制内存线路的连接,通过内部线路的不同连接方式实现不同的电路,然后通过不同的电路实现不同的功能

拓展:在二进制数中意为最低有效位,一般来说,MSB 位于二进制数的最左侧

LSB 位于二进制数的最右侧。

寄存器是连接软硬件的媒介.

在单片机中寄存器就是一段特殊的 RAM 存储器,一方面,寄存器可以存储和读取数据,另一方面,每一个寄存器背后都连接了一根导线,控制着电路的连接方式,拓展:ROM 又被称作是 "随机存储器"。寄存器相当于一个复杂机器的"操作按钮"。

注:实际上在我们写程序的时候只要配置定时器相关的寄存器就可以了

😷9.1可寻址和不可寻址

可寻址就是说可以对寄存器的每一个操作单独进行赋值,不可寻址就是说只能对寄存器中的每一步操作进行整体赋值

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值