久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17434|回復: 25
打印 上一主題 下一主題
收起左側

PIC16877A單片機頭文件寄存器的中文說明 PWM,AD,IIC等模塊的使用例程設置詳解

  [復制鏈接]
跳轉到指定樓層
樓主
絕對好資料,自己學習的一個過程,基本的模塊都有,如:比較,PWM,AD,IIC等。另外還有頭文件寄存器的中文說明,PIC16F877A的原英文使用說明書和PIC16F877中文使用說明書,英文不好的可以對照著看。


PIC16F877引腳圖:



PIC16F877中文資料(完整的pdf文檔可從本帖附件中下載):





單片機pic16f877a頭文件中文說明如下:
  1. /*
  2. * Header file for the Microchip
  3. * PIC 16F873A chip
  4. * PIC 16F874A chip
  5. * PIC 16F876A chip
  6. * PIC 16F877A chip
  7. * Midrange Microcontroller
  8. */

  9. #if defined(_16F874A) || defined(_16F877A)
  10. #define __PINS_40
  11. #endif

  12. static volatile unsigned char INDF @ 0x00;   //間接尋址寄存器
  13. static volatile unsigned char TMR0 @ 0x01;   //定時器0
  14. static volatile unsigned char PCL  @ 0x02;   //低8位程序計數器
  15. static volatile unsigned char STATUS @ 0x03;   //程序狀態寄存器
  16. static          unsigned char FSR  @ 0x04;   //特殊功能寄存器
  17. static volatile unsigned char PORTA @ 0x05;   //端口A寄存器
  18. static volatile unsigned char PORTB @ 0x06;   //端口B寄存器
  19. static volatile unsigned char PORTC @ 0x07;   //端口C寄存器
  20. #ifdef __PINS_40
  21. static volatile unsigned char PORTD @ 0x08;   //端口D寄存器
  22. static volatile unsigned char PORTE @ 0x09;   //端口E寄存器
  23. #endif
  24. static          unsigned char PCLATH @ 0x0A;   //高5位程序計數器
  25. static volatile unsigned char INTCON @ 0x0B;   //中斷控制寄存器
  26. static volatile unsigned char PIR1 @ 0x0C;   //中斷標志寄存器PIR1
  27. static volatile unsigned char PIR2 @ 0x0D;   //中斷標志寄存器PIR2
  28. static volatile unsigned char TMR1L @ 0x0E;   //低字節計數寄存器
  29. static volatile unsigned char TMR1H @ 0x0F;   //高字節計數寄存器
  30. static volatile unsigned char T1CON @ 0x10;   //TMR1控制寄存器
  31. static volatile unsigned char TMR2 @ 0x11;   //定時/計數器TMR2
  32. static volatile unsigned char T2CON @ 0x12;   //TMR2控制寄存器
  33. static volatile unsigned char SSPBUF @ 0x13;   //收/發數據緩沖器
  34. static volatile unsigned char SSPCON @ 0x14;   //同步串口控制寄存器,對MSSP模塊的功能和指標進行設置和定義。
  35. static volatile unsigned char CCPR1L @ 0x15;   //捕獲/比較/PWM寄存器低字節
  36. static volatile unsigned char CCPR1H @ 0x16;   //捕獲/比較/PWM寄存器低字節
  37. static volatile unsigned char CCP1CON @ 0x17;   //CCP1CON寄存器
  38. static volatile unsigned char RCSTA @ 0x18;   //USART接收控制兼狀態寄存器
  39. static volatile unsigned char TXREG @ 0x19;   //USART發生緩沖器
  40. static volatile unsigned char RCREG @ 0x1A;   //USART接收緩沖器
  41. static volatile unsigned char CCPR2L @ 0x1B;   //捕獲/比較/PWM寄存器低字節
  42. static volatile unsigned char CCPR2H @ 0x1C;   //捕獲/比較/PWM寄存器低字節
  43. static volatile unsigned char CCP2CON @ 0x1D;   //CCP2CON寄存器
  44. static volatile unsigned char ADRESH @ 0x1E;   //ADC轉換結果寄存器高字節
  45. static volatile unsigned char ADCON0 @ 0x1F;   //A/D轉換器開關位。

  46. /* bank 1 registers */
  47. static          unsigned char bank1 OPTION @ 0x81;  //選擇寄存器,用于配置TMR0/WDT預分頻系數、外部INT中斷、TMR0和端口B的弱上拉。
  48. static volatile unsigned char bank1 TRISA @ 0x85;  //A口方向寄存器
  49. static volatile unsigned char bank1 TRISB @ 0x86;  //B口方向寄存器
  50. static volatile unsigned char bank1 TRISC @ 0x87;  //C口方向寄存器
  51. #ifdef __PINS_40
  52. static volatile unsigned char bank1 TRISD @ 0x88;  //D口方向寄存器
  53. static volatile unsigned char bank1 TRISE @ 0x89;  //E口方向寄存器
  54. #endif
  55. static volatile unsigned char bank1 PIE1 @ 0x8C;  //中斷允許寄存器PIE1
  56. static volatile unsigned char bank1 PIE2 @ 0x8D;  //中斷允許寄存器PIE2
  57. static volatile unsigned char bank1 PCON @ 0x8E;  //電源控制狀態寄存器
  58. static volatile unsigned char bank1 SSPCON2 @ 0x91;  //MSSP控制寄存器2
  59. static volatile unsigned char bank1 PR2  @ 0x92;  //TMR2周期寄存器
  60. static volatile unsigned char bank1 SSPADD @ 0x93;  //同步串口地址寄存器
  61. static volatile unsigned char bank1 SSPSTAT @ 0x94;  //同步串口狀態寄存器
  62. static volatile unsigned char bank1 TXSTA @ 0x98;  //USART發生控制兼狀態寄存器
  63. static volatile unsigned char bank1 SPBRG @ 0x99;  //USART波特率發生器初值寄存器
  64. static volatile unsigned char bank1 CMCON @ 0x9C;  //比較控制寄存器
  65. static volatile unsigned char bank1 CVRCON @ 0x9D;  //比較電壓參考控制寄存器
  66. static volatile unsigned char bank1 ADRESL @ 0x9E;  //ADC轉換結果寄存器低字節
  67. static volatile unsigned char bank1 ADCON1 @ 0x9F;  //ADC控制寄存器ADCON1

  68. /* bank 2 registers */
  69. static volatile unsigned char bank2 EEDATA @ 0x10C; //EEPROM數據寄存器低字節
  70. static volatile unsigned char bank2 EEADR @ 0x10D; //EEPROM地址寄存器低字節
  71. // Alternate definition
  72. volatile unsigned char              EEADRL        @ 0x10D;
  73. static volatile unsigned char bank2 EEDATH @ 0x10E; //EEPROM數據寄存器高字節
  74. static volatile unsigned char bank2 EEADRH @ 0x10F; //EEPROM地址寄存器高字節

  75. /* bank 3 registers */
  76. static volatile unsigned char bank3 EECON1 @ 0x18C; //EEPROM控制寄存器1
  77. static volatile unsigned char bank3 EECON2 @ 0x18D; //EEPROM控制寄存器2

  78. //* STATUS bits狀態寄存器 */
  79. static volatile bit IRP     @ (unsigned)&STATUS*8+7; //寄存器bank選擇位(用于間接尋址)。0:bank0,1;1:bank2,3
  80. static volatile bit RP1     @ (unsigned)&STATUS*8+6; //寄存器bank選擇位(用于直接尋址)。PR1:PR0:00:BANK0;01:BANK1;10:BANK2;11BANK3.
  81. static volatile bit RP0     @ (unsigned)&STATUS*8+5; //
  82. static volatile bit TO  @ (unsigned)&STATUS*8+4; //超時位。0:WDT超時發生;1:上電后,執行了CLRWDT或者SLEEP指令
  83. static volatile bit PD  @ (unsigned)&STATUS*8+3; //掉電標志位。0:執行完SLEEP指令;1:上電后或者執行CLRWDT指令
  84. static volatile bit ZERO    @ (unsigned)&STATUS*8+2; //零標志位。0:算術或邏輯操作結果不為0;1:反之。
  85. static volatile bit DC      @ (unsigned)&STATUS*8+1; //數字進位/退位標志位。0:結果的低4位沒有發生進位;1:反之。
  86. static volatile bit CARRY   @ (unsigned)&STATUS*8+0; //進位/退位標志位。0:結果的高4位沒有發生進位;1:反之。

  87. /*      PORTA bits      */
  88. static volatile bit RA5 @ (unsigned)&PORTA*8+5;   //RA5
  89. static volatile bit RA4 @ (unsigned)&PORTA*8+4;   //RA4
  90. static volatile bit RA3 @ (unsigned)&PORTA*8+3;   //RA3
  91. static volatile bit RA2 @ (unsigned)&PORTA*8+2;   //RA2
  92. static volatile bit RA1 @ (unsigned)&PORTA*8+1;   //RA1
  93. static volatile bit RA0 @ (unsigned)&PORTA*8+0;   //RA0

  94. /*      PORTB bits      */
  95. static volatile bit RB7 @ (unsigned)&PORTB*8+7;   //RB7
  96. static volatile bit RB6 @ (unsigned)&PORTB*8+6;   //RB6
  97. static volatile bit RB5 @ (unsigned)&PORTB*8+5;   //RB5
  98. static volatile bit RB4 @ (unsigned)&PORTB*8+4;   //RB4
  99. static volatile bit RB3 @ (unsigned)&PORTB*8+3;   //RB3
  100. static volatile bit RB2 @ (unsigned)&PORTB*8+2;   //RB2
  101. static volatile bit RB1 @ (unsigned)&PORTB*8+1;   //RB1
  102. static volatile bit RB0 @ (unsigned)&PORTB*8+0;   //RB0

  103. /*      PORTC bits      */
  104. static volatile bit RC7 @ (unsigned)&PORTC*8+7;   //RC7
  105. static volatile bit RC6 @ (unsigned)&PORTC*8+6;   //RC6
  106. static volatile bit RC5 @ (unsigned)&PORTC*8+5;   //RC5
  107. static volatile bit RC4 @ (unsigned)&PORTC*8+4;   //RC4
  108. static volatile bit RC3 @ (unsigned)&PORTC*8+3;   //RC3
  109. static volatile bit RC2 @ (unsigned)&PORTC*8+2;   //RC2
  110. static volatile bit RC1 @ (unsigned)&PORTC*8+1;   //RC1
  111. static volatile bit RC0 @ (unsigned)&PORTC*8+0;   //RC0

  112. /*      PORTD bits      */
  113. #ifdef __PINS_40         
  114. static volatile bit RD7 @ (unsigned)&PORTD*8+7;   //RD7
  115. static volatile bit RD6 @ (unsigned)&PORTD*8+6;   //RD6
  116. static volatile bit RD5 @ (unsigned)&PORTD*8+5;   //RD5
  117. static volatile bit RD4 @ (unsigned)&PORTD*8+4;   //RD4
  118. static volatile bit RD3 @ (unsigned)&PORTD*8+3;   //RD3
  119. static volatile bit RD2 @ (unsigned)&PORTD*8+2;   //RD2
  120. static volatile bit RD1 @ (unsigned)&PORTD*8+1;   //RD1
  121. static volatile bit RD0 @ (unsigned)&PORTD*8+0;   //RD0

  122. /*      PORTE bits      */
  123. static volatile bit RE2 @ (unsigned)&PORTE*8+2;   //RE2
  124. static volatile bit RE1 @ (unsigned)&PORTE*8+1;   //RE1
  125. static volatile bit RE0 @ (unsigned)&PORTE*8+0;   //RE0
  126. #endif

  127. //* INTCON bits 中斷控制寄存器 */
  128. static volatile bit GIE  @ (unsigned)&INTCON*8+7; //總中斷使能位。0:屏蔽所有的中斷請求;1:允許非屏蔽的中斷。
  129. static volatile bit PEIE @ (unsigned)&INTCON*8+6; //外部中斷使能位。0:禁止;1:使能
  130. static volatile bit T0IE @ (unsigned)&INTCON*8+5; //TMR0溢出中斷使能位。0:禁止;1:使能
  131. static volatile bit INTE @ (unsigned)&INTCON*8+4; //RB0/INT外部中斷使能位。0:不使能;1:使能。
  132. static volatile bit RBIE @ (unsigned)&INTCON*8+3; //RB端口變化中斷時能位。0:不使能;1:使能。
  133. static volatile bit T0IF @ (unsigned)&INTCON*8+2; //TMR0溢出中斷標志位。0:無溢出;1:溢出。
  134. static volatile bit INTF @ (unsigned)&INTCON*8+1; //RB0/INT外部中斷標志位。0:RB0外部中斷未發生;1:RB0外部中斷發生。
  135. static volatile bit RBIF @ (unsigned)&INTCON*8+0; //RB端口變化中斷標志位。0:RB口無變化;1:RB口至少有一個引腳變化。
  136. // alternate definitions
  137. static volatile bit TMR0IE @ (unsigned)&INTCON*8+5; //
  138. static volatile bit TMR0IF @ (unsigned)&INTCON*8+2; //

  139. //* PIR1 bits中斷標志寄存器PIR1 */
  140. #ifdef __PINS_40
  141. static volatile bit PSPIF @ (unsigned)&PIR1*8+7;  //并行從端口讀寫中斷標志位。0:沒有讀寫操作發生;1:反之
  142. #endif
  143. static volatile bit ADIF @ (unsigned)&PIR1*8+6;  //A/D轉換器中斷標志位。0:A/D轉換沒有完成;1:A/D轉換完成。
  144. static volatile bit RCIF @ (unsigned)&PIR1*8+5;  //USART接收中斷標志位。0:接收緩沖器空;1:反之。
  145. static volatile bit TXIF @ (unsigned)&PIR1*8+4;  //USART發送中斷標志位。0:發生緩沖器滿;1:反之。
  146. static volatile bit SSPIF @ (unsigned)&PIR1*8+3;  //同步串行端口(ssp)中斷標志位。0:沒有ssp中斷條件發生;
  147. static volatile bit CCP1IF @ (unsigned)&PIR1*8+2;  //CCP1中斷標志位。
  148. static volatile bit TMR2IF @ (unsigned)&PIR1*8+1;  //TMR2 TO PR2匹配中斷標志位。0:沒有匹配發生
  149. static volatile bit TMR1IF @ (unsigned)&PIR1*8+0;  //TMR1溢出中斷標志位,0:無溢出

  150. /* PIR2 bits */
  151. static volatile bit CMIF @ (unsigned)&PIR2*8+6;  //比較器中斷標志位;0:比較器輸入沒有改變
  152. static volatile bit EEIF @ (unsigned)&PIR2*8+4;  //EEPROM寫操作中斷標志位。0:寫操作沒有完成或沒有開始
  153. static volatile bit BCLIF @ (unsigned)&PIR2*8+3;  //總線沖突中斷標志位。0:沒有總線沖突發生
  154. static volatile bit CCP2IF @ (unsigned)&PIR2*8+0;  //CCP2中斷標志位

  155. //* T1CON bits TMR1控制寄存器 */
  156. static volatile bit T1CKPS1 @ (unsigned)&T1CON*8+5;  //TMR1輸入時鐘預分頻選擇位
  157. static volatile bit T1CKPS0 @ (unsigned)&T1CON*8+4;  //TMR1輸入時鐘預分頻選擇位
  158. static volatile bit T1OSCEN @ (unsigned)&T1CON*8+3;  //TMR1震蕩器使能控制位。0:振蕩器關閉
  159. static volatile bit T1SYNC  @ (unsigned)&T1CON*8+2;  //TMR1外部時鐘輸入同步控制位。
  160. static volatile bit TMR1CS  @ (unsigned)&T1CON*8+1;  //TMR1時鐘源選擇位。0:內部時鐘的/4
  161. static volatile bit TMR1ON  @ (unsigned)&T1CON*8+0;  //TMR1使能位。0:禁止

  162. //* T2CON bits TMR2控制寄存器 */
  163. static volatile bit TOUTPS3 @ (unsigned)&T2CON*8+6;  //TMR2后分頻選擇位。
  164. static volatile bit TOUTPS2 @ (unsigned)&T2CON*8+5;  //TMR2后分頻選擇位
  165. static volatile bit TOUTPS1 @ (unsigned)&T2CON*8+4;  //TMR2后分頻選擇位
  166. static volatile bit TOUTPS0 @ (unsigned)&T2CON*8+3;  //TMR2后分頻選擇位。
  167. static volatile bit TMR2ON  @ (unsigned)&T2CON*8+2;  //TMR2使能位。
  168. static volatile bit T2CKPS1 @ (unsigned)&T2CON*8+1;  //TMR2預分頻選擇位。
  169. static volatile bit T2CKPS0 @ (unsigned)&T2CON*8+0;  //TMR2預分頻選擇位

  170. //* SSPCON bits SPI同步串口控制寄存器*/
  171. static volatile bit WCOL @ (unsigned)&SSPCON*8+7; //寫操作沖突檢測位,在SPI從動方式下,WCOL=0,未發生沖突,WCOL=1,發生沖突。
  172. static volatile bit SSPOV @ (unsigned)&SSPCON*8+6; //接收溢出標志位,SSPOV=0,未發生接收溢出;SSPOV=1,發生接受溢出。
  173. static volatile bit SSPEN @ (unsigned)&SSPCON*8+5; //同步串口MSSP允許位,SSPEN=0,關閉串口;SSPEN=1,允許串行端口功能。
  174. static volatile bit CKP  @ (unsigned)&SSPCON*8+4; //時鐘極性選擇位,CKP=0,空閑時時鐘停留在低電平;CKP=1,空閑時時鐘停留在高電平。
  175. static volatile bit SSPM3 @ (unsigned)&SSPCON*8+3; //同步串行口MSSP方式選擇位,主動參數。0,1,2,3,4.
  176. static volatile bit SSPM2 @ (unsigned)&SSPCON*8+2;
  177. static volatile bit SSPM1 @ (unsigned)&SSPCON*8+1;
  178. static volatile bit SSPM0 @ (unsigned)&SSPCON*8+0;

  179. /* CCP1CON bits */
  180. static volatile bit CCP1X @ (unsigned)&CCP1CON*8+5; //PWM最小信號位
  181. static volatile bit CCP1Y @ (unsigned)&CCP1CON*8+4; //PWM最小信號位
  182. static volatile bit CCP1M3 @ (unsigned)&CCP1CON*8+3; //CCP1模式選擇位
  183. static volatile bit CCP1M2 @ (unsigned)&CCP1CON*8+2; //CCP1模式選擇位
  184. static volatile bit CCP1M1 @ (unsigned)&CCP1CON*8+1; //CCP1模式選擇位
  185. static volatile bit CCP1M0 @ (unsigned)&CCP1CON*8+0; //CCP1模式選擇位

  186. //* RCSTA bits USART接收控制兼狀態寄存器  */
  187. static volatile bit SPEN @ (unsigned)&RCSTA*8+7;  //串行端口使能位。0:禁止;1:使能。
  188. static volatile bit RX9  @ (unsigned)&RCSTA*8+6;  //接收數據長度選擇位。0:接收8位數據;1:接收9位
  189. static volatile bit SREN @ (unsigned)&RCSTA*8+5;  //單字節使能選擇位。0:禁止;1:使能。異步模式未使用
  190. static volatile bit CREN @ (unsigned)&RCSTA*8+4;  //連續接收使能選擇位。0:禁止連續接收使能
  191. static volatile bit ADDEN @ (unsigned)&RCSTA*8+3;  //地址匹配檢測使能位。0:取消地址匹配檢測
  192. static volatile bit FERR @ (unsigned)&RCSTA*8+2;  //幀格式錯誤標志位。0:未發生錯誤
  193. static volatile bit OERR @ (unsigned)&RCSTA*8+1;  //溢出標志位。0:未溢出
  194. static volatile bit RX9D @ (unsigned)&RCSTA*8+0;  //接收數據的第9位

  195. /* CCP2CON bits */
  196. static volatile bit CCP2X @ (unsigned)&CCP2CON*8+5; //PWM最小信號位
  197. static volatile bit CCP2Y @ (unsigned)&CCP2CON*8+4; //PWM最小信號位
  198. static volatile bit CCP2M3 @ (unsigned)&CCP2CON*8+3; //CCP2模式選擇位
  199. static volatile bit CCP2M2 @ (unsigned)&CCP2CON*8+2; //CCP2模式選擇位
  200. static volatile bit CCP2M1 @ (unsigned)&CCP2CON*8+1; //CCP2模式選擇位
  201. static volatile bit CCP2M0 @ (unsigned)&CCP2CON*8+0; //CCP2模式選擇位

  202. //*  ADCON0 bits A/D控制寄存器位 */
  203. static volatile bit ADCS1 @ (unsigned)&ADCON0*8+7; //選擇A/D轉換時鐘。00:1/2;01:1/8;10:1/32;11:RC
  204. static volatile bit ADCS0  @ (unsigned)&ADCON0*8+6; //選擇A/D轉換時鐘
  205. static volatile bit CHS2 @ (unsigned)&ADCON0*8+5; //AD模擬通道選擇
  206. static volatile bit CHS1 @ (unsigned)&ADCON0*8+4; //AD模擬通道選擇
  207. static volatile bit CHS0 @ (unsigned)&ADCON0*8+3; //AD模擬通道選擇。000:選擇信道0.
  208. static volatile bit ADGO @ (unsigned)&ADCON0*8+2; //A/D轉換狀態位,ADON=1時,0:不在進行ad轉換;1:正在進行轉換。
  209. // Alternate definition for compatibility with other devices
  210. volatile bit        GODONE        @ (unsigned)&ADCON0*8+2;
  211. static volatile bit ADON @ (unsigned)&ADCON0*8+0; //A/D轉換器開關位,0:關閉;1:啟動。

  212. //*  OPTION bits 選擇寄存器  */
  213. static bank1 bit RBPU @ (unsigned)&OPTION*8+7; //端口B上拉設置允許位
  214. static bank1 bit INTEDG @ (unsigned)&OPTION*8+6; //外中斷源選擇位
  215. static bank1 bit T0CS @ (unsigned)&OPTION*8+5; //時鐘選擇位。T0CS=0,使用內部時鐘;T0CS=1,使用外部時鐘。
  216. static bank1 bit T0SE @ (unsigned)&OPTION*8+4; //計數器使用外部時鐘,T0SE=0,上升沿觸發;T0SE=1,下降沿觸發。
  217. static bank1 bit PSA  @ (unsigned)&OPTION*8+3; //PSA=0,作為time0的預分頻器;PSA=1,作為WDT的后分頻器。
  218. static bank1 bit PS2  @ (unsigned)&OPTION*8+2; //PS2,PS1,PS0。預分頻比例。000=1:2(Timer0)1:1(WDT)...
  219. static bank1 bit PS1  @ (unsigned)&OPTION*8+1; //
  220. static bank1 bit PS0  @ (unsigned)&OPTION*8+0; //

  221. //*      TRISA bits   PORTA數據方向寄存器   */
  222. static volatile bank1 bit TRISA5 @ (unsigned)&TRISA*8+5;  //
  223. static volatile bank1 bit TRISA4 @ (unsigned)&TRISA*8+4;  //
  224. static volatile bank1 bit TRISA3 @ (unsigned)&TRISA*8+3;  //
  225. static volatile bank1 bit TRISA2 @ (unsigned)&TRISA*8+2;  //
  226. static volatile bank1 bit TRISA1 @ (unsigned)&TRISA*8+1;  //
  227. static volatile bank1 bit TRISA0 @ (unsigned)&TRISA*8+0;  //

  228. //*      TRISB bits   PORTB數據方向寄存器   */
  229. static volatile bank1 bit TRISB7 @ (unsigned)&TRISB*8+7;  //
  230. static volatile bank1 bit TRISB6 @ (unsigned)&TRISB*8+6;  //
  231. static volatile bank1 bit TRISB5 @ (unsigned)&TRISB*8+5;  //
  232. static volatile bank1 bit TRISB4 @ (unsigned)&TRISB*8+4;  //
  233. static volatile bank1 bit TRISB3 @ (unsigned)&TRISB*8+3;  //
  234. static volatile bank1 bit TRISB2 @ (unsigned)&TRISB*8+2;  //
  235. static volatile bank1 bit TRISB1 @ (unsigned)&TRISB*8+1;  //
  236. static volatile bank1 bit TRISB0 @ (unsigned)&TRISB*8+0;  //

  237. //*      TRISC bits   PORTC數據方向寄存器   */
  238. static volatile bank1 bit TRISC7 @ (unsigned)&TRISC*8+7;  //
  239. static volatile bank1 bit TRISC6 @ (unsigned)&TRISC*8+6;  //
  240. static volatile bank1 bit TRISC5 @ (unsigned)&TRISC*8+5;  //
  241. static volatile bank1 bit TRISC4 @ (unsigned)&TRISC*8+4;  //
  242. static volatile bank1 bit TRISC3 @ (unsigned)&TRISC*8+3;  //
  243. static volatile bank1 bit TRISC2 @ (unsigned)&TRISC*8+2;  //
  244. static volatile bank1 bit TRISC1 @ (unsigned)&TRISC*8+1;  //
  245. static volatile bank1 bit TRISC0 @ (unsigned)&TRISC*8+0;  //

  246. #ifdef __PINS_40
  247. //*      TRISD bits   PORTD數據方向寄存器   */
  248. static volatile bank1 bit TRISD7 @ (unsigned)&TRISD*8+7;  //
  249. static volatile bank1 bit TRISD6 @ (unsigned)&TRISD*8+6;  //
  250. static volatile bank1 bit TRISD5 @ (unsigned)&TRISD*8+5;  //
  251. static volatile bank1 bit TRISD4 @ (unsigned)&TRISD*8+4;  //
  252. static volatile bank1 bit TRISD3 @ (unsigned)&TRISD*8+3;  //
  253. static volatile bank1 bit TRISD2 @ (unsigned)&TRISD*8+2;  //
  254. static volatile bank1 bit TRISD1 @ (unsigned)&TRISD*8+1;  //
  255. static volatile bank1 bit TRISD0 @ (unsigned)&TRISD*8+0;  //

  256. //*      TRISE bits  PORTE數據方向寄存器    */
  257. static volatile bank1 bit IBF  @ (unsigned)&TRISE*8+7;  //
  258. static volatile bank1 bit OBF  @ (unsigned)&TRISE*8+6;  //
  259. static volatile bank1 bit IBOV @ (unsigned)&TRISE*8+5;  //
  260. static volatile bank1 bit PSPMODE @ (unsigned)&TRISE*8+4;  //

  261. static volatile bank1 bit TRISE2  @ (unsigned)&TRISE*8+2;  //
  262. static volatile bank1 bit TRISE1  @ (unsigned)&TRISE*8+1;  //
  263. static volatile bank1 bit TRISE0  @ (unsigned)&TRISE*8+0;  //
  264. #endif

  265. //* PIE1 bits 外圍中斷獨立使能位 */
  266. #ifdef __PINS_40
  267. static volatile bank1 bit PSPIE @ (unsigned)&PIE1*8+7;  //并行從端口讀寫中斷使能位。0:禁止psp讀寫中斷
  268. #endif
  269. static volatile bank1 bit ADIE @ (unsigned)&PIE1*8+6;  //A/D轉換器中斷使能位。0:A/D轉換沒有完成;1:A/D轉換完成。
  270. static volatile bank1 bit RCIE @ (unsigned)&PIE1*8+5;  //USART接收中斷使能位。0:接收緩沖器空;1:反之。
  271. static volatile bank1 bit TXIE @ (unsigned)&PIE1*8+4;  ////USART發送中斷使能位。0:發生緩沖器滿;1:反之。
  272. static volatile bank1 bit SSPIE @ (unsigned)&PIE1*8+3;  //同步串行端口中斷使能位
  273. static volatile bank1 bit CCP1IE @ (unsigned)&PIE1*8+2;  //CCP1中斷使能位
  274. static volatile bank1 bit TMR2IE @ (unsigned)&PIE1*8+1;  //TMR2 TO PR2匹配中斷使能位。0:沒有匹配發生
  275. static volatile bank1 bit TMR1IE @ (unsigned)&PIE1*8+0;  //TMR1溢出中斷使能位,0:無溢出

  276. /* PIE2 bits */
  277. static volatile bank1 bit CMIE @ (unsigned)&PIE2*8+6;  //比較器中斷使能位
  278. static volatile bank1 bit EEIE @ (unsigned)&PIE2*8+4;  //EEPROM寫操作中斷使能位
  279. static volatile bank1 bit BCLIE @ (unsigned)&PIE2*8+3;  //總線沖突中斷使能位
  280. static volatile bank1 bit CCP2IE @ (unsigned)&PIE2*8+0;  //CCP2中斷使能位

  281. //* PCON bits 電源控制寄存器 */
  282. static volatile bank1 bit POR  @ (unsigned)&PCON*8+1;  //上電復位狀態位
  283. static volatile bank1 bit BOR  @ (unsigned)&PCON*8+0;  //掉電復位狀態位

  284. //* SSPCON2 bits  MSSP控制寄存器2*/
  285. static volatile bank1 bit GCEN @ (unsigned)&SSPCON2*8+7; //總調用使能位
  286. static volatile bank1 bit ACKSTAT @ (unsigned)&SSPCON2*8+6; //應答狀態位
  287. static volatile bank1 bit ACKDT @ (unsigned)&SSPCON2*8+5; //應答數據位
  288. static volatile bank1 bit ACKEN @ (unsigned)&SSPCON2*8+4; //應答順序使能位
  289. static volatile bank1 bit RCEN @ (unsigned)&SSPCON2*8+3; //接收使能位
  290. static volatile bank1 bit PEN  @ (unsigned)&SSPCON2*8+2; //停止條件使能位
  291. static volatile bank1 bit RSEN @ (unsigned)&SSPCON2*8+1; //重復開始條件使能位
  292. static volatile bank1 bit SEN  @ (unsigned)&SSPCON2*8+0; //開始條件使能位

  293. //*      SSPSTAT bits SPI同步串口狀態寄存器   */
  294. static volatile bank1 bit STAT_SMP @ (unsigned)&SSPSTAT*8+7;  //SPI采樣控制位。SPI主控方式,STAT_SMP=0,在輸出的數據中間采樣輸入數據,為1時,在末端采樣;SPI從動方式,STAT_SMP必須置位。
  295. static volatile bank1 bit STAT_CKE @ (unsigned)&SSPSTAT*8+6;  //SPI時鐘沿選擇,CKP=0時,STAT_CKE=0,SCK下降沿發送數據,STAT_CKE=1,SCK上升沿發送數據。CKP=1時,反之。
  296. static volatile bank1 bit STAT_DA  @ (unsigned)&SSPSTAT*8+5;  //數據/地址位
  297. static volatile bank1 bit STAT_P  @ (unsigned)&SSPSTAT*8+4;  //停止位
  298. static volatile bank1 bit STAT_S  @ (unsigned)&SSPSTAT*8+3;  //開始位
  299. static volatile bank1 bit STAT_RW  @ (unsigned)&SSPSTAT*8+2;  //讀寫位信息
  300. static volatile bank1 bit STAT_UA  @ (unsigned)&SSPSTAT*8+1;  //更新地址位
  301. static volatile bank1 bit STAT_BF  @ (unsigned)&SSPSTAT*8+0;  //緩沖器滿標志位。STAT_BF=0,緩沖器空;STAT_BF=1,緩沖器滿。
  302. #ifdef __STAT_BACKWARD_COMPATIBILITY
  303. #define STAT_SMP        SMP
  304. #define STAT_CKE        CKE
  305. #define STAT_DA        DA
  306. #define STAT_P        STOP
  307. #define STAT_S        START
  308. #define STAT_RW        RW
  309. #define STAT_UA        UA
  310. #define STAT_BF        BF
  311. #endif

  312. //* TXSTA bits USART發送控制兼狀態寄存器*/
  313. static volatile bank1 bit CSRC @ (unsigned)&TXSTA*8+7;  //同步時鐘選擇位。0:選外部時鐘;1:選內部時鐘。異步模式未用。
  314. static volatile bank1 bit TX9  @ (unsigned)&TXSTA*8+6;  //發生長度選擇位。0:發送8位數據;1:發送9位
  315. static volatile bank1 bit TXEN @ (unsigned)&TXSTA*8+5;  //發生使能選擇位。0:禁止發送;1:使能發生
  316. static volatile bank1 bit SYNC @ (unsigned)&TXSTA*8+4;  //同步/異步模式選擇位。0:異步;1:同步
  317. static volatile bank1 bit BRGH @ (unsigned)&TXSTA*8+2;  //高速波特率選擇位。0:低速;1:高速。
  318. static volatile bank1 bit TRMT @ (unsigned)&TXSTA*8+1;  //移位寄存器空標志位。0,發生移位寄存器滿,1,為空。
  319. static volatile bank1 bit TX9D @ (unsigned)&TXSTA*8+0;  //發生第9位的選擇位,0,不發生,1,發送。

  320. //* CMCON Bits 比較器控制寄存器 */
  321. static volatile bank1 bit C2OUT @ (unsigned)&CMCON*8+7;  //比較器2輸出位
  322. static volatile bank1 bit C1OUT @ (unsigned)&CMCON*8+6;  //比較器1輸出位
  323. static volatile bank1 bit C2INV @ (unsigned)&CMCON*8+5;  //比較器2輸出反向位
  324. static volatile bank1 bit C1INV @ (unsigned)&CMCON*8+4;  //比較器1輸出反向位
  325. static volatile bank1 bit CIS  @ (unsigned)&CMCON*8+3;  //比較器輸入開關位
  326. static volatile bank1 bit CM2  @ (unsigned)&CMCON*8+2;  //比較器模式位
  327. static volatile bank1 bit CM1  @ (unsigned)&CMCON*8+1;  //比較器模式位
  328. static volatile bank1 bit CM0  @ (unsigned)&CMCON*8+0;  //比較器模式位

  329. //* CVRCON Bits 比較電壓參考寄存器 */
  330. static volatile bank1 bit CVREN @ (unsigned)&CVRCON*8+7; //比較器電壓參考使能位
  331. static volatile bank1 bit CVROE @ (unsigned)&CVRCON*8+6; //比較器Vref輸出使能位
  332. static volatile bank1 bit CVRR @ (unsigned)&CVRCON*8+5; //比較器Vref范圍選擇位
  333. static volatile bank1 bit CVR3 @ (unsigned)&CVRCON*8+3; //比較器Vref值選擇位
  334. static volatile bank1 bit CVR2 @ (unsigned)&CVRCON*8+2; //比較器Vref值選擇位
  335. static volatile bank1 bit CVR1 @ (unsigned)&CVRCON*8+1; //比較器Vref值選擇位
  336. static volatile bank1 bit CVR0 @ (unsigned)&CVRCON*8+0; //比較器Vref值選擇位

  337. //* ADCON1 bits ADC控制寄存器ADCON1*/
  338. static volatile bank1 bit ADFM @ (unsigned)&ADCON1*8+7; //AD轉換結果格式選擇位
  339. static volatile bank1 bit ADCS2 @ (unsigned)&ADCON1*8+6; //AD轉換時鐘選擇位
  340. static volatile bank1 bit PCFG3 @ (unsigned)&ADCON1*8+3; //PCFG3-PCFG0AD轉換引腳功能選擇位。詳細意義見手冊PAGE-130.
  341. static volatile bank1 bit PCFG2 @ (unsigned)&ADCON1*8+2;
  342. static volatile bank1 bit PCFG1 @ (unsigned)&ADCON1*8+1;
  343. static volatile bank1 bit PCFG0 @ (unsigned)&ADCON1*8+0;

  344. //* EECON1 bits EEPROM控制寄存器*/
  345. static volatile bank3 bit EEPGD @ (unsigned)&EECON1*8+7; //程序/數據EEPROM選擇位。0:選擇訪問數據存儲器
  346. static volatile bank3 bit WRERR @ (unsigned)&EECON1*8+3; //EEPROM錯誤標志位。0:寫操作完成
  347. static volatile bank3 bit WREN @ (unsigned)&EECON1*8+2; //EEPROM寫使能位。1:允許
  348. static volatile bank3 bit WR  @ (unsigned)&EECON1*8+1; //寫控制位
  349. ……………………

  350. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


