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


    一 什么是定时器

      定时器/计数器是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向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 使用vue-cli构建SPA项目(超详细)
    LeetCode 462. 最小操作次数使数组元素相等 II【贪心,排序或快速选择】中等
    C#和Java,究竟选哪个方向?我只说事实,你自己分析……
    面试题-React(十一):性能优化之PureComponent和memo
    记一次调试微信订阅消息的坑
    如何设计一张数据库表
    Fastjson JdbcRowSetImpl利用链学习
    数组与字符串的相互转换
    M4Singer Ubuntu 4060ti16G 笔记
    SystemC入门学习-第8章 测试平台的编写
  • 原文地址:https://blog.csdn.net/2301_77724654/article/details/136352768