[DemoCode下载] N76E003自带的Delay函数很好用

[复制链接]
3305|9
 楼主| 小明的同学 发表于 2018-10-22 17:47 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. #include "N76E003.h"
  13. #include "Common.h"
  14. #include "Delay.h"
  15. #include "SFR_Macro.h"
  16. #include "Function_define.h"
  17. bit BIT_TMP;

  18. //-------------------------------------------------------------------------
  19. void Timer0_Delay100us(UINT32 u32CNT)
  20. {
  21.     clr_T0M;                                                //T0M=0, Timer0 Clock = Fsys/12
  22.     TMOD |= 0x01;                                           //Timer0 is 16-bit mode
  23.     set_TR0;                                                //Start Timer0
  24.     while (u32CNT != 0)
  25.     {
  26.         TL0 = LOBYTE(TIMER_DIV12_VALUE_100us);        //Find  define in "Function_define.h" "TIMER VALUE"
  27.         TH0 = HIBYTE(TIMER_DIV12_VALUE_100us);
  28.         while (TF0 != 1);                                   //Check Timer0 Time-Out Flag
  29.         clr_TF0;
  30.         u32CNT --;
  31.     }
  32.     clr_TR0;                                                       //Stop Timer0
  33. }
  34. //------------------------------------------------------------------------------
  35. void Timer0_Delay1ms(UINT32 u32CNT)
  36. {
  37.     clr_T0M;                                                //T0M=0, Timer0 Clock = Fsys/12
  38.     TMOD |= 0x01;                                           //Timer0 is 16-bit mode
  39.     set_TR0;                                                //Start Timer0
  40.     while (u32CNT != 0)
  41.     {
  42.         TL0 = LOBYTE(TIMER_DIV12_VALUE_1ms);                 //Find  define in "Function_define.h" "TIMER VALUE"
  43.         TH0 = HIBYTE(TIMER_DIV12_VALUE_1ms);
  44.         while (TF0 != 1);                                   //Check Timer0 Time-Out Flag
  45.         clr_TF0;
  46.         u32CNT --;
  47.     }
  48.     clr_TR0;                                                //Stop Timer0
  49. }

  50. //------------------------------------------------------------------------------
  51. void Timer1_Delay10ms(UINT32 u32CNT)
  52. {
  53.     clr_T1M;                                                                                                                                                //T1M=0, Timer1 Clock = Fsys/12
  54.     TMOD |= 0x10;                                                                                                                                //Timer1 is 16-bit mode
  55.     set_TR1;                                                                                                                                                //Start Timer1
  56.     while (u32CNT != 0)
  57.     {
  58.         TL1 = LOBYTE(TIMER_DIV12_VALUE_10ms);                //Find  define in "Function_define.h" "TIMER VALUE"
  59.         TH1 = HIBYTE(TIMER_DIV12_VALUE_10ms);
  60.         while (TF1 != 1);                                                                                                //Check Timer1 Time-Out Flag
  61.         clr_TF1;
  62.         u32CNT --;
  63.     }
  64.     clr_TR1;                                                       //Stop Timer1
  65. }
  66. //------------------------------------------------------------------------------
  67. void Timer2_Delay500us(UINT32 u32CNT)
  68. {
  69.     clr_T2DIV2;                                                                                                                                        //Timer2 Clock = Fsys/4
  70.     clr_T2DIV1;
  71.     set_T2DIV0;
  72.     set_TR2;                                                //Start Timer2
  73.     while (u32CNT != 0)
  74.     {
  75.         TL2 = LOBYTE(TIMER_DIV4_VALUE_500us);                //Find  define in "Function_define.h" "TIMER VALUE"
  76.         TH2 = HIBYTE(TIMER_DIV4_VALUE_500us);
  77.         while (TF2 != 1);                                   //Check Timer2 Time-Out Flag
  78.         clr_TF2;
  79.         u32CNT --;
  80.     }
  81.     clr_TR2;                                                //Stop Timer2
  82. }
  83. //------------------------------------------------------------------------------
  84. void Timer3_Delay100ms(UINT32 u32CNT)
  85. {
  86.     T3CON = 0x07;                                           //Timer3 Clock = Fsys/128
  87.     set_TR3;                                                //Trigger Timer3
  88.     while (u32CNT != 0)
  89.     {
  90.         RL3 = LOBYTE(TIMER_DIV128_VALUE_100ms); //Find  define in "Function_define.h" "TIMER VALUE"
  91.         RH3 = HIBYTE(TIMER_DIV128_VALUE_100ms);
  92.         while ((T3CON&SET_BIT4) != SET_BIT4);                //Check Timer3 Time-Out Flag
  93.         clr_TF3;
  94.         u32CNT --;
  95.     }
  96.     clr_TR3;                                                //Stop Timer3
  97. }
  98. //------------------------------------------------------------------------------
  99. void Timer3_Delay10us(UINT32 u32CNT)
  100. {
  101.     T3CON = 0x07;                                           //Timer3 Clock = Fsys/128
  102.     set_TR3;                                                //Trigger Timer3
  103.     while (u32CNT != 0)
  104.     {
  105.         RL3 = LOBYTE(TIMER_DIV4_VALUE_10us); //Find  define in "Function_define.h" "TIMER VALUE"
  106.         RH3 = HIBYTE(TIMER_DIV4_VALUE_10us);
  107.         while ((T3CON&SET_BIT4) != SET_BIT4);                //Check Timer3 Time-Out Flag
  108.         clr_TF3;
  109.         u32CNT --;
  110.     }
  111.     clr_TR3;                                                //Stop Timer3
  112. }


 楼主| 小明的同学 发表于 2018-10-22 17:48 | 显示全部楼层
源码的实现提供一下,非常给力。
 楼主| 小明的同学 发表于 2018-10-22 18:07 | 显示全部楼层
前提是这个定时器没有被使用,所以要先规划好定时器怎么分配
yiyigirl2014 发表于 2018-10-22 19:00 | 显示全部楼层
貌似几个定时器延时的最小周期不同啊。
zhuomuniao110 发表于 2018-10-23 11:19 | 显示全部楼层
选择合适的用
yiyigirl2014 发表于 2018-10-23 16:19 | 显示全部楼层
最小单位10us。
yiyigirl2014 发表于 2018-10-23 16:19 | 显示全部楼层
方便用这个延时实现时序图
XCRhbb 发表于 2019-10-21 15:33 | 显示全部楼层
251825dad5ef7632cb.png
这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!!
天灵灵地灵灵 发表于 2019-10-21 23:52 | 显示全部楼层
XCRhbb 发表于 2019-10-21 15:33
这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!! ...

对应的.h头文件没引入。
天灵灵地灵灵 发表于 2019-10-21 23:53 | 显示全部楼层
XCRhbb 发表于 2019-10-21 15:33
这是为什么呢。这个的定义在哪个文件里呢?求指教.  详细点!!!!!!!!!!!!!!!!!!! ...

你这是引入 了.c那个文件,还有个.h的,里面是宏。.c是负责实现函数的,.h声明函数,定义宏的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1640

帖子

2

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