29個常用模塊的例程列表:
20170413 BEEP\
20170413 KEYS 4x4\
20170413 KEYS 8x1\
20170413 LCD PATA 1602\
20170413 LED 16x16\
20170413 LED1\
20170413 LED4\
20170415 74HC595x2\
20170416 SS 74HC595x2\
20170417 DS18B20+LCD1602\
20170418 TIMER1_T 0\
20170418 TMR0_T 0\
20170418 TMR0_T 1\
20170419 ADCON\
20170419 MSSP_SPI 74HC595x2\
20170419 TIMER2_T 0\
20170420 MSSP_I2C AT24C02\
20170420 MSSP_I2C PCF8563\
20170422 EEPROM_R_W\
20170422 EUSART_ASYN\
20170423 ECCP_CAPTURE\
20170423 ECCP_COMPARE\
20170424 ECCP_PWM\
20170426 EUSART_SYNC\
20170426 LCD12864_PATA\
20170426 LCD12864_SATA\
20170427 COMPARATOR MODULE\
20170428 CVRCON\
20170428 MSSP_SPI SD\

所有資料51hei提供打包下載:
PIC_C.rar (7.43 MB, 下載次數: 245)

評分

參與人數 1黑幣 +5 收起 理由
LQL-LQL + 5 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2017-5-19 04:18 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:204560 發表于 2017-5-25 01:08 | 只看該作者
沒錢,真的很需要

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 贊一個!

