[牛人杂谈] 新唐N76e003定时器延时

[复制链接]
4049|11
 楼主| 643757107 发表于 2018-9-28 21:47 | 显示全部楼层 |阅读模式
  1. #ifdef FOSC_160000                // if Fsys = 16MHz

  2.                 #define TIMER_DIV12_VALUE_10us                        65536-13                //13*12/16000000 = 10 uS,                          // Timer divider = 12 for TM0/TM1
  3.                 #define TIMER_DIV12_VALUE_100us                        65536-130                //130*12/16000000 = 10 uS,                  // Timer divider = 12
  4.                 #define TIMER_DIV12_VALUE_1ms                                65536-1334        //1334*12/16000000 = 1 mS,                          // Timer divider = 12
16M时钟,12分频后定时器的周期为16/12 us,所以1ms=1000*16/12 约为1334
每个单位为1ms
  1. void Timer0_Delay1ms(UINT32 u32CNT)
  2. {
  3.     clr_T0M;                                                //T0M=0, Timer0 Clock = Fsys/12 定时器0 12分频
  4.     TMOD |= 0x01;                                           //Timer0 is 16-bit mode  16位定器/计数器
  5.     set_TR0;                                                //Start Timer0  开启
  6.     while (u32CNT != 0)
  7.     {
  8.         TL0 = LOBYTE(TIMER_DIV12_VALUE_1ms);                 //Find  define in "Function_define.h" "TIMER VALUE"
  9.         TH0 = HIBYTE(TIMER_DIV12_VALUE_1ms);      //高8位和低8位设置相应值
  10.         while (TF0 != 1);                                   //Check Timer0 Time-Out Flag  等待溢出
  11.         clr_TF0;                                            //清除溢邮
  12.         u32CNT --;
  13.     }
  14.     clr_TR0;                                                //Stop Timer0  定时器0停止
  15. }


 楼主| 643757107 发表于 2018-9-28 21:47 | 显示全部楼层
另外用系统定时器也可以实现。
天灵灵地灵灵 发表于 2018-9-29 14:22 | 显示全部楼层
这就看那些定时器用了。要分配好内功。
xixi2017 发表于 2018-9-29 19:24 | 显示全部楼层
这就麻烦了,不如用系统滴答定时器。
xixi2017 发表于 2018-9-29 19:24 | 显示全部楼层
滴答定时器,库函数里直接实现了这个延时。我看过,非常精准。
磨砂 发表于 2018-9-30 09:48 | 显示全部楼层
非常详细 感谢分享
zxm19820916 发表于 2019-8-19 16:18 | 显示全部楼层
xixi2017 发表于 2018-9-29 19:24
滴答定时器,库函数里直接实现了这个延时。我看过,非常精准。

这个单片机有系统滴答定时器吗?
antusheng 发表于 2019-8-20 21:23 | 显示全部楼层
库函数中,提供了方法。直接调用。配置上,可以使用时钟配置工具。
wahahaheihei 发表于 2019-8-21 19:52 | 显示全部楼层
新唐的例子比较全。
ayb_ice 发表于 2019-8-22 15:41 | 显示全部楼层
都不能重入,实用价值不大
zhangchengtao 发表于 2024-6-26 11:35 | 显示全部楼层
643757107 发表于 2018-9-28 21:47
另外用系统定时器也可以实现。

具体怎么操作? 大佬, 你倒是写上啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

3955

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部