Function_Define.h 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. /*--------------------------------------------------------------------------
  2. N76E003 Function_define.h V1.02
  3. All function define inital setting file for Nuvoton N76E003
  4. --------------------------------------------------------------------------*/
  5. #include <intrins.h>
  6. #include <stdio.h>
  7. #define nop _nop_();
  8. //16 --> 8 x 2
  9. #define HIBYTE(v1) ((UINT8)((v1)>>8)) //v1 is UINT16
  10. #define LOBYTE(v1) ((UINT8)((v1)&0xFF))
  11. //8 x 2 --> 16
  12. #define MAKEWORD(v1,v2) ((((UINT16)(v1))<<8)+(UINT16)(v2)) //v1,v2 is UINT8
  13. //8 x 4 --> 32
  14. #define MAKELONG(v1,v2,v3,v4) (UINT32)((v1<<32)+(v2<<16)+(v3<<8)+v4) //v1,v2,v3,v4 is UINT8
  15. //32 --> 16 x 2
  16. #define YBYTE1(v1) ((UINT16)((v1)>>16)) //v1 is UINT32
  17. #define YBYTE0(v1) ((UINT16)((v1)&0xFFFF))
  18. //32 --> 8 x 4
  19. #define TBYTE3(v1) ((UINT8)((v1)>>24)) //v1 is UINT32
  20. #define TBYTE2(v1) ((UINT8)((v1)>>16))
  21. #define TBYTE1(v1) ((UINT8)((v1)>>8))
  22. #define TBYTE0(v1) ((UINT8)((v1)&0xFF))
  23. #define SET_BIT0 0x01
  24. #define SET_BIT1 0x02
  25. #define SET_BIT2 0x04
  26. #define SET_BIT3 0x08
  27. #define SET_BIT4 0x10
  28. #define SET_BIT5 0x20
  29. #define SET_BIT6 0x40
  30. #define SET_BIT7 0x80
  31. #define SET_BIT8 0x0100
  32. #define SET_BIT9 0x0200
  33. #define SET_BIT10 0x0400
  34. #define SET_BIT11 0x0800
  35. #define SET_BIT12 0x1000
  36. #define SET_BIT13 0x2000
  37. #define SET_BIT14 0x4000
  38. #define SET_BIT15 0x8000
  39. #define CLR_BIT0 0xFE
  40. #define CLR_BIT1 0xFD
  41. #define CLR_BIT2 0xFB
  42. #define CLR_BIT3 0xF7
  43. #define CLR_BIT4 0xEF
  44. #define CLR_BIT5 0xDF
  45. #define CLR_BIT6 0xBF
  46. #define CLR_BIT7 0x7F
  47. #define CLR_BIT8 0xFEFF
  48. #define CLR_BIT9 0xFDFF
  49. #define CLR_BIT10 0xFBFF
  50. #define CLR_BIT11 0xF7FF
  51. #define CLR_BIT12 0xEFFF
  52. #define CLR_BIT13 0xDFFF
  53. #define CLR_BIT14 0xBFFF
  54. #define CLR_BIT15 0x7FFF
  55. #define FAIL 1
  56. #define PASS 0
  57. /*****************************************************************************************
  58. * For GPIO INIT setting
  59. *****************************************************************************************/
  60. //------------------- Define Port as Quasi mode -------------------
  61. #define P00_Quasi_Mode P0M1&=~SET_BIT0;P0M2&=~SET_BIT0
  62. #define P01_Quasi_Mode P0M1&=~SET_BIT1;P0M2&=~SET_BIT1
  63. #define P02_Quasi_Mode P0M1&=~SET_BIT2;P0M2&=~SET_BIT2
  64. #define P03_Quasi_Mode P0M1&=~SET_BIT3;P0M2&=~SET_BIT3
  65. #define P04_Quasi_Mode P0M1&=~SET_BIT4;P0M2&=~SET_BIT4
  66. #define P05_Quasi_Mode P0M1&=~SET_BIT5;P0M2&=~SET_BIT5
  67. #define P06_Quasi_Mode P0M1&=~SET_BIT6;P0M2&=~SET_BIT6
  68. #define P07_Quasi_Mode P0M1&=~SET_BIT7;P0M2&=~SET_BIT7
  69. #define P10_Quasi_Mode P1M1&=~SET_BIT0;P1M2&=~SET_BIT0
  70. #define P11_Quasi_Mode P1M1&=~SET_BIT1;P1M2&=~SET_BIT1
  71. #define P12_Quasi_Mode P1M1&=~SET_BIT2;P1M2&=~SET_BIT2
  72. #define P13_Quasi_Mode P1M1&=~SET_BIT3;P1M2&=~SET_BIT3
  73. #define P14_Quasi_Mode P1M1&=~SET_BIT4;P1M2&=~SET_BIT4
  74. #define P15_Quasi_Mode P1M1&=~SET_BIT5;P1M2&=~SET_BIT5
  75. #define P16_Quasi_Mode P1M1&=~SET_BIT6;P1M2&=~SET_BIT6
  76. #define P17_Quasi_Mode P1M1&=~SET_BIT7;P1M2&=~SET_BIT7
  77. #define P30_Quasi_Mode P3M1&=~SET_BIT0;P3M2&=~SET_BIT0
  78. //------------------- Define Port as Push Pull mode -------------------
  79. #define P00_PushPull_Mode P0M1&=~SET_BIT0;P0M2|=SET_BIT0
  80. #define P01_PushPull_Mode P0M1&=~SET_BIT1;P0M2|=SET_BIT1
  81. #define P02_PushPull_Mode P0M1&=~SET_BIT2;P0M2|=SET_BIT2
  82. #define P03_PushPull_Mode P0M1&=~SET_BIT3;P0M2|=SET_BIT3
  83. #define P04_PushPull_Mode P0M1&=~SET_BIT4;P0M2|=SET_BIT4
  84. #define P05_PushPull_Mode P0M1&=~SET_BIT5;P0M2|=SET_BIT5
  85. #define P06_PushPull_Mode P0M1&=~SET_BIT6;P0M2|=SET_BIT6
  86. #define P07_PushPull_Mode P0M1&=~SET_BIT7;P0M2|=SET_BIT7
  87. #define P10_PushPull_Mode P1M1&=~SET_BIT0;P1M2|=SET_BIT0
  88. #define P11_PushPull_Mode P1M1&=~SET_BIT1;P1M2|=SET_BIT1
  89. #define P12_PushPull_Mode P1M1&=~SET_BIT2;P1M2|=SET_BIT2
  90. #define P13_PushPull_Mode P1M1&=~SET_BIT3;P1M2|=SET_BIT3
  91. #define P14_PushPull_Mode P1M1&=~SET_BIT4;P1M2|=SET_BIT4
  92. #define P15_PushPull_Mode P1M1&=~SET_BIT5;P1M2|=SET_BIT5
  93. #define P16_PushPull_Mode P1M1&=~SET_BIT6;P1M2|=SET_BIT6
  94. #define P17_PushPull_Mode P1M1&=~SET_BIT7;P1M2|=SET_BIT7
  95. #define P30_PushPull_Mode P3M1&=~SET_BIT0;P3M2|=SET_BIT0
  96. #define GPIO1_PushPull_Mode P1M1&=~SET_BIT0;P1M2|=SET_BIT0
  97. //------------------- Define Port as Input Only mode -------------------
  98. #define P00_Input_Mode P0M1|=SET_BIT0;P0M2&=~SET_BIT0
  99. #define P01_Input_Mode P0M1|=SET_BIT1;P0M2&=~SET_BIT1
  100. #define P02_Input_Mode P0M1|=SET_BIT2;P0M2&=~SET_BIT2
  101. #define P03_Input_Mode P0M1|=SET_BIT3;P0M2&=~SET_BIT3
  102. #define P04_Input_Mode P0M1|=SET_BIT4;P0M2&=~SET_BIT4
  103. #define P05_Input_Mode P0M1|=SET_BIT5;P0M2&=~SET_BIT5
  104. #define P06_Input_Mode P0M1|=SET_BIT6;P0M2&=~SET_BIT6
  105. #define P07_Input_Mode P0M1|=SET_BIT7;P0M2&=~SET_BIT7
  106. #define P10_Input_Mode P1M1|=SET_BIT0;P1M2&=~SET_BIT0
  107. #define P11_Input_Mode P1M1|=SET_BIT1;P1M2&=~SET_BIT1
  108. #define P12_Input_Mode P1M1|=SET_BIT2;P1M2&=~SET_BIT2
  109. #define P13_Input_Mode P1M1|=SET_BIT3;P1M2&=~SET_BIT3
  110. #define P14_Input_Mode P1M1|=SET_BIT4;P1M2&=~SET_BIT4
  111. #define P15_Input_Mode P1M1|=SET_BIT5;P1M2&=~SET_BIT5
  112. #define P16_Input_Mode P1M1|=SET_BIT6;P1M2&=~SET_BIT6
  113. #define P17_Input_Mode P1M1|=SET_BIT7;P1M2&=~SET_BIT7
  114. #define P30_Input_Mode P3M1|=SET_BIT0;P3M2&=~SET_BIT0
  115. //-------------------Define Port as Open Drain mode -------------------
  116. #define P00_OpenDrain_Mode P0M1|=SET_BIT0;P0M2|=SET_BIT0
  117. #define P01_OpenDrain_Mode P0M1|=SET_BIT1;P0M2|=SET_BIT1
  118. #define P02_OpenDrain_Mode P0M1|=SET_BIT2;P0M2|=SET_BIT2
  119. #define P03_OpenDrain_Mode P0M1|=SET_BIT3;P0M2|=SET_BIT3
  120. #define P04_OpenDrain_Mode P0M1|=SET_BIT4;P0M2|=SET_BIT4
  121. #define P05_OpenDrain_Mode P0M1|=SET_BIT5;P0M2|=SET_BIT5
  122. #define P06_OpenDrain_Mode P0M1|=SET_BIT6;P0M2|=SET_BIT6
  123. #define P07_OpenDrain_Mode P0M1|=SET_BIT7;P0M2|=SET_BIT7
  124. #define P10_OpenDrain_Mode P1M1|=SET_BIT0;P1M2|=SET_BIT0
  125. #define P11_OpenDrain_Mode P1M1|=SET_BIT1;P1M2|=SET_BIT1
  126. #define P12_OpenDrain_Mode P1M1|=SET_BIT2;P1M2|=SET_BIT2
  127. #define P13_OpenDrain_Mode P1M1|=SET_BIT3;P1M2|=SET_BIT3
  128. #define P14_OpenDrain_Mode P1M1|=SET_BIT4;P1M2|=SET_BIT4
  129. #define P15_OpenDrain_Mode P1M1|=SET_BIT5;P1M2|=SET_BIT5
  130. #define P16_OpenDrain_Mode P1M1|=SET_BIT6;P1M2|=SET_BIT6
  131. #define P17_OpenDrain_Mode P1M1|=SET_BIT7;P1M2|=SET_BIT7
  132. #define P30_OpenDrain_Mode P3M1|=SET_BIT0;P3M2|=SET_BIT0
  133. //--------- Define all port as quasi mode ---------
  134. #define Set_All_GPIO_Quasi_Mode P0M1=0;P0M2=0;P1M1=0;P1M2=0;P3M1=0;P3M2=0
  135. #define set_GPIO1 P12=1
  136. #define clr_GPIO1 P12=0
  137. /****************************************************************************
  138. Enable INT port 0~3
  139. ***************************************************************************/
  140. #define Enable_INT_Port0 PICON &= 0xFB;
  141. #define Enable_INT_Port1 PICON |= 0x01;
  142. #define Enable_INT_Port2 PICON |= 0x02;
  143. #define Enable_INT_Port3 PICON |= 0x03;
  144. /*****************************************************************************
  145. Enable each bit low level trig mode
  146. *****************************************************************************/
  147. #define Enable_BIT7_LowLevel_Trig PICON&=0x7F;PINEN|=0x80;PIPEN&=0x7F
  148. #define Enable_BIT6_LowLevel_Trig PICON&=0x7F;PINEN|=0x40;PIPEN&=0xBF
  149. #define Enable_BIT5_LowLevel_Trig PICON&=0xBF;PINEN|=0x20;PIPEN&=0xDF
  150. #define Enable_BIT4_LowLevel_Trig PICON&=0xBF;PINEN|=0x10;PIPEN&=0xEF
  151. #define Enable_BIT3_LowLevel_Trig PICON&=0xDF;PINEN|=0x08;PIPEN&=0xF7
  152. #define Enable_BIT2_LowLevel_Trig PICON&=0xEF;PINEN|=0x04;PIPEN&=0xFB
  153. #define Enable_BIT1_LowLevel_Trig PICON&=0xF7;PINEN|=0x02;PIPEN&=0xFD
  154. #define Enable_BIT0_LowLevel_Trig PICON&=0xFD;PINEN|=0x01;PIPEN&=0xFE
  155. /*****************************************************************************
  156. Enable each bit high level trig mode
  157. *****************************************************************************/
  158. #define Enable_BIT7_HighLevel_Trig PICON&=0x7F;PINEN&=0x7F;PIPEN|=0x80
  159. #define Enable_BIT6_HighLevel_Trig PICON&=0x7F;PINEN&=0xBF;PIPEN|=0x40
  160. #define Enable_BIT5_HighLevel_Trig PICON&=0xBF;PINEN&=0xDF;PIPEN|=0x20
  161. #define Enable_BIT4_HighLevel_Trig PICON&=0xBF;PINEN&=0xEF;PIPEN|=0x10
  162. #define Enable_BIT3_HighLevel_Trig PICON&=0xDF;PINEN&=0xF7;PIPEN|=0x08
  163. #define Enable_BIT2_HighLevel_Trig PICON&=0xEF;PINEN&=0xFB;PIPEN|=0x04
  164. #define Enable_BIT1_HighLevel_Trig PICON&=0xF7;PINEN&=0xFD;PIPEN|=0x02
  165. #define Enable_BIT0_HighLevel_Trig PICON&=0xFD;PINEN&=0xFE;PIPEN|=0x01
  166. /*****************************************************************************
  167. Enable each bit falling edge trig mode
  168. *****************************************************************************/
  169. #define Enable_BIT7_FallEdge_Trig PICON|=0x80;PINEN|=0x80;PIPEN&=0x7F
  170. #define Enable_BIT6_FallEdge_Trig PICON|=0x80;PINEN|=0x40;PIPEN&=0xBF
  171. #define Enable_BIT5_FallEdge_Trig PICON|=0x40;PINEN|=0x20;PIPEN&=0xDF
  172. #define Enable_BIT4_FallEdge_Trig PICON|=0x40;PINEN|=0x10;PIPEN&=0xEF
  173. #define Enable_BIT3_FallEdge_Trig PICON|=0x20;PINEN|=0x08;PIPEN&=0xF7
  174. #define Enable_BIT2_FallEdge_Trig PICON|=0x10;PINEN|=0x04;PIPEN&=0xFB
  175. #define Enable_BIT1_FallEdge_Trig PICON|=0x08;PINEN|=0x02;PIPEN&=0xFD
  176. #define Enable_BIT0_FallEdge_Trig PICON|=0x04;PINEN|=0x01;PIPEN&=0xFE
  177. /*****************************************************************************
  178. Enable each bit rasing edge trig mode
  179. *****************************************************************************/
  180. #define Enable_BIT7_RasingEdge_Trig PICON|=0x80;PINEN&=0x7F;PIPEN|=0x80
  181. #define Enable_BIT6_RasingEdge_Trig PICON|=0x80;PINEN&=0xBF;PIPEN|=0x40
  182. #define Enable_BIT5_RasingEdge_Trig PICON|=0x40;PINEN&=0xDF;PIPEN|=0x20
  183. #define Enable_BIT4_RasingEdge_Trig PICON|=0x40;PINEN&=0xEF;PIPEN|=0x10
  184. #define Enable_BIT3_RasingEdge_Trig PICON|=0x20;PINEN&=0xF7;PIPEN|=0x08
  185. #define Enable_BIT2_RasingEdge_Trig PICON|=0x10;PINEN&=0xFB;PIPEN|=0x04
  186. #define Enable_BIT1_RasingEdge_Trig PICON|=0x08;PINEN&=0xFD;PIPEN|=0x02
  187. #define Enable_BIT0_RasingEdge_Trig PICON|=0x04;PINEN&=0xFE;PIPEN|=0x01
  188. /*****************************************************************************************
  189. * For TIMER VALUE setting is base on " option -> C51 -> Preprocesser Symbols -> Define "
  190. *****************************************************************************************/
  191. #ifdef FOSC_110592 // if Fsys = 11.0592MHz
  192. #define TIMER_DIV12_VALUE_10us 65536-9 //9*12/11.0592 = 10 uS, // Timer divider = 12 for TM0/TM1
  193. #define TIMER_DIV12_VALUE_1ms 65536-923 //923*12/11.0592 = 1 mS // Timer divider = 12
  194. #define TIMER_DIV12_VALUE_10ms 65536-9216 //18432*12/22118400 = 10 ms // Timer divider = 12
  195. #define TIMER_DIV4_VALUE_10us 65536-28 //28*4/11.0592 = 10 uS // Timer divider = 4 for TM2/TM3
  196. #define TIMER_DIV4_VALUE_1ms 65536-2765 //2765*4/11.0592 = 1 mS // Timer divider = 4
  197. #define TIMER_DIV4_VALUE_100us 65536-277 //553*4/22118400 = 100 us // Timer divider = 4
  198. #define TIMER_DIV4_VALUE_200us 65536-553 //1106*4/22118400 = 200 us // Timer divider = 4
  199. #define TIMER_DIV4_VALUE_500us 65536-1383 //2765*4/22118400 = 500 us // Timer divider = 4
  200. #define TIMER_DIV16_VALUE_10ms 65536-6912 //1500*16/22118400 = 10 ms // Timer divider = 16
  201. #define TIMER_DIV64_VALUE_30ms 65536-5184 //10368*64/22118400 = 30 ms // Timer divider = 64
  202. #define TIMER_DIV128_VALUE_100ms 65536-8640 //17280*128/22118400 = 100 ms // Timer divider = 128
  203. #define TIMER_DIV128_VALUE_200ms 65536-17280 //34560*128/22118400 = 200 ms // Timer divider = 128
  204. #define TIMER_DIV256_VALUE_500ms 65536-21600 //43200*256/22118400 = 500 ms // Timer divider = 256
  205. #define TIMER_DIV512_VALUE_1s 65536-21600 //43200*512/22118400 = 1 s // Timer divider = 512
  206. #endif
  207. #ifdef FOSC_160000 // if Fsys = 16MHz
  208. #define TIMER_DIV12_VALUE_10us 65536-13 //13*12/16000000 = 10 uS, // Timer divider = 12 for TM0/TM1
  209. #define TIMER_DIV12_VALUE_100us 65536-130 //130*12/16000000 = 10 uS, // Timer divider = 12
  210. #define TIMER_DIV12_VALUE_1ms 65536-1334 //1334*12/16000000 = 1 mS, // Timer divider = 12
  211. #define TIMER_DIV12_VALUE_10ms 65536-13334 //13334*12/16000000 = 10 mS // Timer divider = 12
  212. #define TIMER_DIV12_VALUE_40ms 65536-53336 //53336*12/16000000 = 40 ms // Timer divider = 12
  213. #define TIMER_DIV4_VALUE_10us 65536-40 //40*4/16000000 = 10 uS, // Timer divider = 4 for TM2/TM3
  214. #define TIMER_DIV4_VALUE_100us 65536-400 //400*4/16000000 = 100 us // Timer divider = 4
  215. #define TIMER_DIV4_VALUE_200us 65536-800 //800*4/16000000 = 200 us // Timer divider = 4
  216. #define TIMER_DIV4_VALUE_500us 65536-2000 //2000*4/16000000 = 500 us // Timer divider = 4
  217. #define TIMER_DIV4_VALUE_1ms 65536-4000 //4000*4/16000000 = 1 mS, // Timer divider = 4
  218. #define TIMER_DIV16_VALUE_10ms 65536-10000 //10000*16/16000000 = 10 ms // Timer divider = 16
  219. #define TIMER_DIV64_VALUE_30ms 65536-7500 //7500*64/16000000 = 30 ms // Timer divider = 64
  220. #define TIMER_DIV128_VALUE_100ms 65536-12500 //12500*128/16000000 = 100 ms // Timer divider = 128
  221. #define TIMER_DIV128_VALUE_200ms 65536-25000 //25000*128/16000000 = 200 ms // Timer divider = 128
  222. #define TIMER_DIV256_VALUE_500ms 65536-31250 //31250*256/16000000 = 500 ms // Timer divider = 256
  223. #define TIMER_DIV512_VALUE_1s 65536-31250 //31250*512/16000000 = 1 s. // Timer Divider = 512
  224. #endif
  225. #ifdef FOSC_184320 // if Fsys = 18.432MHz
  226. #define TIMER_DIV12_VALUE_10us 65536-15 //15*12/18.432 = 10 uS, Timer Clock = Fsys/12
  227. #define TIMER_DIV12_VALUE_1ms 65536-1536 //1536*12/18.432 = 1 mS, Timer Clock = Fsys/12
  228. #define TIMER_DIV4_VALUE_10us 65536-46 //46*4/18.432 = 10 uS, Timer Clock = Fsys/4
  229. #define TIMER_DIV4_VALUE_1ms 65536-4608 //4608*4/18.432 = 1 mS, Timer Clock = Fsys/4
  230. #endif
  231. #ifdef FOSC_200000 // if Fsys = 20 MHz
  232. #define TIMER_DIV12_VALUE_10us 65536-17 //17*12/20000000 = 10 uS, Timer Clock = Fsys/12
  233. #define TIMER_DIV12_VALUE_1ms 65536-1667 //1667*12/20000000 = 1 mS, Timer Clock = Fsys/12
  234. #define TIMER_DIV4_VALUE_10us 65536-50 //50*4/20000000 = 10 uS, Timer Clock = Fsys/4
  235. #define TIMER_DIV4_VALUE_1ms 65536-5000 //5000*4/20000000 = 1 mS, Timer Clock = Fsys/4
  236. #endif
  237. #ifdef FOSC_221184 // if Fsys = 22.1184 MHz
  238. #define TIMER_DIV12_VALUE_10us 65536-18 //18*12/22118400 = 10 uS, // Timer divider = 12
  239. #define TIMER_DIV12_VALUE_1ms 65536-1843 //1843*12/22118400 = 1 mS, // Timer divider = 12
  240. #define TIMER_DIV12_VALUE_10ms 65536-18432 //18432*12/22118400 = 10 ms // Timer divider = 12
  241. #define TIMER_DIV4_VALUE_10us 65536-56 //9*4/22118400 = 10 uS, // Timer divider = 4
  242. #define TIMER_DIV4_VALUE_1ms 65536-5530 //923*4/22118400 = 1 mS, // Timer divider = 4
  243. #define TIMER_DIV4_VALUE_100us 65536-553 //553*4/22118400 = 100 us // Timer divider = 4
  244. #define TIMER_DIV4_VALUE_200us 65536-1106 //1106*4/22118400 = 200 us // Timer divider = 4
  245. #define TIMER_DIV4_VALUE_500us 65536-2765 //2765*4/22118400 = 500 us // Timer divider = 4
  246. #define TIMER_DIV16_VALUE_10ms 65536-13824 //1500*16/22118400 = 10 ms // Timer divider = 16
  247. #define TIMER_DIV64_VALUE_30ms 65536-10368 //10368*64/22118400 = 30 ms // Timer divider = 64
  248. #define TIMER_DIV128_VALUE_100ms 65536-17280 //17280*128/22118400 = 100 ms // Timer divider = 128
  249. #define TIMER_DIV128_VALUE_200ms 65536-34560 //34560*128/22118400 = 200 ms // Timer divider = 128
  250. #define TIMER_DIV256_VALUE_500ms 65536-43200 //43200*256/22118400 = 500 ms // Timer divider = 256
  251. #define TIMER_DIV512_VALUE_1s 65536-43200 //43200*512/22118400 = 1 s // Timer divider = 512
  252. #endif
  253. #ifdef FOSC_240000 // if Fsys = 20 MHz
  254. #define TIMER_DIV12_VALUE_10us 65536-20 //20*12/24000000 = 10 uS, // Timer divider = 12
  255. #define TIMER_DIV12_VALUE_1ms 65536-2000 //2000*12/24000000 = 1 mS, // Timer divider = 12
  256. #define TIMER_DIV12_VALUE_10ms 65536-20000 //2000*12/24000000 = 10 mS // Timer divider = 12
  257. #define TIMER_DIV4_VALUE_10us 65536-60 //60*4/24000000 = 10 uS, // Timer divider = 4
  258. #define TIMER_DIV4_VALUE_100us 65536-600 //600*4/24000000 = 100 us // Timer divider = 4
  259. #define TIMER_DIV4_VALUE_200us 65536-1200 //1200*4/24000000 = 200 us // Timer divider = 4
  260. #define TIMER_DIV4_VALUE_500us 65536-3000 //3000*4/24000000 = 500 us // Timer divider = 4
  261. #define TIMER_DIV4_VALUE_1ms 65536-6000 //6000*4/24000000 = 1 mS, // Timer divider = 4
  262. #define TIMER_DIV16_VALUE_10ms 65536-15000 //15000*16/24000000 = 10 ms // Timer divider = 16
  263. #define TIMER_DIV64_VALUE_30ms 65536-11250 //11250*64/24000000 = 30 ms // Timer divider = 64
  264. #define TIMER_DIV128_VALUE_100ms 65536-18750 //37500*128/24000000 = 200 ms // Timer divider = 128
  265. #define TIMER_DIV128_VALUE_200ms 65536-37500 //37500*128/24000000 = 200 ms // Timer divider = 128
  266. #define TIMER_DIV256_VALUE_500ms 65536-46875 //46875*256/24000000 = 500 ms // Timer divider = 256
  267. #define TIMER_DIV512_VALUE_1s 65536-46875 //46875*512/24000000 = 1 s. // Timer Divider = 512
  268. #endif
  269. //-------------------- Timer0 function define --------------------
  270. #define TIMER1_MODE0_ENABLE TMOD&=0x0F
  271. #define TIMER1_MODE1_ENABLE TMOD&=0x0F;TMOD|=0x10
  272. #define TIMER1_MODE2_ENABLE TMOD&=0x0F;TMOD|=0x20
  273. #define TIMER1_MODE3_ENABLE TMOD&=0x0F;TMOD|=0x30
  274. //-------------------- Timer1 function define --------------------
  275. #define TIMER0_MODE0_ENABLE TMOD&=0xF0
  276. #define TIMER0_MODE1_ENABLE TMOD&=0xF0;TMOD|=0x01
  277. #define TIMER0_MODE2_ENABLE TMOD&=0xF0;TMOD|=0x02
  278. #define TIMER0_MODE3_ENABLE TMOD&=0xF0;TMOD|=0x03
  279. //-------------------- Timer2 function define --------------------
  280. #define TIMER2_DIV_4 T2MOD|=0x10;T2MOD&=0x9F
  281. #define TIMER2_DIV_16 T2MOD|=0x20;T2MOD&=0xAF
  282. #define TIMER2_DIV_32 T2MOD|=0x30;T2MOD&=0xBF
  283. #define TIMER2_DIV_64 T2MOD|=0x40;T2MOD&=0xCF
  284. #define TIMER2_DIV_128 T2MOD|=0x50;T2MOD&=0xDF
  285. #define TIMER2_DIV_256 T2MOD|=0x60;T2MOD&=0xEF
  286. #define TIMER2_DIV_512 T2MOD|=0x70
  287. #define TIMER2_Auto_Reload_Delay_Mode T2CON&=~SET_BIT0;T2MOD|=SET_BIT7;T2MOD|=SET_BIT3
  288. #define TIMER2_Compare_Capture_Mode T2CON|=SET_BIT0;T2MOD&=~SET_BIT7;T2MOD|=SET_BIT2
  289. #define TIMER2_CAP0_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x89
  290. #define TIMER2_CAP1_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x8A
  291. #define TIMER2_CAP2_Capture_Mode T2CON&=~SET_BIT0;T2MOD=0x8B
  292. //-------------------- Timer2 Capture define --------------------
  293. //--- Falling Edge -----
  294. #define IC0_P12_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  295. #define IC1_P11_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  296. #define IC2_P10_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  297. #define IC3_P00_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  298. #define IC3_P04_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  299. #define IC4_P01_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  300. #define IC5_P03_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  301. #define IC6_P05_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  302. #define IC7_P15_CAP0_FallingEdge_Capture CAPCON1&=0xFC;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  303. #define IC0_P12_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  304. #define IC1_P11_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON0|=SET_BIT5
  305. #define IC2_P10_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  306. #define IC3_P00_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  307. #define IC3_P04_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  308. #define IC4_P01_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  309. #define IC5_P03_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  310. #define IC6_P05_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  311. #define IC7_P15_CAP1_FallingEdge_Capture CAPCON1&=0xF3;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  312. #define IC0_P12_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  313. #define IC1_P11_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x10;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  314. #define IC2_P10_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x20;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  315. #define IC3_P00_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x30;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  316. #define IC3_P04_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x40;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  317. #define IC4_P01_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x50;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  318. #define IC5_P03_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x60;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  319. #define IC6_P05_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x70;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  320. #define IC7_P15_CAP2_FallingEdge_Capture CAPCON1&=0x0F;CAPCON4&=0xF0;CAPCON4|=0x80;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6
  321. //----- Rising edge ----
  322. #define IC0_P12_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  323. #define IC1_P11_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  324. #define IC2_P10_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  325. #define IC3_P00_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  326. #define IC3_P04_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  327. #define IC4_P01_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  328. #define IC5_P03_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  329. #define IC6_P05_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  330. #define IC7_P15_CAP0_RisingEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x01;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4;
  331. #define IC0_P12_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0FCAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  332. #define IC1_P11_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  333. #define IC2_P10_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  334. #define IC3_P00_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  335. #define IC3_P04_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  336. #define IC4_P01_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  337. #define IC5_P03_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  338. #define IC6_P05_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  339. #define IC7_P15_CAP1_RisingEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x04;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  340. #define IC0_P12_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  341. #define IC1_P11_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x01;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  342. #define IC2_P10_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x02;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  343. #define IC3_P00_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x03;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  344. #define IC3_P04_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x04;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  345. #define IC4_P01_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x05;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  346. #define IC5_P03_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x06;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  347. #define IC6_P05_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x07;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  348. #define IC7_P15_CAP3_RisingEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x10;CAPCON4&=0xF0;CAPCON4|=0x08;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  349. //-----BOTH edge ----
  350. #define IC0_P12_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  351. #define IC1_P11_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x01;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  352. #define IC2_P10_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x02;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  353. #define IC3_P00_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x03;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  354. #define IC3_P04_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x04;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  355. #define IC4_P01_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x05;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  356. #define IC5_P03_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x06;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  357. #define IC6_P05_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x07;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  358. #define IC7_P15_CAP0_BothEdge_Capture CAPCON1&=0xFC;CAPCON1|=0x02;CAPCON3&=0xF0;CAPCON3|=0x08;CAPCON0|=SET_BIT4;CAPCON2|=SET_BIT4
  359. #define IC0_P12_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5
  360. #define IC1_P11_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x10;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  361. #define IC2_P10_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x20;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  362. #define IC3_P00_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x30;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  363. #define IC3_P04_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x40;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  364. #define IC4_P01_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x50;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  365. #define IC5_P03_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x60;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  366. #define IC6_P05_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x70;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  367. #define IC7_P15_CAP1_BothEdge_Capture CAPCON1&=0xF3;CAPCON1|=0x08;CAPCON3&=0x0F;CAPCON3|=0x80;CAPCON0|=SET_BIT5;CAPCON2|=SET_BIT5;
  368. #define IC0_P12_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  369. #define IC1_P11_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x01;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  370. #define IC2_P10_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x02;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  371. #define IC3_P00_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x03;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  372. #define IC3_P04_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x04;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  373. #define IC4_P01_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x05;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  374. #define IC5_P03_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x06;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  375. #define IC6_P05_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x07;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  376. #define IC7_P15_CAP3_BothEdge_Capture CAPCON1&=0x0F;CAPCON1|=0x20;CAPCON4&=0xF0;CAPCON4|=0x08;CAPCON0|=SET_BIT6;CAPCON2|=SET_BIT6;
  377. #define TIMER2_IC2_DISABLE CAPCON0&=~SET_BIT6
  378. #define TIMER2_IC1_DISABLE CAPCON0&=~SET_BIT5
  379. #define TIMER2_IC0_DISABLE CAPCON0&=~SET_BIT4
  380. /*****************************************************************************************
  381. * For PWM setting
  382. *****************************************************************************************/
  383. //--------- PMW clock source select define ---------------------
  384. #define PWM_CLOCK_FSYS CKCON&=0xBF
  385. #define PWM_CLOCK_TIMER1 CKCON|=0x40
  386. //--------- PWM clock devide define ----------------------------
  387. #define PWM_CLOCK_DIV_2 PWMCON1|=0x01;PWMCON1&=0xF9
  388. #define PWM_CLOCK_DIV_4 PWMCON1|=0x02;PWMCON1&=0xFA
  389. #define PWM_CLOCK_DIV_8 PWMCON1|=0x03;PWMCON1&=0xFB
  390. #define PWM_CLOCK_DIV_16 PWMCON1|=0x04;PWMCON1&=0xFC
  391. #define PWM_CLOCK_DIV_32 PWMCON1|=0x05;PWMCON1&=0xFD
  392. #define PWM_CLOCK_DIV_64 PWMCON1|=0x06;PWMCON1&=0xFE
  393. #define PWM_CLOCK_DIV_128 PWMCON1|=0x07
  394. //--------- PWM I/O select define ------------------------------
  395. #define PWM5_P15_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x20;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.5 as PWM5 output enable
  396. #define PWM5_P03_OUTPUT_ENABLE PIOCON0|=0x20 //P0.3 as PWM5
  397. #define PWM4_P01_OUTPUT_ENABLE PIOCON0|=0x10 //P0.1 as PWM4 output enable
  398. #define PWM3_P04_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x08;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P0.4 as PWM3 output enable
  399. #define PWM3_P00_OUTPUT_ENABLE PIOCON0|=0x08 //P0.0 as PWM3
  400. #define PWM2_P05_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x04;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.0 as PWM2 output enable
  401. #define PWM2_P10_OUTPUT_ENABLE PIOCON0|=0x04 //P1.0 as PWM2
  402. #define PWM1_P14_OUTPUT_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x02;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.4 as PWM1 output enable
  403. #define PWM1_P11_OUTPUT_ENABLE PIOCON0|=0x02 //P1.1 as PWM1
  404. #define PWM0_P12_OUTPUT_ENABLE PIOCON0|=0x01 //P1.2 as PWM0 output enable
  405. #define ALL_PWM_OUTPUT_ENABLE PIOCON0=0xFF;PIOCON1=0xFF
  406. #define PWM5_P15_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xDF;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.5 as PWM5 output disable
  407. #define PWM5_P03_OUTPUT_DISABLE PIOCON0&=0xDF //P0.3 as PWM5
  408. #define PWM4_P01_OUTPUT_DISABLE PIOCON0&=0xEF //P0.1 as PWM4 output disable
  409. #define PWM3_P04_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xF7;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P0.4 as PWM3 output disable
  410. #define PWM3_P00_OUTPUT_DISABLE PIOCON0&=0xF7 //P0.0 as PWM3
  411. #define PWM2_P05_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFB;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.0 as PWM2 output disable
  412. #define PWM2_P10_OUTPUT_DISABLE PIOCON0&=0xFB //P1.0 as PWM2
  413. #define PWM1_P14_OUTPUT_DISABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFD;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP //P1.4 as PWM1 output disable
  414. #define PWM1_P11_OUTPUT_DISABLE PIOCON0&=0xFD //P1.1 as PWM1
  415. #define PWM0_P12_OUTPUT_DISABLE PIOCON0&=0xFE //P1.2 as PWM0 output disable
  416. #define ALL_PWM_OUTPUT_DISABLE PIOCON0=0x00;PIOCON1=0x00
  417. //--------- PWM I/O Polarity Control ---------------------------
  418. #define PWM5_OUTPUT_INVERSE PNP|=0x20
  419. #define PWM4_OUTPUT_INVERSE PNP|=0x10
  420. #define PWM3_OUTPUT_INVERSE PNP|=0x08
  421. #define PWM2_OUTPUT_INVERSE PNP|=0x04
  422. #define PWM1_OUTPUT_INVERSE PNP|=0x02
  423. #define PWM0_OUTPUT_INVERSE PNP|=0x01
  424. #define PWM_OUTPUT_ALL_INVERSE PNP=0xFF
  425. #define PWM5_OUTPUT_NORMAL PNP&=0xDF
  426. #define PWM4_OUTPUT_NORMAL PNP&=0xEF
  427. #define PWM3_OUTPUT_NORMAL PNP&=0xF7
  428. #define PWM2_OUTPUT_NORMAL PNP&=0xFB
  429. #define PWM1_OUTPUT_NORMAL PNP&=0xFD
  430. #define PWM0_OUTPUT_NORMAL PNP&=0xFE
  431. #define PWM_OUTPUT_ALL_NORMAL PNP=0x00
  432. //--------- PWM type define ------------------------------------
  433. #define PWM_EDGE_TYPE PWMCON1&=~SET_BIT4
  434. #define PWM_CENTER_TYPE PWMCON1|=SET_BIT4
  435. //--------- PWM mode define ------------------------------------
  436. #define PWM_IMDEPENDENT_MODE PWMCON1&=0x3F
  437. #define PWM_COMPLEMENTARY_MODE PWMCON1|=0x40;PWMCON1&=0x7F
  438. #define PWM_SYNCHRONIZED_MODE PWMCON1|=0x80;PWMCON1&=0xBF
  439. #define PWM_GP_MODE_ENABLE PWMCON1|=0x20
  440. #define PWM_GP_MODE_DISABLE PWMCON1&=0xDF
  441. //--------- PMW interrupt setting ------------------------------
  442. #define PWM_FALLING_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xCF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  443. #define PWM_RISING_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x10;PWMCON0&=0xDF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  444. #define PWM_CENTRAL_POINT_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x20;PWMCON0&=0xEF;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  445. #define PWM_PERIOD_END_INT BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC|=0x30;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  446. //--------- PWM interrupt pin select ---------------------------
  447. #define PWM_INT_PWM0 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  448. #define PWM_INT_PWM1 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x01;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  449. #define PWM_INT_PWM2 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x02;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  450. #define PWM_INT_PWM3 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x03;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  451. #define PWM_INT_PWM4 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x04;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  452. #define PWM_INT_PWM5 BIT_TMP=EA;TA=0xAA;TA=0x55;SFRS=0x01;PWMINTC&=0xF8;PWMINTC|=0x05;TA=0xAA;TA=0x55;SFRS=0x00;EA=BIT_TMP
  453. //--------- PWM Dead time setting ------------------------------
  454. #define PWM45_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x04;EA=BIT_TMP
  455. #define PWM34_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x02;EA=BIT_TMP
  456. #define PWM01_DEADTIME_ENABLE BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x01;EA=BIT_TMP
  457. /*****************************************************************************************
  458. * For ADC INIT setting
  459. *****************************************************************************************/
  460. #define Enable_ADC_AIN0 ADCCON0&=0xF0;P17_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT0;ADCCON1|=SET_BIT0 //P17
  461. #define Enable_ADC_AIN1 ADCCON0&=0xF0;ADCCON0|=0x01;P30_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT1;ADCCON1|=SET_BIT0 //P30
  462. #define Enable_ADC_AIN2 ADCCON0&=0xF0;ADCCON0|=0x02;P07_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT2;ADCCON1|=SET_BIT0 //P07
  463. #define Enable_ADC_AIN3 ADCCON0&=0xF0;ADCCON0|=0x03;P06_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT3;ADCCON1|=SET_BIT0 //P06
  464. #define Enable_ADC_AIN4 ADCCON0&=0xF0;ADCCON0|=0x04;P05_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT4;ADCCON1|=SET_BIT0 //P05
  465. #define Enable_ADC_AIN5 ADCCON0&=0xF0;ADCCON0|=0x05;P04_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT5;ADCCON1|=SET_BIT0 //P04
  466. #define Enable_ADC_AIN6 ADCCON0&=0xF0;ADCCON0|=0x06;P03_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT6;ADCCON1|=SET_BIT0 //P03
  467. #define Enable_ADC_AIN7 ADCCON0&=0xF0;ADCCON0|=0x07;P11_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT7;ADCCON1|=SET_BIT0 //P11
  468. #define Enable_ADC_BandGap ADCCON0|=SET_BIT3;ADCCON0&=0xF8;ADCCON1|=SET_BIT0 //Band-gap 1.22V
  469. #define Disable_ADC ADCCON1&=0xFE;
  470. #define PWM0_FALLINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  471. #define PWM2_FALLINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  472. #define PWM4_FALLINGEDGE_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  473. #define PWM0_RISINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  474. #define PWM2_RISINGEDGE_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  475. #define PWM4_RISINGEDGE_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  476. #define PWM0_CENTRAL_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  477. #define PWM2_CENTRAL_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  478. #define PWM4_CENTRAL_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
  479. #define PWM0_END_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  480. #define PWM2_END_TRIG_ADC ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  481. #define PWM4_END_TRIG_ADC ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1|=SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
  482. #define P04_FALLINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6
  483. #define P13_FALLINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6
  484. #define P04_RISINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6
  485. #define P13_RISINGEDGE_TRIG_ADC ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6
  486. /*****************************************************************************************
  487. * For SPI INIT setting
  488. *****************************************************************************************/
  489. #define SPICLK_DIV2 clr_SPR0;clr_SPR1
  490. #define SPICLK_DIV4 set_SPR0;clr_SPR1
  491. #define SPICLK_DIV8 clr_SPR0;set_SPR1
  492. #define SPICLK_DIV16 set_SPR0;set_SPR1
  493. #define Enable_SPI_Interrupt set_ESPI;set_EA
  494. #define SS P15