• 蓝桥杯单片机快速开发笔记——定时器


    一、基本原理:

    1. 定时器的作用

      • 定时器是一种用于产生精确时间延时的模块,可以在程序中用来进行时间控制、计时等操作。
    2. 定时器的工作原理

      • 51单片机的定时器是通过内部的计数器来实现的,计数器每隔一个固定的时间周期自动加1,当计数器的值达到设定的目标值时,会触发定时器中断。
    3. 定时器的控制寄存器

      • 在51单片机中,定时器的工作通过控制寄存器来实现,包括定时器的工作模式、计数器的初始值、中断使能等。

    二、应用:

    1. 延时函数

      • 利用定时器可以实现精确的延时函数,用于控制程序中的时间间隔。
    2. 定时中断

      • 可以利用定时器中断来定时执行某些任务,例如定时采集传感器数据、定时发送数据等。
    3. PWM波形生成

      • 定时器可以用来生成PWM波形,用于控制电机速度、LED亮度等。
    4. 计时功能

      • 可以利用定时器来实现计时功能,例如秒表、计时器等。

    三、寄存器

    四、思维导图

    五、示例代码

    1. //定时器TO初始化
    2. void Init_Timer0()
    3. {
    4. //定时器计数器初值设置:50ms
    5. TH0 = (0 - 50000) / 256;
    6. TH0 = (0 - 50000) % 256;
    7. TMOD = 0x01; //T0的定时模式1:16位不可重装模式
    8. ET0 = 1; //使能定时器0
    9. EA = 1; //打开总中断
    10. TR0 = 1; //启动定时器0
    11. }
    12. //定时器T0的中断服务函数
    13. void Service_Timer0() interrupt 1
    14. {
    15. }

           初始化定时器T0,并设置了定时器T0的中断服务函数框架,可以根据实际需求在中断服务函数中添加具体的处理逻辑。

           

    1. void Init_Timer0():定义了一个函数Init_Timer0(),用于初始化定时器T0。

    2. TH0 = (0 - 50000) / 256;:设置定时器计数器的高8位,计算公式为(0 - 计数值) / 256。这里设置了定时器初值为50000,对应50ms的定时。

    3. TH0 = (0 - 50000) % 256;:设置定时器计数器的低8位,计算公式为(0 - 计数值) % 256。

    4. TMOD = 0x01;:设置定时器T0的工作模式为定时模式1,即16位定时器模式,不可重装模式。

    5. ET0 = 1;:使能定时器T0的中断功能,允许定时器T0产生中断。

    6. EA = 1;:打开总中断,允许中断嵌套。

    7. TR0 = 1;:启动定时器T0,定时器开始工作。

    8. void Service_Timer0() interrupt 1:定义了一个中断服务函数Service_Timer0(),用于处理定时器T0的中断。interrupt 1表示该中断函数对应定时器T0的中断。

  • 相关阅读:
    32.哀家要长脑子了!
    Git基础操作
    什么是 ABC NFT 系列?
    selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PAT
    Spring | 基于SpringBoot的多数据源实战 - 使用seata实现多数据源的全局事务管理
    巨人网络 一面
    SpringBoot整合Kafka的快速使用教程
    Docker入门指南
    python GUI(五)预设弹窗介绍
    运行游戏“找不到XINPUTI_3.dll无法继续执行代码,总共有五种解决方案
  • 原文地址:https://blog.csdn.net/weixin_62434750/article/details/136722637