单片机中定时器

这篇具有很好参考价值的文章主要介绍了单片机中定时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 定时器的使用步骤

1)主函数;

2)对中断和定时器进行初始化=>先设置计数器的工作方式,设定TH0、TL0或TH1、TL0的初值,即:TH0=(8192-C)/32,TL0=(8192-C)%32,开启中断和定时器,即:TR=1;

3)设置中断服务程序-》执行对应中断需要做的内容。

51单片机拥有两个定时器,分别为T0,T1;52单片机比51单片机多一个定时器T2。

2. 寄存器TMOD

TMOD寄存器的值决定了定时器的工作方式。

工作方式0,13位定时器;工作方式1为16位定时器;工作方式方式2位8位自动重载定时器。

下述表格为此寄存器的数据格式:

定时器

定时器1

定时器0

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

GATE

C/T

M1

M0

GATE

C/T

M1

M0

GATE:门控制。

GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。

当INT0引脚为高电平时TR0置位,启动定时器T0;

当INT1引脚为高电平时TR1置位,启动定时器T1。

GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

C/T:功能选择位

C/T=0时为定时功能,C/T=1时为计数功能。

置位时选择计数功能,清零时选择定时功能。

M0和M1::决定使用定时器的工作方式及哪个定时器。

工作方式选择:

00表示方式0 13位计数器 TMOD=0x00

01 表示方式1 16位计数器 TMOD=0x01

10表示 方式2 自动重装8位计数器 TMOD=0x02

11表示方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器

如:TMOD=0x03表示定时器0工作方式为方式三定时器功能。

3. 定时器的工作原理

定时器的工作原理:TH0为高八位,TL0为低八位,组成了16位的定时器,当低位TL0计满就向高位TH0移一个数,然后清零。

例:以12Mhz的晶振来说,机器周期是1us,计满TH0TL0就需要216-1个数,再来一个数就溢出产生中断,一次溢出也就是65536us,约等于65.5ms,如果要定时50ms的话就要给他们装一个预装值(初值),总值-需要值=预装值,

也就是65536-50000=15536,预装后,定时器从预装值开始加值,定时器溢出中断后,会重新从预装值开始加值加到50ms就再产生中断,从而达到了定时的目的。如果要定时1s就可以让定时器中断1000ms/50ms=20次。

另外一点,TH0TL0中应该装入的总数是15536,然后把15536256求模:15536/256=60装入TH0中,把15536256求余:15536%256=176装入TL0中,因为这是两个八位28*28的容器。

所以就有了

TH0=(65535-50000)/256

TL0=(65535-50000)%256

4. 定时器的使用注意事项

定时器中断需要:

总中断EA:用来开启全局中断

ET0、1、2:各个定时器中断位,使用中断位只需将其置一即可。

开启对应的定时器只需将对应的TR为置一即开启了定时器。

5. TCON状态寄存器

位序号

D7

D6

D5

D4

D3

D2

D1

D0

位符号

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

位地址

8FH

8EH

8DH

8CH

8BH

8AH

89H

88H

TCON定时器/计数器控制寄存器

TF1/TF0:表示定时器1/定时器0的溢出标志位。

TF1/TF0=1表示定时器1/定时器0溢出

TF1/TF0=0表示定时器1/定时器0未溢出

TR1/TR0:表示定时器1/定时器0的中断使能位

TR1/TR0=1表示定时器1/定时器0开启中断

TR1/TR0=0表示定时器1/定时器0关闭中断

IE0/IE1:外中断请求标志位

IE0/IE1=1:开启定时器0/定时器1外部中断

IE0/IE1=0:关闭定时器0/定时器1外部中断

IT0/IT1:外中断请求信号方式控制位

IT0/IT1=1:定时器0/定时器1触发条件为下降沿触发

IT0/IT1=0:定时器0/定时器1触发条件为上升+下降沿触发

6. 定时器工作方式的详细介绍

定时器工作方式0:

单片机中定时器

方式013位的定时器,它的低位TL0是五位的,所以它的总值是28*25=8192。它能装的值也不能那么多了,于是就装入5ms

TH0=(8192-5000)/32;

TL0=(8192-5000)%32;

325位寄存器的容量。

所以要中断200次才能达到1s

这个方式0可以用来做短时间中断

定时器工作方式2:

