0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

08_51入门_定时器中断

天才小狸花 来源:Sigle_chip 作者:Sigle_chip 2022-09-13 10:38 次阅读

前言

在程序运行中,我们有着去定时运行某一功能的需求,或许1s、或许0.5s。如果使用delay函数,必然导致会使得其他任务阻塞。使用定时器对于程序的精准计时有着很大作用,获取去达到计时的目的,也可以使用定时器,如超声波的测距方式。

我们生活中采用秒等单位作为生活中的基本单位,而秒的详细定义为

铯-133原子位于海平面处于非扰动基态时两个超精细能级间跃迁对应的辐射频率ΔνCs以Hz(即等于s-1)为单位表达时选取固定数值9192631770倍来定义秒

其铯-133原子的辐射频率的9192631770为1s

时钟

单片机内部当然不可能使用铯原子作为计时的时钟源,通常是采用石英晶振制成的一种谐振器件,其时钟频率为其固有属性,只受到自身影响。

通过与51单片机的XTL1和XTL2引脚构成一个皮尔斯振荡器,通过内部时钟电路的整形调整,向单片机提供稳定的时钟频率。若为有员晶振直接将时钟引脚接到XTL1引脚。

常用于单片机的晶振频率有11.0592MHz,12MHz等,为什么会有11.0592这么特殊的晶振频率呢,这涉及到通信的问题,这里暂不引入。

12MHz表示以Hz(即等于s-1)为单位表达时选取固定数值12000000倍为1s。

当然,如果我们使用计数器模式,时钟源便为外部引脚的电平变化,分别是连接51单片机的 P3.4 P3.5两个口。

周期

时钟周期

其时钟周期是指振荡源的周期,定义为时钟脉冲的倒数。

外部晶振12M
则时钟周期为 1s/12M= 1S/12 000 000 = 1/12us

外部晶振11.0592M
则时钟周期为 1s/11.0592M = 1S/11 059 200 = 1/11.0592us

外部晶振24M
则时钟周期为 1s/24M= 1S/24 000 000 = 1/24us

机器周期

机器周期,是指执行一单位指令所需要的时钟周期个数。

机器周期也称为CPU周期。
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。
一般情况下,一个机器周期由若干个时钟周期组成。如 1T,就表示,需要 1个时钟周期; 12T即为 12个时钟周期。这些都只是
一单位指令的时间(如自增、自减等),多单位指令时间进行倍乘(如赋值语句需要2个机械周期,即乘以2倍),
传统的8051单片机就是12T的,即完成1个单位指令所需时间为12个时钟周期。 1T的完成1个单位指令所需时间则为1个机器周期。

传统的8051使用12Mhz晶振的机器周期是,1T的要比12T的速度更快,而STC89C51RC系列支持6T模式,相当于速度翻倍。

1T 12Mhz的机器周期为1/12us
12T 12Mhz的机器周期为1us

指令周期

CPU完成一条指令的时间叫指令周期

一般一条完整的指令包括:取指周期、间址周期、执行周期、中断周期。

寄存器

在使用定时器时,我们需要对定时器/计数器的初始化。

第一步,开中断,对IP和IE赋值。

第二步,配置模式,对TMOD赋值。

先确定定时器还是计数器,TMOD中有相应的控制位 [ C/T ]来选择T0或T1为定时器还是计数器.

在将控制位GATE打开,最后配置模式位M0,M1,两位可配置4种模式。

  1. 定时器/计数器0模式选择 13位定时器/计数器,兼容8048定时模式,TL0只用低5位参与分频,TH0整个8位全用。
  2. 16位定时器/计数器,TL0、TH0全用
  3. 8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0定时器0此时作为双8位定时器/计数器。
  4. TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制。TH0仅作为一个 8位定时器,由定时器1的控制位控制。

定时器/计数器的核心部件是一个加法(也有减法)的计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:
如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟得到一个计数脉冲,计数值加1;
如果计数脉冲来自单片机外部引脚(T0为P3.4,T1为P3.5),则为计数方式,每来一个脉冲加1。

由于8051单片机为8位单片机,寄存器最多为8位,计数周期太小。

通过两个寄存器组成16位寄存器(实际还是俩),其16位最多可计时 216个机器周期,12T,12Mhz下为 65,535us。

当开启定时器后,16位计时器每个机器周期值自加,全为1时触发中断,执行中断程序,根据是否在使用定时器再将值写入16位寄存器,学习单片机嵌入式,元器件有需求可以去唯样商城看看,学生还有优惠哦。

初值计算

TL表示低8位。TH表示高八位。

其值为

0XFFFF -(初值(单位:s)/1s)*(晶振频率/12)

