8.蓝桥杯开辟板定时器计数器停止

[复制链接]
发表于 2025-9-27 14:58:31 | 显示全部楼层 |阅读模式
目次:
                一.定时器计数器毗连框图
                        二.寄存器分析
                                三.写代码
                                        四.源码



一:定时器计数器毗连框图,框图泉源于网络

二:相干寄存器分析
      (1)TCON:控订定时器/计数器的启动,制止,停止以及外部停止的触发方式等
                1.定时器/计数器的控制:
                           TCON中的TR0=1(大概TR1=1)时相应的定时器开始计时,
                           置0时,定时器制止计数
                2.停止控制:
                           TCON中的TF0和TF1是定时器0和定时器1的溢出停止标记位,
                           当定时器计数溢出时,相应标记位会被置1,发送停止哀求
                3.外部停止触发方式控制:
                             TCON中的IT0和IT1用于设置外部停止0和外部停止1的触发方式
                             IT0=0时,触发方式是低电平触发
                             IT0=1时,是降落沿触发
                     我们常用降落沿触发方式   
                4.TMOD:定时器模式寄存器,可以设置16种模式
                                工作方式:
                                               (1) 方式0位13位定时/计数器
                                                (2)方式1为16位定时/计数器
                                                (3)方式2位自动重装初值8位定时/计数器
                                                (4)方式3仅实用于定时器0,可以将其拆分位两个
                                                         独立的8位计数器
                5.TH0,TL0和TH1,TL1寄存器:
                        (1)分别是定时器0和定时器1的高八位和低八位
                        (2)存放定时器/计数器的初值
                        (3)当计满溢出时触发相应停止     
                        (4)盘算公式:
                                                TH0=(65535-定时的时间)/256;
                                                TL0= (65535-定时的时间)%256;
                                                比方:想要1ms产生一次定时停止停止
                                                        TH0=(65535-1000)/256;
                                                        TL0= (65535-1000)%256;
                6.AUXR寄存器:
                        (1)用于设置定时器工作模式,选择时钟源等
                        (2)假如不设置默认12T工作模式

           

三.写代码
        定时器初始化:
                        (1)设置定时器工作模式
                      (2)设置初值TH,TL
                      (3) 停止标记位置0
                      (4)定时器0计时开始TR0=1
                      (5)写停止函数(就是平凡函数背面加停止号)
四.源码:
  1. #include "reg52.h"
  2. #include "LED.h"
  3. int i=0;
  4. int a=0;
  5. void Timer_init()
  6. {
  7. TMOD=0x01;
  8. //1ms产生一次中断       
  9. TH0=(65536-1000)/256;
  10. TL0=(65536-1000)%256;
  11. TF0=0;
  12. TR0=1;
  13.        
  14. ET0=1;
  15. EA=1;
  16. }
  17. void Timer0() interrupt 1
  18. {
  19. i++;
  20. if(i>=1000)//定时1s
  21. {
  22.         i=0;
  23.         a=1;
  24. }
  25. TH0=(65536-1000)/256;
  26. TL0=(65536-1000)%256;
  27. }
  28. void main()
  29. {
  30.         bit x;
  31.         Timer_init();
  32.         while (1)
  33.         {
  34.                 if(a)
  35.                 {
  36.                         a=0;
  37.                         x=~x;
  38.                         if(x)
  39.                         {
  40.                         LED(5);
  41.                         }
  42.                         else
  43.                         {
  44.                         LED(0);
  45.                         }
  46.                 }
  47.         }
  48. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表