单片机中定时器

如图,其中低位TL08位定时器,而TH0是常数缓冲器,当低位TL0溢出时,在溢出标志位TF01的同时,自动将高位TH0的常数重新装入TL0中,让TL0从初值开始重新计数,这样就不用人为软件重新装入初值带来的误差,从而提高精度。

由于两个是分开的,所以计算初值可以不用求余取模:

              TL0=总值-要计数的个数;

              TH0=总值-要计数的个数;

定时器工作方式3:

接下来介绍方式3,方式3不同于其他三个方式,它只能用于T0,也就是定时器0,和方式2差不多,也是把TL0TH0分成两个独立的寄存器,但是TH0也参与计数,也就是两个独立的8位定时器/计数器。

普通的使用一样,TL0计数溢出后置位TF0,并申请中断,之后重装。但是由于TL0占用了TR0TF0,所以TH0只能占用定时器              T1TR1TF1。所以定时器T1一定不要用在有中断的场合,当然,T1同样可以正常工作在方式012下。通常这种情况,T1都被用来当做串行口的波特率发生器。

首先把T0T1的中断位和控制位打开:

52单片机的中断级别

中断源

默认中断级别

序号(c语言)

入口地址(汇编)

INT0-外部中断0

最高

0

0003H

T0-定时器0中断

第2

1

000BH

INT1-外部中断1

第3

2

0013H

T1-定时器1中断

第4

3

001BH

T1/R1串行口中断

第5

4

0023H

T2-定时器2中断

最低

5

002BH文章来源地址https://www.toymoban.com/news/detail-473192.html

到了这里,关于单片机中定时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机中定时器

    1. 定时器的使用步骤 1)主函数; 2)对中断和定时器进行初始化=先设置计数器的工作方式,设定TH0、TL0或TH1、TL0的初值,即:TH0=(8192-C)/32,TL0=(8192-C)%32,开启中断和定时器,即:TR=1; 3)设置中断服务程序-》执行对应中断需要做的内容。 51单片机拥有两个定时器,分别为

    2024年02月08日
    浏览(43)
  • 单片机-定时器时钟

    89C52RC 1.定时器0,lcd1602显示时间。    main.c

    2024年02月11日
    浏览(41)
  • 【51单片机】:定时器的详解(包括对单片机定时解释、各类定时方式,以及中断方式)

              51定时/计数器的详解。                   码字不易,如有帮助请收藏,点赞哦。         前提:首先我们知道51单片机内部有21~26个特殊功能寄存器: P.x口寄存器:P0、P1、P2、P3 数据指针寄存器:DP0H、DP0L、DP1H、DP1L 定时器: TH1、TL1、TH0、TL0、TMOD、TCON 串口:

    2024年02月07日
    浏览(95)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月11日
    浏览(48)
  • 51单片机——定时器中断

    新版51单片机内部有 3 个16位可编程的定时器/计数器,即定时器 T0,T1,T2 。他们既有 定时 功能又有 计数 功能,我们可以通过配置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能;其中需要注意的是,这个定时器系统是单片机内部的一个独立的硬件部分,它与

    2023年04月10日
    浏览(41)
  • 51单片机(七)定时器

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月07日
    浏览(54)
  • 51单片机PWM(定时器)

    目录 前言 一、PWM的介绍 二、在定时器中配置PWM 三、代码  总结         PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第

    2024年02月09日
    浏览(52)
  • 51单片机之定时器篇

    首先,学好单片机必须要搞懂定时器,定时器是单片机重要的组成部分之一,总之,学不好定时器,单片机相当于没学,下面就让我介绍如何学好单片机定时器。 学习单片机首先要明白的: 1,51单片机有两组定时器/计数器,既可以定时,又可以计数,总称之定时器 2,单片

    2024年02月11日
    浏览(52)
  • 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(57)
  • 51单片机 | 定时器中断实验

      这一节介绍51单片机的定时器中断。 STC89C5X 含有 3 个定时器:定时器 0、定时器 1、定时器 2(注意: 51 系列单片机一定有基本的 2 个定时器(定时器 0 和定时器 1),但不全有 3 个中断,需要查看芯片手册,通常我们使用的是基本的 2 个定时器:定时器 0/1)。本节要实现

    2024年02月06日
    浏览(106)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包