当前位置:   article > 正文

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

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

一、基本原理:

  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. TL0 = (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的中断。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/283176
推荐阅读