[技术问答] N76E003 Timer2 Auto reload Mode counter demo code

[复制链接]
868|10
 楼主| darklighttt 发表于 2020-3-30 19:40 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2017 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/2017
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Timer2 Auto reload Mode counter demo code
  14. //***********************************************************************************************************
  15. #include "N76E003.h"
  16. #include "Common.h"
  17. #include "Delay.h"
  18. #include "SFR_Macro.h"
  19. #include "Function_define.h"


  20. /******************************************************************
  21. * Following define for timer 2 also in Function_define.h
  22. ********************************************************************/
  23. #if 0
  24. //#define TIMER_DIV4_VALUE_10us                                65536-56                                //9*4/22118400 = 10 uS,                            // Timer divider = 4
  25. //#define TIMER_DIV4_VALUE_1ms                                65536-5530                        //923*4/22118400 = 1 mS,                           // Timer divider = 4
  26. //#define TIMER_DIV4_VALUE_100us                        65536-553                                //553*4/22118400 = 100 us                                // Timer divider = 4
  27. //#define TIMER_DIV4_VALUE_200us                        65536-1106                        //1106*4/22118400 = 200 us                        // Timer divider = 4
  28. //#define TIMER_DIV4_VALUE_500us                        65536-2765                        //2765*4/22118400 = 500 us                        // Timer divider = 4               
  29. //#define TIMER_DIV16_VALUE_10ms                        65536-13824                        //1500*16/22118400 = 10 ms                        // Timer divider = 16
  30. //#define TIMER_DIV64_VALUE_30ms                        65536-10368                        //10368*64/22118400 = 30 ms                        // Timer divider = 64
  31. //#define        TIMER_DIV128_VALUE_100ms                65536-17280                        //17280*128/22118400 = 100 ms                // Timer divider = 128
  32. //#define        TIMER_DIV128_VALUE_200ms                65536-34560                        //34560*128/22118400 = 200 ms                // Timer divider = 128
  33. //#define TIMER_DIV256_VALUE_500ms                65536-43200                        //43200*256/22118400 = 500 ms         // Timer divider = 256
  34. //#define TIMER_DIV512_VALUE_1s                                65536-43200                        //43200*512/22118400 = 1 s                        // Timer divider = 512

  35. //#define TIMER2_DIV_4                        T2MOD|=0x10;T2MOD&=0x9F
  36. //#define TIMER2_DIV_16                        T2MOD|=0x20;T2MOD&=0xAF
  37. //#define TIMER2_DIV_32                        T2MOD|=0x30;T2MOD&=0xBF
  38. //#define TIMER2_DIV_64                        T2MOD|=0x40;T2MOD&=0xCF
  39. //#define TIMER2_DIV_128                T2MOD|=0x50;T2MOD&=0xDF
  40. //#define TIMER2_DIV_256                T2MOD|=0x60;T2MOD&=0xEF
  41. //#define TIMER2_DIV_512                T2MOD|=0x70

  42. //#define TIMER2_Auto_Reload_Delay_Mode                                T2CON&=~SET_BIT0;T2MOD|=SET_BIT7;T2MOD|=SET_BIT3
  43. //#define TIMER2_Auto_Reload_Capture_Mode                        T2CON&=~SET_BIT0;T2MOD|=SET_BIT7
  44. //#define        TIMER2_Compare_Capture_Mode                                        T2CON|=SET_BIT0;T2MOD&=~SET_BIT7;T2MOD|=SET_BIT2
  45. #endif

  46. /************************************************************************************************************
  47. *    Timer2 interrupt subroutine
  48. ************************************************************************************************************/
  49. void Timer2_ISR (void) interrupt 5
  50. {
  51.           clr_TF2;                                //Clear Timer2 Interrupt Flag
  52.           P12 = ~P12;                                                                                                                        // GPIO1 toggle
  53.                 printf("\n TM2 INT 0x%bX",RCMP2H);
  54. }
  55. /************************************************************************************************************
  56. *    Main function
  57. ************************************************************************************************************/
  58. void main (void)
  59. {
  60.     Set_All_GPIO_Quasi_Mode;
  61.                 InitialUART0_Timer3(115200);
  62.        
  63.                 TIMER2_DIV_128;
  64.                 TIMER2_Auto_Reload_Delay_Mode;

  65.                 RCMP2L = TIMER_DIV128_VALUE_100ms;
  66.                 RCMP2H = TIMER_DIV128_VALUE_100ms>>8;
  67.                 TL2 = 0;
  68.                 TH2 = 0;

  69.     set_ET2;                                    // Enable Timer2 interrupt
  70.           set_EA;
  71.     set_TR2;                                    // Timer2 run
  72.    
  73.     while(1);
  74. }


jiekou001 发表于 2020-3-30 22:02 | 显示全部楼层
自动重载模式,给力。
wanduzi 发表于 2020-3-31 15:21 | 显示全部楼层
这个方式好,不用中间给操作了。
玛尼玛尼哄 发表于 2020-3-31 21:20 | 显示全部楼层
重载模式用的不是很多。
antusheng 发表于 2020-3-31 21:43 | 显示全部楼层
这个模式,定时周期短。
guanjiaer 发表于 2020-4-6 16:00 | 显示全部楼层
非常感谢楼主分享
heimaojingzhang 发表于 2020-4-6 16:01 | 显示全部楼层
非常感谢楼主分享
keaibukelian 发表于 2020-4-6 16:01 | 显示全部楼层
非常感谢楼主分享
labasi 发表于 2020-4-6 16:01 | 显示全部楼层
非常感谢楼主分享
paotangsan 发表于 2020-4-6 16:01 | 显示全部楼层
非常感谢楼主分享
598330983 发表于 2020-4-12 13:16 | 显示全部楼层
这个模式频率范围是多少。周期范围。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

132

帖子

0

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