查看全部評分

回復

使用道具 舉報

地板
ID:94088 發表于 2017-11-10 13:20 | 只看該作者
感謝分享,謝謝!
回復

使用道具 舉報

5#
ID:209855 發表于 2017-11-22 17:55 | 只看該作者
很不錯的資料,謝謝了。
回復

使用道具 舉報

6#
ID:263835 發表于 2017-12-19 18:23 | 只看該作者
謝謝分享!!!!!!!!!11
回復

使用道具 舉報

7#
ID:268556 發表于 2017-12-28 20:03 | 只看該作者
剛學PIC,好想下載學習一下。
回復

使用道具 舉報

8#
ID:71359 發表于 2018-2-16 16:03 | 只看該作者

感謝分享,謝謝!
回復

使用道具 舉報

9#
ID:295438 發表于 2018-3-26 20:33 | 只看該作者
沒錢,真是尷尬
回復

使用道具 舉報

10#
ID:295438 發表于 2018-3-26 20:36 | 只看該作者
好想要這個學習資料,請問怎么得到?
回復

使用道具 舉報

11#
ID:302666 發表于 2018-4-21 20:46 | 只看該作者
牛貼解釋的很詳細
回復

使用道具 舉報

12#
ID:249901 發表于 2018-5-25 15:28 | 只看該作者
好資料,下來學習參考一下
回復

