wdog.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 : [email protected]
  10. // Date : Apr/21/2017
  11. //***********************************************************************************************************
  12. //***********************************************************************************************************
  13. // File Function: N76E003 Watch Dog as pure timer with interrupt 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. * WDT interrupt sub-routine
  22. ************************************************************************************************************/
  23. void WDT_ISR ( void ) interrupt 10
  24. {
  25. //---------toggle GPIO1---------
  26. clr_GPIO1;
  27. Timer2_Delay500us ( 5 );
  28. set_GPIO1;
  29. Timer2_Delay500us ( 5 );
  30. clr_GPIO1;
  31. Timer2_Delay500us ( 5 );
  32. set_GPIO1;
  33. Timer2_Delay500us ( 5 );
  34. //---------end toggle GPIO2--------
  35. clr_WDTF;
  36. set_WDCLR;
  37. }
  38. /************************************************************************************************************
  39. * Main function
  40. ************************************************************************************************************/
  41. void main ( void )
  42. {
  43. /* Note
  44. WDT timer base is LIRC 10Khz
  45. */
  46. Set_All_GPIO_Quasi_Mode;
  47. clr_GPIO1;
  48. Timer0_Delay1ms ( 500 );
  49. set_GPIO1;
  50. Timer0_Delay1ms ( 500 );
  51. clr_GPIO1;
  52. Timer0_Delay1ms ( 500 );
  53. set_GPIO1;
  54. Timer0_Delay1ms ( 500 );
  55. //WDT init
  56. //--------------------------------------------------------
  57. //Warning:
  58. //Pleaes always check CONFIG WDT disable first
  59. //only when WDT reset disable, WDT use as pure timer
  60. //--------------------------------------------------------
  61. TA = 0xAA;
  62. TA = 0x55;
  63. WDCON = 0x07; //Setting WDT prescale
  64. set_WDTR; //WDT run
  65. set_WDCLR; //Clear WDT timer
  66. set_EWDT;
  67. EA = 1;
  68. #if 0
  69. while ( 1 );
  70. #else
  71. set_WIDPD; //WDT run in POWER DOWM mode setting if needed
  72. while ( 1 )
  73. {
  74. set_PD;
  75. //---------toggle GPIO1---------
  76. clr_P04;
  77. Timer1_Delay10ms ( 5 );
  78. set_P04;
  79. Timer1_Delay10ms ( 5 );
  80. clr_P04;
  81. Timer1_Delay10ms ( 5 );
  82. set_P04;
  83. Timer1_Delay10ms ( 5 );
  84. //---------end toggle GPIO1---------
  85. }
  86. #endif
  87. }