其初值计算可用相应的工具,如STCISP就自带计算,但我们要理解其相应的工作方式。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6011

    文章

    44168

    浏览量

    624526
  • 定时器
    +关注

    关注

    23

    文章

    3190

    浏览量

    112735
收藏 人收藏

    评论

    相关推荐

    如何实现一个软件定时器

    在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间
    的头像 发表于 04-29 11:00 330次阅读

    单片机外部中断定时器中断的区别和用法

    单片机外部中断定时器中断在触发来源、应用场景以及功能特点上存在明显差异** **。
    的头像 发表于 01-28 17:35 1933次阅读

    51单片机定时器定时1秒程序流水灯结果分析

    流水灯的设计原理、实现步骤和结果分析。 一、设计原理 在51单片机中,定时器常用的工作方式有两种:定时器模式和计数模式。定时器模式是指
    的头像 发表于 12-26 14:57 4724次阅读

    TMS320F28335学习之中断定时器的相关内容

    本次总结为中断定时器的相关内容。除了基本的寄存配置,初始化,中断主要是掌握三级中断制,定时器
    的头像 发表于 11-08 10:17 1448次阅读
    TMS320F28335学习之<b class='flag-5'>中断</b>和<b class='flag-5'>定时器</b>的相关内容

    C51单片机的定时器介绍

    定时器是生活中常见的一种定时装置,常见的定时器有机械定时器和电子定时器
    的头像 发表于 11-02 10:48 1645次阅读
    C<b class='flag-5'>51</b>单片机的<b class='flag-5'>定时器</b>介绍

    单片机定时器中断应用案例

    定时器中断,顾名思义就是在规定的时间内发送中断请求,要实现定时器中断,单片机需要能够正确地计算时间,单片机是如何进行计时的呢?
    发表于 10-31 14:49 1087次阅读
    单片机<b class='flag-5'>定时器</b><b class='flag-5'>中断</b>应用案例

    RA2E1定时器带死区互补PWM中断延时问题分析

    RA2E1定时器带死区互补PWM中断延时问题分析
    的头像 发表于 10-27 10:56 515次阅读
    RA2E1<b class='flag-5'>定时器</b>带死区互补PWM<b class='flag-5'>中断</b>延时问题分析

    c51定时器工作时如何使用T0脚输入脉冲信号?

    c51定时器工作时如何使用T0脚输入脉冲信号? 嵌入式系统中,定时器是一种常用的设备,可以实现各种时间控制功能,如计时、计数、产生中断等。8051单片机中有两个
    的头像 发表于 10-25 11:50 735次阅读

    AT32 MCU定时器入门指南

    AT32 MCU 定时器入门指南主要就定时器溢出中断进行基础讲解和案列解析。
    发表于 10-25 07:24

    敏矽微电子Cortex-M0学习笔记08——基本定时器详解

    敏矽微电子Cortex-M0学习笔记08——基本定时器详解
    的头像 发表于 09-26 17:13 651次阅读
    敏矽微电子Cortex-M0学习笔记<b class='flag-5'>08</b>——基本<b class='flag-5'>定时器</b>详解

    51单片机定时器中断的介绍

    最近在学习51单片机,学到了定时器这块,由于自己的基础不太扎实,在这方面花了很多时间,这里通过对定时器中断的介绍,用简易时钟这个例子来对学习的内容进行加深巩固,把自己的经验分享给大家
    的头像 发表于 09-11 09:54 1607次阅读
    <b class='flag-5'>51</b>单片机<b class='flag-5'>定时器</b>和<b class='flag-5'>中断</b>的介绍

    定时器中断程序怎么写

    定时器中断程序怎么写  在嵌入式系统中,定时器被广泛应用于各种任务。它们在实时系统中可用于轮询,计时等任务。定时器可以被配置为周期性定时器
    的头像 发表于 09-01 10:17 1593次阅读

    定时器中断是什么意思,定时器中断的工作原理

    定时器中断是由单片机中的定时器溢出而申请的中断51单片机中有两个定时器T0和T1。STM32中
    的头像 发表于 07-23 09:45 5111次阅读

    STM32定时器(二)定时器中断

    常规定时器:基本定时器TIM6&TIM7)、通用定时器(TIM2~TIM5,TIM9~TIM14)、高级定时器(TIM1&TIM8)
    的头像 发表于 07-21 14:54 3072次阅读
    STM32<b class='flag-5'>定时器</b>(二)<b class='flag-5'>定时器</b><b class='flag-5'>中断</b>

    51单片机定时器讲解

    前面我们讲解了通用IO输入输出,延时函数和外部中断,今天我们讲解单片机另一个重要的功能,定时器。顾名思义,定时器就是用来定时的,与延时函数的设置不同,延时函数是不精确
    发表于 07-14 16:22 2158次阅读
    <b class='flag-5'>51</b>单片机<b class='flag-5'>定时器</b>讲解