使用道具 舉報

13#
ID:302666 發表于 2018-6-1 02:56 | 只看該作者
51黑論壇,資料精辟
回復

使用道具 舉報

14#
ID:356936 發表于 2018-6-24 08:06 | 只看該作者
謝謝分享
回復

使用道具 舉報

15#
ID:213175 發表于 2018-9-18 14:59 | 只看該作者
感謝無私分享
回復

使用道具 舉報

16#
ID:203038 發表于 2019-4-11 22:33 | 只看該作者
  真的   很不錯
回復

使用道具 舉報

17#
ID:438139 發表于 2019-4-17 19:41 | 只看該作者
感謝樓主分享,先收藏了
回復

使用道具 舉報

18#
ID:438139 發表于 2019-4-17 19:41 | 只看該作者
感謝樓主分享,先收藏了
回復

使用道具 舉報

19#
ID:520890 發表于 2019-4-24 21:49 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

20#
ID:65547 發表于 2019-6-24 09:40 | 只看該作者
好資料,來學習學習....
回復

使用道具 舉報

21#
ID:552978 發表于 2019-6-29 13:50 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

22#
ID:524634 發表于 2019-7-15 13:54 | 只看該作者
絕對的好資料,必須贊
回復

使用道具 舉報

23#
ID:572137 發表于 2019-7-21 07:57 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

