• 蓝桥杯_定时器的基本原理与应用


    一 什么是定时器

      定时器/计数器是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向cpu提出中断处理请求,从而实现,定时或者计数功能的外设。

    二 51单片机的定时/计数器

    单片机外部晶振12MHZ,12分频后计数脉冲为1MHZ,即每个时钟脉冲周期为1us,定时器T0的16位工作模式最大定时时间位65535us,如果要定时10ms的计数器的话就不能从0开始计数了,必须给定一个计数初值。

      TH0 =  (65535-10000)/256;

      TL0 =    (65535-10000)%256;

    三 定时器/计数器编程思想

      通常有2个函数,1个是初始化函数,1个是对外做中断服务函数

     配置工作环境->计算计数初值->使能定时/计数器中断(即ET0或者ET1置0)-> 打开总中断(即EA=1)->启动定时器(即TR0或者TR1置0)

    在中断服务函数中,如果不是自动重装模式,需要对THX和TLX重新赋值。

    四 工程 代码

    利用51单片机的定时/计数T0模式实现定时,每隔1s,L1指示灯闪烁一下,也就是点亮0.5s,熄灭0.5s,每隔10s,L8指示灯闪烁一下,即点亮5s,熄灭5s。

    1. #include"reg52.h"
    2. sbit L1 = P0^0;
    3. sbit L8 = P0^7;
    4. void InitHC138(unsigned char n)
    5. {
    6. switch (n)
    7. {
    8. case 4
    9. HC138_C = 1;
    10. HC138_B = 0;
    11. HC138_A = 0;//输出Y4
    12. break;
    13. case 5
    14. HC138_C = 1;
    15. HC138_B = 0;
    16. HC138_A = 1;//输出Y5
    17. break;
    18. case 4
    19. HC138_C = 1;
    20. HC138_B = 1;
    21. HC138_A = 0;//输出Y6
    22. break;
    23. case 5
    24. HC138_C = 1;
    25. HC138_B = 1;
    26. HC138_A = 1;//输出Y7
    27. break;
    28. }
    29. }//锁存器选择
    30. //======================================
    31. void InitTimer()
    32. {
    33. THOD = 0x01;
    34. TH0 = (65535-50000)/256;
    35. TL0 = (65535-50000)%256;
    36. ET0 = 1;
    37. EA = 1;
    38. TR0 = 1;
    39. }
    40. unsigned char count = 0;
    41. unsigned char count1= 0;
    42. void ServiceTimer() interrupt 1
    43. {
    44. TH0 = (65535-50000)/256;
    45. TL0 = (65535-50000)%256;
    46. count++;
    47. count1++;
    48. if(count ==10)
    49. {
    50. L1=~L1;
    51. count =0;
    52. }
    53. if(count1 = 100)
    54. {
    55. L8=~L8;
    56. count1 = 0;
    57. }
    58. //======================================
    59. void mian()
    60. {
    61. void InitTimer();
    62. while(1)
    63. {
    64. }
    65. }

  • 相关阅读:
    Vue中如何实现动态改变字体大小
    【Leetcode】236. 二叉树的最近公共祖先
    #机器学习--高等数学基础--第五章:多元函数微分法
    Git&Gerrit常用操作
    【软考高级信息系统项目管理师--第五章:信息系统工程下】
    第一个 flet 应用
    Vim C++ – 大有可为!(C++ Vim 使用技巧)
    华为云云耀云服务器L实例评测|云耀云服务器L实例部署DjangoBlog个人博客系统
    怎么绕过CDN查找真实IP
    KMP / EXKMP
  • 原文地址:https://blog.csdn.net/2301_77724654/article/details/136352768