16f877.h
上传用户:sanfwan_06
上传日期:2007-12-18
资源大小:190k
文件大小:7k
源码类别:

串口编程

开发平台:

C/C++

  1. //////// Standard Header file for the PIC16F877 device ////////
  2. #device PIC16F877
  3. #nolist
  4. /////////////////////////////// I/O definitions for INPUT() and OUTPUT_xxx()
  5. #define PIN_A0  40
  6. #define PIN_A1  41
  7. #define PIN_A2  42
  8. #define PIN_A3  43
  9. #define PIN_A4  44
  10. #define PIN_A5  45
  11. #define PIN_B0  48
  12. #define PIN_B1  49
  13. #define PIN_B2  50
  14. #define PIN_B3  51
  15. #define PIN_B4  52
  16. #define PIN_B5  53
  17. #define PIN_B6  54
  18. #define PIN_B7  55
  19. #define PIN_C0  56
  20. #define PIN_C1  57
  21. #define PIN_C2  58
  22. #define PIN_C3  59
  23. #define PIN_C4  60
  24. #define PIN_C5  61
  25. #define PIN_C6  62
  26. #define PIN_C7  63
  27. #define PIN_D0  64
  28. #define PIN_D1  65
  29. #define PIN_D2  66
  30. #define PIN_D3  67
  31. #define PIN_D4  68
  32. #define PIN_D5  69
  33. #define PIN_D6  70
  34. #define PIN_D7  71
  35. #define PIN_E0  72
  36. #define PIN_E1  73
  37. #define PIN_E2  74
  38. /////////////////////////////// Useful defines
  39. #define FALSE 0
  40. #define TRUE 1
  41. #define BYTE int
  42. #define BOOLEAN short int
  43. #define getc getch
  44. #define getchar getch
  45. #define puts(s) {printf(s); putchar(13); putchar(10);}
  46. #define putc putchar
  47. /////////////////////////////// Constants used for RESTART_CAUSE()
  48. #define WDT_FROM_SLEEP  0
  49. #define WDT_TIMEOUT     8
  50. #define MCLR_FROM_SLEEP 16
  51. #define NORMAL_POWER_UP 24
  52. /////////////////////////////// Constants used for SETUP_COUNTERS()
  53. #define RTCC_INTERNAL   0
  54. #define RTCC_EXT_L_TO_H 32
  55. #define RTCC_EXT_H_TO_L 48
  56. #define RTCC_DIV_2      0
  57. #define RTCC_DIV_4      1
  58. #define RTCC_DIV_8      2
  59. #define RTCC_DIV_16     3
  60. #define RTCC_DIV_32     4
  61. #define RTCC_DIV_64     5
  62. #define RTCC_DIV_128    6
  63. #define RTCC_DIV_256    7
  64. #define WDT_18MS        8
  65. #define WDT_36MS        9
  66. #define WDT_72MS       10
  67. #define WDT_144MS      11
  68. #define WDT_288MS      12
  69. #define WDT_576MS      13
  70. #define WDT_1152MS     14
  71. #define WDT_2304MS     15
  72. #define L_TO_H              0x40
  73. #define H_TO_L                 0
  74. #define RTCC_ZERO           0x0B20    // Used for ENABLE/DISABLE INTERRUPTS
  75. #define INT_RTCC            0x0B20    // Used for ENABLE/DISABLE INTERRUPTS
  76. #define RB_CHANGE           0x0B08    // Used for ENABLE/DISABLE INTERRUPTS
  77. #define INT_RB              0x0B08    // Used for ENABLE/DISABLE INTERRUPTS
  78. #define EXT_INT             0x0B10    // Used for ENABLE/DISABLE INTERRUPTS
  79. #define INT_EXT             0x0B10    // Used for ENABLE/DISABLE INTERRUPTS
  80. #define GLOBAL              0x0BC0    // Used for ENABLE/DISABLE INTERRUPTS
  81. ///////////////////////////////////// Constants used for Timer1 and Timer2
  82. #define T1_DISABLED         0
  83. #define T1_INTERNAL         5
  84. #define T1_EXTERNAL         7
  85. #define T1_EXTERNAL_SYNC    3
  86. #define T1_CLK_OUT          8
  87. #define T1_DIV_BY_1         0
  88. #define T1_DIV_BY_2         0x10
  89. #define T1_DIV_BY_4         0x20
  90. #define T1_DIV_BY_8         0x30
  91. #byte   TIMER_1_LOW=        0x0e
  92. #byte   TIMER_1_HIGH=       0x0f
  93. #define T2_DISABLED         0
  94. #define T2_DIV_BY_1         4
  95. #define T2_DIV_BY_4         5
  96. #define T2_DIV_BY_16        6
  97. #byte   TIMER_2=            0x11
  98. #define INT_TIMER1          0x8C01    // Used for ENABLE/DISABLE INTERRUPTS
  99. #define INT_TIMER2          0x8C02    // Used for ENABLE/DISABLE INTERRUPTS
  100. //////////////////////////////////// Constants used for SETUP_CCP1()
  101. #define CCP_OFF                         0
  102. #define CCP_CAPTURE_FE                  4
  103. #define CCP_CAPTURE_RE                  5
  104. #define CCP_CAPTURE_DIV_4               6
  105. #define CCP_CAPTURE_DIV_16              7
  106. #define CCP_COMPARE_SET_ON_MATCH        8
  107. #define CCP_COMPARE_CLR_ON_MATCH        9
  108. #define CCP_COMPARE_INT                 0xA
  109. #define CCP_COMPARE_RESET_TIMER         0xB
  110. #define CCP_PWM                         0xC
  111. #define CCP_PWM_PLUS_1                  0x1c
  112. #define CCP_PWM_PLUS_2                  0x2c
  113. #define CCP_PWM_PLUS_3                  0x3c
  114. long CCP_1;
  115. #byte   CCP_1    =                      0x15
  116. #byte   CCP_1_LOW=                      0x15
  117. #byte   CCP_1_HIGH=                     0x16
  118. #define INT_CCP1            0x8C04    // Used for ENABLE/DISABLE INTERRUPTS
  119. //////////////////////////////////// Constants used for SETUP_CCP2()
  120. long CCP_2;
  121. #byte   CCP_2    =                      0x1B
  122. #byte   CCP_2_LOW=                      0x1B
  123. #byte   CCP_2_HIGH=                     0x1C
  124. #define INT_CCP2            0x8D01    // Used for ENABLE/DISABLE INTERRUPTS
  125. //////////////////////////////////// Constants used for SETUP_PSP()
  126. #define PSP_ENABLED                     0x10
  127. #define PSP_DISABLED                    0
  128. #byte   PSP_DATA=                       8
  129. #define INT_PSP             0x8C80    // Used for ENABLE/DISABLE INTERRUPTS
  130. //////////////////////////////////// Constants used in SETUP_SSP()
  131. #define SPI_MASTER       0x20
  132. #define SPI_SLAVE        0x24
  133. #define SPI_L_TO_H       0
  134. #define SPI_H_TO_L       0x10
  135. #define SPI_CLK_DIV_4    0
  136. #define SPI_CLK_DIV_16   1
  137. #define SPI_CLK_DIV_64   2
  138. #define SPI_CLK_T2       3
  139. #define SPI_SS_DISABLED  1
  140. #define INT_SSP             0x8C08    // Used for ENABLE/DISABLE INTERRUPTS
  141. #define SPI_SAMPLE_AT_END 0x8000
  142. #define SPI_XMIT_L_TO_H  0x4000
  143. #define INT_RDA             0x8C20    // Used for ENABLE/DISABLE INTERRUPTS
  144. #define INT_TBE             0x8C10    // Used for ENABLE/DISABLE INTERRUPTS
  145. #define INT_BUSCOL            0x8D08    // Used for ENABLE/DISABLE INTERRUPTS
  146. ///////////////////////////////////// Constants used for SETUP_ADC_PORTS()
  147. #define NO_ANALOGS             0x86         // None
  148. #define ALL_ANALOG             0x80         // RA0 RA1 RA2 RA3 RA5 RE0 RE1 RE2 Ref=Vdd
  149. #define ANALOG_RA3_REF         0x81         // RA0 RA1 RA2 RA5 RE0 RE1 RE2 Ref=RA3
  150. #define A_ANALOG               0x82         // RA0 RA1 RA2 RA3 RA5 Ref=Vdd
  151. #define A_ANALOG_RA3_REF       0x83         // RA0 RA1 RA2 RA5 Ref=RA3
  152. #define RA0_RA1_RA3_ANALOG     0x84         // RA0 RA1 RA3 Ref=Vdd
  153. #define RA0_RA1_ANALOG_RA3_REF 0x85         // RA0 RA1 Ref=RA3
  154. #define ANALOG_RA3_RA2_REF              0x88   // RA0 RA1 RA5 RE0 RE1 RE2 Ref=RA2,RA3
  155. #define ANALOG_NOT_RE1_RE2              0x89   // RA0 RA1 RA2 RA3 RA5 RE0 Ref=Vdd
  156. #define ANALOG_NOT_RE1_RE2_REF_RA3      0x8A   // RA0 RA1 RA2 RA5 RE0 Ref=RA3
  157. #define ANALOG_NOT_RE1_RE2_REF_RA3_RA2  0x8B   // RA0 RA1 RA5 RE0 Ref=RA2,RA3
  158. #define A_ANALOG_RA3_RA2_REF            0x8C   // RA0 RA1 RA5 Ref=RA2,RA3
  159. #define RA0_RA1_ANALOG_RA3_RA2_REF      0x8D   // RA0 RA1 Ref=RA2,RA3
  160. #define RA0_ANALOG                      0x8E   // RA0
  161. #define RA0_ANALOG_RA3_RA2_REF          0x8F   // RA0 Ref=RA2,RA3
  162. ///////////////////////////////////// Constants used for SETUP_ADC()
  163. #define ADC_OFF                0
  164. #define ADC_CLOCK_DIV_2        1
  165. #define ADC_CLOCK_DIV_8     0x41
  166. #define ADC_CLOCK_DIV_32    0x81
  167. #define ADC_CLOCK_INTERNAL  0xc1
  168. #define ADC_DONE            0x8C40    // Used for ENABLE/DISABLE INTERRUPTS
  169. #define INT_ADC             0x8C40    // Used for ENABLE/DISABLE INTERRUPTS
  170. #define INT_EEPROM          0x8D10    // Used for ENABLE/DISABLE INTERRUPTS
  171. #list