24#
ID:592524 發表于 2019-9-27 19:44 | 只看該作者
收藏了。謝謝分享。
回復

使用道具 舉報

25#
ID:619693 發表于 2019-10-8 11:05 | 只看該作者
謝謝分享 很好用
回復

使用道具 舉報

26#
ID:515930 發表于 2019-10-24 23:35 | 只看該作者
學習中
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视频在线| 一区二区三区精品在线 | 亚洲欧美日韩精品久久亚洲区 | 免费看一区二区三区 | 国产特级毛片aaaaaa | 中文字幕精品一区 | 丁香五月网久久综合 | 亚洲免费网址 | 午夜合集 | 中文字幕久久久 | 午夜日韩| 一区二区三区视频在线观看 | 欧美视频在线播放 | 成人免费毛片在线观看 | 国产精品一区久久久久 | 国产精品明星裸体写真集 | 天天操天天射天天 | 欧美日韩精品久久久免费观看 | 色五月激情五月 | 久久免费精品 | 亚洲人在线 | 亚洲一区国产 | 蜜桃在线播放 | 国产一区二区视频在线观看 | 欧美888| 欧美日韩在线一区二区 | 国产精品视频不卡 | 国产成人jvid在线播放 | 欧美伊人| 国产精品视频久久久久久 | 国精产品一品二品国精在线观看 | 天堂在线91 | 一级黄色日本片 | 就操在线 | 亚洲网站在线观看 | 99热播精品 | 欧美成人精品二区三区99精品 | 密桃av | 亚洲精品久久久久久久久久久久久 | 欧美一级片中文字幕 | 九色在线观看 |