|
絕對(duì)好資料,自己學(xué)習(xí)的一個(gè)過程,基本的模塊都有,如:比較,PWM,AD,IIC等。另外還有頭文件寄存器的中文說明,PIC16F877A的原英文使用說明書和PIC16F877中文使用說明書,英文不好的可以對(duì)照著看。
0.png (65.39 KB, 下載次數(shù): 258)
下載附件
2017-5-13 19:16 上傳
PIC16F877引腳圖:
0.png (53.79 KB, 下載次數(shù): 266)
下載附件
2017-5-13 19:21 上傳
PIC16F877中文資料(完整的pdf文檔可從本帖附件中下載):
0.png (259.25 KB, 下載次數(shù): 237)
下載附件
2017-5-13 19:20 上傳
0.png (75.57 KB, 下載次數(shù): 266)
下載附件
2017-5-13 19:23 上傳
單片機(jī)pic16f877a頭文件中文說明如下:
- /*
- * Header file for the Microchip
- * PIC 16F873A chip
- * PIC 16F874A chip
- * PIC 16F876A chip
- * PIC 16F877A chip
- * Midrange Microcontroller
- */
- #if defined(_16F874A) || defined(_16F877A)
- #define __PINS_40
- #endif
- static volatile unsigned char INDF @ 0x00; //間接尋址寄存器
- static volatile unsigned char TMR0 @ 0x01; //定時(shí)器0
- static volatile unsigned char PCL @ 0x02; //低8位程序計(jì)數(shù)器
- static volatile unsigned char STATUS @ 0x03; //程序狀態(tài)寄存器
- static unsigned char FSR @ 0x04; //特殊功能寄存器
- static volatile unsigned char PORTA @ 0x05; //端口A寄存器
- static volatile unsigned char PORTB @ 0x06; //端口B寄存器
- static volatile unsigned char PORTC @ 0x07; //端口C寄存器
- #ifdef __PINS_40
- static volatile unsigned char PORTD @ 0x08; //端口D寄存器
- static volatile unsigned char PORTE @ 0x09; //端口E寄存器
- #endif
- static unsigned char PCLATH @ 0x0A; //高5位程序計(jì)數(shù)器
- static volatile unsigned char INTCON @ 0x0B; //中斷控制寄存器
- static volatile unsigned char PIR1 @ 0x0C; //中斷標(biāo)志寄存器PIR1
- static volatile unsigned char PIR2 @ 0x0D; //中斷標(biāo)志寄存器PIR2
- static volatile unsigned char TMR1L @ 0x0E; //低字節(jié)計(jì)數(shù)寄存器
- static volatile unsigned char TMR1H @ 0x0F; //高字節(jié)計(jì)數(shù)寄存器
- static volatile unsigned char T1CON @ 0x10; //TMR1控制寄存器
- static volatile unsigned char TMR2 @ 0x11; //定時(shí)/計(jì)數(shù)器TMR2
- static volatile unsigned char T2CON @ 0x12; //TMR2控制寄存器
- static volatile unsigned char SSPBUF @ 0x13; //收/發(fā)數(shù)據(jù)緩沖器
- static volatile unsigned char SSPCON @ 0x14; //同步串口控制寄存器,對(duì)MSSP模塊的功能和指標(biāo)進(jìn)行設(shè)置和定義。
- static volatile unsigned char CCPR1L @ 0x15; //捕獲/比較/PWM寄存器低字節(jié)
- static volatile unsigned char CCPR1H @ 0x16; //捕獲/比較/PWM寄存器低字節(jié)
- static volatile unsigned char CCP1CON @ 0x17; //CCP1CON寄存器
- static volatile unsigned char RCSTA @ 0x18; //USART接收控制兼狀態(tài)寄存器
- static volatile unsigned char TXREG @ 0x19; //USART發(fā)生緩沖器
- static volatile unsigned char RCREG @ 0x1A; //USART接收緩沖器
- static volatile unsigned char CCPR2L @ 0x1B; //捕獲/比較/PWM寄存器低字節(jié)
- static volatile unsigned char CCPR2H @ 0x1C; //捕獲/比較/PWM寄存器低字節(jié)
- static volatile unsigned char CCP2CON @ 0x1D; //CCP2CON寄存器
- static volatile unsigned char ADRESH @ 0x1E; //ADC轉(zhuǎn)換結(jié)果寄存器高字節(jié)
- static volatile unsigned char ADCON0 @ 0x1F; //A/D轉(zhuǎn)換器開關(guān)位。
- /* bank 1 registers */
- static unsigned char bank1 OPTION @ 0x81; //選擇寄存器,用于配置TMR0/WDT預(yù)分頻系數(shù)、外部INT中斷、TMR0和端口B的弱上拉。
- static volatile unsigned char bank1 TRISA @ 0x85; //A口方向寄存器
- static volatile unsigned char bank1 TRISB @ 0x86; //B口方向寄存器
- static volatile unsigned char bank1 TRISC @ 0x87; //C口方向寄存器
- #ifdef __PINS_40
- static volatile unsigned char bank1 TRISD @ 0x88; //D口方向寄存器
- static volatile unsigned char bank1 TRISE @ 0x89; //E口方向寄存器
- #endif
- static volatile unsigned char bank1 PIE1 @ 0x8C; //中斷允許寄存器PIE1
- static volatile unsigned char bank1 PIE2 @ 0x8D; //中斷允許寄存器PIE2
- static volatile unsigned char bank1 PCON @ 0x8E; //電源控制狀態(tài)寄存器
- static volatile unsigned char bank1 SSPCON2 @ 0x91; //MSSP控制寄存器2
- static volatile unsigned char bank1 PR2 @ 0x92; //TMR2周期寄存器
- static volatile unsigned char bank1 SSPADD @ 0x93; //同步串口地址寄存器
- static volatile unsigned char bank1 SSPSTAT @ 0x94; //同步串口狀態(tài)寄存器
- static volatile unsigned char bank1 TXSTA @ 0x98; //USART發(fā)生控制兼狀態(tài)寄存器
- static volatile unsigned char bank1 SPBRG @ 0x99; //USART波特率發(fā)生器初值寄存器
- static volatile unsigned char bank1 CMCON @ 0x9C; //比較控制寄存器
- static volatile unsigned char bank1 CVRCON @ 0x9D; //比較電壓參考控制寄存器
- static volatile unsigned char bank1 ADRESL @ 0x9E; //ADC轉(zhuǎn)換結(jié)果寄存器低字節(jié)
- static volatile unsigned char bank1 ADCON1 @ 0x9F; //ADC控制寄存器ADCON1
- /* bank 2 registers */
- static volatile unsigned char bank2 EEDATA @ 0x10C; //EEPROM數(shù)據(jù)寄存器低字節(jié)
- static volatile unsigned char bank2 EEADR @ 0x10D; //EEPROM地址寄存器低字節(jié)
- // Alternate definition
- volatile unsigned char EEADRL @ 0x10D;
- static volatile unsigned char bank2 EEDATH @ 0x10E; //EEPROM數(shù)據(jù)寄存器高字節(jié)
- static volatile unsigned char bank2 EEADRH @ 0x10F; //EEPROM地址寄存器高字節(jié)
- /* bank 3 registers */
- static volatile unsigned char bank3 EECON1 @ 0x18C; //EEPROM控制寄存器1
- static volatile unsigned char bank3 EECON2 @ 0x18D; //EEPROM控制寄存器2
- //* STATUS bits狀態(tài)寄存器 */
- static volatile bit IRP @ (unsigned)&STATUS*8+7; //寄存器bank選擇位(用于間接尋址)。0:bank0,1;1:bank2,3
- static volatile bit RP1 @ (unsigned)&STATUS*8+6; //寄存器bank選擇位(用于直接尋址)。PR1:PR0:00:BANK0;01:BANK1;10:BANK2;11BANK3.
- static volatile bit RP0 @ (unsigned)&STATUS*8+5; //
- static volatile bit TO @ (unsigned)&STATUS*8+4; //超時(shí)位。0:WDT超時(shí)發(fā)生;1:上電后,執(zhí)行了CLRWDT或者SLEEP指令
- static volatile bit PD @ (unsigned)&STATUS*8+3; //掉電標(biāo)志位。0:執(zhí)行完SLEEP指令;1:上電后或者執(zhí)行CLRWDT指令
- static volatile bit ZERO @ (unsigned)&STATUS*8+2; //零標(biāo)志位。0:算術(shù)或邏輯操作結(jié)果不為0;1:反之。
- static volatile bit DC @ (unsigned)&STATUS*8+1; //數(shù)字進(jìn)位/退位標(biāo)志位。0:結(jié)果的低4位沒有發(fā)生進(jìn)位;1:反之。
- static volatile bit CARRY @ (unsigned)&STATUS*8+0; //進(jìn)位/退位標(biāo)志位。0:結(jié)果的高4位沒有發(fā)生進(jìn)位;1:反之。
- /* PORTA bits */
- static volatile bit RA5 @ (unsigned)&PORTA*8+5; //RA5
- static volatile bit RA4 @ (unsigned)&PORTA*8+4; //RA4
- static volatile bit RA3 @ (unsigned)&PORTA*8+3; //RA3
- static volatile bit RA2 @ (unsigned)&PORTA*8+2; //RA2
- static volatile bit RA1 @ (unsigned)&PORTA*8+1; //RA1
- static volatile bit RA0 @ (unsigned)&PORTA*8+0; //RA0
-
- /* PORTB bits */
- static volatile bit RB7 @ (unsigned)&PORTB*8+7; //RB7
- static volatile bit RB6 @ (unsigned)&PORTB*8+6; //RB6
- static volatile bit RB5 @ (unsigned)&PORTB*8+5; //RB5
- static volatile bit RB4 @ (unsigned)&PORTB*8+4; //RB4
- static volatile bit RB3 @ (unsigned)&PORTB*8+3; //RB3
- static volatile bit RB2 @ (unsigned)&PORTB*8+2; //RB2
- static volatile bit RB1 @ (unsigned)&PORTB*8+1; //RB1
- static volatile bit RB0 @ (unsigned)&PORTB*8+0; //RB0
- /* PORTC bits */
- static volatile bit RC7 @ (unsigned)&PORTC*8+7; //RC7
- static volatile bit RC6 @ (unsigned)&PORTC*8+6; //RC6
- static volatile bit RC5 @ (unsigned)&PORTC*8+5; //RC5
- static volatile bit RC4 @ (unsigned)&PORTC*8+4; //RC4
- static volatile bit RC3 @ (unsigned)&PORTC*8+3; //RC3
- static volatile bit RC2 @ (unsigned)&PORTC*8+2; //RC2
- static volatile bit RC1 @ (unsigned)&PORTC*8+1; //RC1
- static volatile bit RC0 @ (unsigned)&PORTC*8+0; //RC0
- /* PORTD bits */
- #ifdef __PINS_40
- static volatile bit RD7 @ (unsigned)&PORTD*8+7; //RD7
- static volatile bit RD6 @ (unsigned)&PORTD*8+6; //RD6
- static volatile bit RD5 @ (unsigned)&PORTD*8+5; //RD5
- static volatile bit RD4 @ (unsigned)&PORTD*8+4; //RD4
- static volatile bit RD3 @ (unsigned)&PORTD*8+3; //RD3
- static volatile bit RD2 @ (unsigned)&PORTD*8+2; //RD2
- static volatile bit RD1 @ (unsigned)&PORTD*8+1; //RD1
- static volatile bit RD0 @ (unsigned)&PORTD*8+0; //RD0
- /* PORTE bits */
- static volatile bit RE2 @ (unsigned)&PORTE*8+2; //RE2
- static volatile bit RE1 @ (unsigned)&PORTE*8+1; //RE1
- static volatile bit RE0 @ (unsigned)&PORTE*8+0; //RE0
- #endif
- //* INTCON bits 中斷控制寄存器 */
- static volatile bit GIE @ (unsigned)&INTCON*8+7; //總中斷使能位。0:屏蔽所有的中斷請(qǐng)求;1:允許非屏蔽的中斷。
- static volatile bit PEIE @ (unsigned)&INTCON*8+6; //外部中斷使能位。0:禁止;1:使能
- static volatile bit T0IE @ (unsigned)&INTCON*8+5; //TMR0溢出中斷使能位。0:禁止;1:使能
- static volatile bit INTE @ (unsigned)&INTCON*8+4; //RB0/INT外部中斷使能位。0:不使能;1:使能。
- static volatile bit RBIE @ (unsigned)&INTCON*8+3; //RB端口變化中斷時(shí)能位。0:不使能;1:使能。
- static volatile bit T0IF @ (unsigned)&INTCON*8+2; //TMR0溢出中斷標(biāo)志位。0:無溢出;1:溢出。
- static volatile bit INTF @ (unsigned)&INTCON*8+1; //RB0/INT外部中斷標(biāo)志位。0:RB0外部中斷未發(fā)生;1:RB0外部中斷發(fā)生。
- static volatile bit RBIF @ (unsigned)&INTCON*8+0; //RB端口變化中斷標(biāo)志位。0:RB口無變化;1:RB口至少有一個(gè)引腳變化。
- // alternate definitions
- static volatile bit TMR0IE @ (unsigned)&INTCON*8+5; //
- static volatile bit TMR0IF @ (unsigned)&INTCON*8+2; //
- //* PIR1 bits中斷標(biāo)志寄存器PIR1 */
- #ifdef __PINS_40
- static volatile bit PSPIF @ (unsigned)&PIR1*8+7; //并行從端口讀寫中斷標(biāo)志位。0:沒有讀寫操作發(fā)生;1:反之
- #endif
- static volatile bit ADIF @ (unsigned)&PIR1*8+6; //A/D轉(zhuǎn)換器中斷標(biāo)志位。0:A/D轉(zhuǎn)換沒有完成;1:A/D轉(zhuǎn)換完成。
- static volatile bit RCIF @ (unsigned)&PIR1*8+5; //USART接收中斷標(biāo)志位。0:接收緩沖器空;1:反之。
- static volatile bit TXIF @ (unsigned)&PIR1*8+4; //USART發(fā)送中斷標(biāo)志位。0:發(fā)生緩沖器滿;1:反之。
- static volatile bit SSPIF @ (unsigned)&PIR1*8+3; //同步串行端口(ssp)中斷標(biāo)志位。0:沒有ssp中斷條件發(fā)生;
- static volatile bit CCP1IF @ (unsigned)&PIR1*8+2; //CCP1中斷標(biāo)志位。
- static volatile bit TMR2IF @ (unsigned)&PIR1*8+1; //TMR2 TO PR2匹配中斷標(biāo)志位。0:沒有匹配發(fā)生
- static volatile bit TMR1IF @ (unsigned)&PIR1*8+0; //TMR1溢出中斷標(biāo)志位,0:無溢出
- /* PIR2 bits */
- static volatile bit CMIF @ (unsigned)&PIR2*8+6; //比較器中斷標(biāo)志位;0:比較器輸入沒有改變
- static volatile bit EEIF @ (unsigned)&PIR2*8+4; //EEPROM寫操作中斷標(biāo)志位。0:寫操作沒有完成或沒有開始
- static volatile bit BCLIF @ (unsigned)&PIR2*8+3; //總線沖突中斷標(biāo)志位。0:沒有總線沖突發(fā)生
- static volatile bit CCP2IF @ (unsigned)&PIR2*8+0; //CCP2中斷標(biāo)志位
- //* T1CON bits TMR1控制寄存器 */
- static volatile bit T1CKPS1 @ (unsigned)&T1CON*8+5; //TMR1輸入時(shí)鐘預(yù)分頻選擇位
- static volatile bit T1CKPS0 @ (unsigned)&T1CON*8+4; //TMR1輸入時(shí)鐘預(yù)分頻選擇位
- static volatile bit T1OSCEN @ (unsigned)&T1CON*8+3; //TMR1震蕩器使能控制位。0:振蕩器關(guān)閉
- static volatile bit T1SYNC @ (unsigned)&T1CON*8+2; //TMR1外部時(shí)鐘輸入同步控制位。
- static volatile bit TMR1CS @ (unsigned)&T1CON*8+1; //TMR1時(shí)鐘源選擇位。0:內(nèi)部時(shí)鐘的/4
- static volatile bit TMR1ON @ (unsigned)&T1CON*8+0; //TMR1使能位。0:禁止
- //* T2CON bits TMR2控制寄存器 */
- static volatile bit TOUTPS3 @ (unsigned)&T2CON*8+6; //TMR2后分頻選擇位。
- static volatile bit TOUTPS2 @ (unsigned)&T2CON*8+5; //TMR2后分頻選擇位
- static volatile bit TOUTPS1 @ (unsigned)&T2CON*8+4; //TMR2后分頻選擇位
- static volatile bit TOUTPS0 @ (unsigned)&T2CON*8+3; //TMR2后分頻選擇位。
- static volatile bit TMR2ON @ (unsigned)&T2CON*8+2; //TMR2使能位。
- static volatile bit T2CKPS1 @ (unsigned)&T2CON*8+1; //TMR2預(yù)分頻選擇位。
- static volatile bit T2CKPS0 @ (unsigned)&T2CON*8+0; //TMR2預(yù)分頻選擇位
- //* SSPCON bits SPI同步串口控制寄存器*/
- static volatile bit WCOL @ (unsigned)&SSPCON*8+7; //寫操作沖突檢測(cè)位,在SPI從動(dòng)方式下,WCOL=0,未發(fā)生沖突,WCOL=1,發(fā)生沖突。
- static volatile bit SSPOV @ (unsigned)&SSPCON*8+6; //接收溢出標(biāo)志位,SSPOV=0,未發(fā)生接收溢出;SSPOV=1,發(fā)生接受溢出。
- static volatile bit SSPEN @ (unsigned)&SSPCON*8+5; //同步串口MSSP允許位,SSPEN=0,關(guān)閉串口;SSPEN=1,允許串行端口功能。
- static volatile bit CKP @ (unsigned)&SSPCON*8+4; //時(shí)鐘極性選擇位,CKP=0,空閑時(shí)時(shí)鐘停留在低電平;CKP=1,空閑時(shí)時(shí)鐘停留在高電平。
- static volatile bit SSPM3 @ (unsigned)&SSPCON*8+3; //同步串行口MSSP方式選擇位,主動(dòng)參數(shù)。0,1,2,3,4.
- static volatile bit SSPM2 @ (unsigned)&SSPCON*8+2;
- static volatile bit SSPM1 @ (unsigned)&SSPCON*8+1;
- static volatile bit SSPM0 @ (unsigned)&SSPCON*8+0;
- /* CCP1CON bits */
- static volatile bit CCP1X @ (unsigned)&CCP1CON*8+5; //PWM最小信號(hào)位
- static volatile bit CCP1Y @ (unsigned)&CCP1CON*8+4; //PWM最小信號(hào)位
- static volatile bit CCP1M3 @ (unsigned)&CCP1CON*8+3; //CCP1模式選擇位
- static volatile bit CCP1M2 @ (unsigned)&CCP1CON*8+2; //CCP1模式選擇位
- static volatile bit CCP1M1 @ (unsigned)&CCP1CON*8+1; //CCP1模式選擇位
- static volatile bit CCP1M0 @ (unsigned)&CCP1CON*8+0; //CCP1模式選擇位
- //* RCSTA bits USART接收控制兼狀態(tài)寄存器 */
- static volatile bit SPEN @ (unsigned)&RCSTA*8+7; //串行端口使能位。0:禁止;1:使能。
- static volatile bit RX9 @ (unsigned)&RCSTA*8+6; //接收數(shù)據(jù)長度選擇位。0:接收8位數(shù)據(jù);1:接收9位
- static volatile bit SREN @ (unsigned)&RCSTA*8+5; //單字節(jié)使能選擇位。0:禁止;1:使能。異步模式未使用
- static volatile bit CREN @ (unsigned)&RCSTA*8+4; //連續(xù)接收使能選擇位。0:禁止連續(xù)接收使能
- static volatile bit ADDEN @ (unsigned)&RCSTA*8+3; //地址匹配檢測(cè)使能位。0:取消地址匹配檢測(cè)
- static volatile bit FERR @ (unsigned)&RCSTA*8+2; //幀格式錯(cuò)誤標(biāo)志位。0:未發(fā)生錯(cuò)誤
- static volatile bit OERR @ (unsigned)&RCSTA*8+1; //溢出標(biāo)志位。0:未溢出
- static volatile bit RX9D @ (unsigned)&RCSTA*8+0; //接收數(shù)據(jù)的第9位
- /* CCP2CON bits */
- static volatile bit CCP2X @ (unsigned)&CCP2CON*8+5; //PWM最小信號(hào)位
- static volatile bit CCP2Y @ (unsigned)&CCP2CON*8+4; //PWM最小信號(hào)位
- static volatile bit CCP2M3 @ (unsigned)&CCP2CON*8+3; //CCP2模式選擇位
- static volatile bit CCP2M2 @ (unsigned)&CCP2CON*8+2; //CCP2模式選擇位
- static volatile bit CCP2M1 @ (unsigned)&CCP2CON*8+1; //CCP2模式選擇位
- static volatile bit CCP2M0 @ (unsigned)&CCP2CON*8+0; //CCP2模式選擇位
- //* ADCON0 bits A/D控制寄存器位 */
- static volatile bit ADCS1 @ (unsigned)&ADCON0*8+7; //選擇A/D轉(zhuǎn)換時(shí)鐘。00:1/2;01:1/8;10:1/32;11:RC
- static volatile bit ADCS0 @ (unsigned)&ADCON0*8+6; //選擇A/D轉(zhuǎn)換時(shí)鐘
- static volatile bit CHS2 @ (unsigned)&ADCON0*8+5; //AD模擬通道選擇
- static volatile bit CHS1 @ (unsigned)&ADCON0*8+4; //AD模擬通道選擇
- static volatile bit CHS0 @ (unsigned)&ADCON0*8+3; //AD模擬通道選擇。000:選擇信道0.
- static volatile bit ADGO @ (unsigned)&ADCON0*8+2; //A/D轉(zhuǎn)換狀態(tài)位,ADON=1時(shí),0:不在進(jìn)行ad轉(zhuǎn)換;1:正在進(jìn)行轉(zhuǎn)換。
- // Alternate definition for compatibility with other devices
- volatile bit GODONE @ (unsigned)&ADCON0*8+2;
- static volatile bit ADON @ (unsigned)&ADCON0*8+0; //A/D轉(zhuǎn)換器開關(guān)位,0:關(guān)閉;1:啟動(dòng)。
- //* OPTION bits 選擇寄存器 */
- static bank1 bit RBPU @ (unsigned)&OPTION*8+7; //端口B上拉設(shè)置允許位
- static bank1 bit INTEDG @ (unsigned)&OPTION*8+6; //外中斷源選擇位
- static bank1 bit T0CS @ (unsigned)&OPTION*8+5; //時(shí)鐘選擇位。T0CS=0,使用內(nèi)部時(shí)鐘;T0CS=1,使用外部時(shí)鐘。
- static bank1 bit T0SE @ (unsigned)&OPTION*8+4; //計(jì)數(shù)器使用外部時(shí)鐘,T0SE=0,上升沿觸發(fā);T0SE=1,下降沿觸發(fā)。
- static bank1 bit PSA @ (unsigned)&OPTION*8+3; //PSA=0,作為time0的預(yù)分頻器;PSA=1,作為WDT的后分頻器。
- static bank1 bit PS2 @ (unsigned)&OPTION*8+2; //PS2,PS1,PS0。預(yù)分頻比例。000=1:2(Timer0)1:1(WDT)...
- static bank1 bit PS1 @ (unsigned)&OPTION*8+1; //
- static bank1 bit PS0 @ (unsigned)&OPTION*8+0; //
- //* TRISA bits PORTA數(shù)據(jù)方向寄存器 */
- static volatile bank1 bit TRISA5 @ (unsigned)&TRISA*8+5; //
- static volatile bank1 bit TRISA4 @ (unsigned)&TRISA*8+4; //
- static volatile bank1 bit TRISA3 @ (unsigned)&TRISA*8+3; //
- static volatile bank1 bit TRISA2 @ (unsigned)&TRISA*8+2; //
- static volatile bank1 bit TRISA1 @ (unsigned)&TRISA*8+1; //
- static volatile bank1 bit TRISA0 @ (unsigned)&TRISA*8+0; //
- //* TRISB bits PORTB數(shù)據(jù)方向寄存器 */
- static volatile bank1 bit TRISB7 @ (unsigned)&TRISB*8+7; //
- static volatile bank1 bit TRISB6 @ (unsigned)&TRISB*8+6; //
- static volatile bank1 bit TRISB5 @ (unsigned)&TRISB*8+5; //
- static volatile bank1 bit TRISB4 @ (unsigned)&TRISB*8+4; //
- static volatile bank1 bit TRISB3 @ (unsigned)&TRISB*8+3; //
- static volatile bank1 bit TRISB2 @ (unsigned)&TRISB*8+2; //
- static volatile bank1 bit TRISB1 @ (unsigned)&TRISB*8+1; //
- static volatile bank1 bit TRISB0 @ (unsigned)&TRISB*8+0; //
- //* TRISC bits PORTC數(shù)據(jù)方向寄存器 */
- static volatile bank1 bit TRISC7 @ (unsigned)&TRISC*8+7; //
- static volatile bank1 bit TRISC6 @ (unsigned)&TRISC*8+6; //
- static volatile bank1 bit TRISC5 @ (unsigned)&TRISC*8+5; //
- static volatile bank1 bit TRISC4 @ (unsigned)&TRISC*8+4; //
- static volatile bank1 bit TRISC3 @ (unsigned)&TRISC*8+3; //
- static volatile bank1 bit TRISC2 @ (unsigned)&TRISC*8+2; //
- static volatile bank1 bit TRISC1 @ (unsigned)&TRISC*8+1; //
- static volatile bank1 bit TRISC0 @ (unsigned)&TRISC*8+0; //
- #ifdef __PINS_40
- //* TRISD bits PORTD數(shù)據(jù)方向寄存器 */
- static volatile bank1 bit TRISD7 @ (unsigned)&TRISD*8+7; //
- static volatile bank1 bit TRISD6 @ (unsigned)&TRISD*8+6; //
- static volatile bank1 bit TRISD5 @ (unsigned)&TRISD*8+5; //
- static volatile bank1 bit TRISD4 @ (unsigned)&TRISD*8+4; //
- static volatile bank1 bit TRISD3 @ (unsigned)&TRISD*8+3; //
- static volatile bank1 bit TRISD2 @ (unsigned)&TRISD*8+2; //
- static volatile bank1 bit TRISD1 @ (unsigned)&TRISD*8+1; //
- static volatile bank1 bit TRISD0 @ (unsigned)&TRISD*8+0; //
- //* TRISE bits PORTE數(shù)據(jù)方向寄存器 */
- static volatile bank1 bit IBF @ (unsigned)&TRISE*8+7; //
- static volatile bank1 bit OBF @ (unsigned)&TRISE*8+6; //
- static volatile bank1 bit IBOV @ (unsigned)&TRISE*8+5; //
- static volatile bank1 bit PSPMODE @ (unsigned)&TRISE*8+4; //
- static volatile bank1 bit TRISE2 @ (unsigned)&TRISE*8+2; //
- static volatile bank1 bit TRISE1 @ (unsigned)&TRISE*8+1; //
- static volatile bank1 bit TRISE0 @ (unsigned)&TRISE*8+0; //
- #endif
- //* PIE1 bits 外圍中斷獨(dú)立使能位 */
- #ifdef __PINS_40
- static volatile bank1 bit PSPIE @ (unsigned)&PIE1*8+7; //并行從端口讀寫中斷使能位。0:禁止psp讀寫中斷
- #endif
- static volatile bank1 bit ADIE @ (unsigned)&PIE1*8+6; //A/D轉(zhuǎn)換器中斷使能位。0:A/D轉(zhuǎn)換沒有完成;1:A/D轉(zhuǎn)換完成。
- static volatile bank1 bit RCIE @ (unsigned)&PIE1*8+5; //USART接收中斷使能位。0:接收緩沖器空;1:反之。
- static volatile bank1 bit TXIE @ (unsigned)&PIE1*8+4; ////USART發(fā)送中斷使能位。0:發(fā)生緩沖器滿;1:反之。
- static volatile bank1 bit SSPIE @ (unsigned)&PIE1*8+3; //同步串行端口中斷使能位
- static volatile bank1 bit CCP1IE @ (unsigned)&PIE1*8+2; //CCP1中斷使能位
- static volatile bank1 bit TMR2IE @ (unsigned)&PIE1*8+1; //TMR2 TO PR2匹配中斷使能位。0:沒有匹配發(fā)生
- static volatile bank1 bit TMR1IE @ (unsigned)&PIE1*8+0; //TMR1溢出中斷使能位,0:無溢出
- /* PIE2 bits */
- static volatile bank1 bit CMIE @ (unsigned)&PIE2*8+6; //比較器中斷使能位
- static volatile bank1 bit EEIE @ (unsigned)&PIE2*8+4; //EEPROM寫操作中斷使能位
- static volatile bank1 bit BCLIE @ (unsigned)&PIE2*8+3; //總線沖突中斷使能位
- static volatile bank1 bit CCP2IE @ (unsigned)&PIE2*8+0; //CCP2中斷使能位
- //* PCON bits 電源控制寄存器 */
- static volatile bank1 bit POR @ (unsigned)&PCON*8+1; //上電復(fù)位狀態(tài)位
- static volatile bank1 bit BOR @ (unsigned)&PCON*8+0; //掉電復(fù)位狀態(tài)位
- //* SSPCON2 bits MSSP控制寄存器2*/
- static volatile bank1 bit GCEN @ (unsigned)&SSPCON2*8+7; //總調(diào)用使能位
- static volatile bank1 bit ACKSTAT @ (unsigned)&SSPCON2*8+6; //應(yīng)答狀態(tài)位
- static volatile bank1 bit ACKDT @ (unsigned)&SSPCON2*8+5; //應(yīng)答數(shù)據(jù)位
- static volatile bank1 bit ACKEN @ (unsigned)&SSPCON2*8+4; //應(yīng)答順序使能位
- static volatile bank1 bit RCEN @ (unsigned)&SSPCON2*8+3; //接收使能位
- static volatile bank1 bit PEN @ (unsigned)&SSPCON2*8+2; //停止條件使能位
- static volatile bank1 bit RSEN @ (unsigned)&SSPCON2*8+1; //重復(fù)開始條件使能位
- static volatile bank1 bit SEN @ (unsigned)&SSPCON2*8+0; //開始條件使能位
- //* SSPSTAT bits SPI同步串口狀態(tài)寄存器 */
- static volatile bank1 bit STAT_SMP @ (unsigned)&SSPSTAT*8+7; //SPI采樣控制位。SPI主控方式,STAT_SMP=0,在輸出的數(shù)據(jù)中間采樣輸入數(shù)據(jù),為1時(shí),在末端采樣;SPI從動(dòng)方式,STAT_SMP必須置位。
- static volatile bank1 bit STAT_CKE @ (unsigned)&SSPSTAT*8+6; //SPI時(shí)鐘沿選擇,CKP=0時(shí),STAT_CKE=0,SCK下降沿發(fā)送數(shù)據(jù),STAT_CKE=1,SCK上升沿發(fā)送數(shù)據(jù)。CKP=1時(shí),反之。
- static volatile bank1 bit STAT_DA @ (unsigned)&SSPSTAT*8+5; //數(shù)據(jù)/地址位
- static volatile bank1 bit STAT_P @ (unsigned)&SSPSTAT*8+4; //停止位
- static volatile bank1 bit STAT_S @ (unsigned)&SSPSTAT*8+3; //開始位
- static volatile bank1 bit STAT_RW @ (unsigned)&SSPSTAT*8+2; //讀寫位信息
- static volatile bank1 bit STAT_UA @ (unsigned)&SSPSTAT*8+1; //更新地址位
- static volatile bank1 bit STAT_BF @ (unsigned)&SSPSTAT*8+0; //緩沖器滿標(biāo)志位。STAT_BF=0,緩沖器空;STAT_BF=1,緩沖器滿。
- #ifdef __STAT_BACKWARD_COMPATIBILITY
- #define STAT_SMP SMP
- #define STAT_CKE CKE
- #define STAT_DA DA
- #define STAT_P STOP
- #define STAT_S START
- #define STAT_RW RW
- #define STAT_UA UA
- #define STAT_BF BF
- #endif
- //* TXSTA bits USART發(fā)送控制兼狀態(tài)寄存器*/
- static volatile bank1 bit CSRC @ (unsigned)&TXSTA*8+7; //同步時(shí)鐘選擇位。0:選外部時(shí)鐘;1:選內(nèi)部時(shí)鐘。異步模式未用。
- static volatile bank1 bit TX9 @ (unsigned)&TXSTA*8+6; //發(fā)生長度選擇位。0:發(fā)送8位數(shù)據(jù);1:發(fā)送9位
- static volatile bank1 bit TXEN @ (unsigned)&TXSTA*8+5; //發(fā)生使能選擇位。0:禁止發(fā)送;1:使能發(fā)生
- static volatile bank1 bit SYNC @ (unsigned)&TXSTA*8+4; //同步/異步模式選擇位。0:異步;1:同步
- static volatile bank1 bit BRGH @ (unsigned)&TXSTA*8+2; //高速波特率選擇位。0:低速;1:高速。
- static volatile bank1 bit TRMT @ (unsigned)&TXSTA*8+1; //移位寄存器空標(biāo)志位。0,發(fā)生移位寄存器滿,1,為空。
- static volatile bank1 bit TX9D @ (unsigned)&TXSTA*8+0; //發(fā)生第9位的選擇位,0,不發(fā)生,1,發(fā)送。
- //* CMCON Bits 比較器控制寄存器 */
- static volatile bank1 bit C2OUT @ (unsigned)&CMCON*8+7; //比較器2輸出位
- static volatile bank1 bit C1OUT @ (unsigned)&CMCON*8+6; //比較器1輸出位
- static volatile bank1 bit C2INV @ (unsigned)&CMCON*8+5; //比較器2輸出反向位
- static volatile bank1 bit C1INV @ (unsigned)&CMCON*8+4; //比較器1輸出反向位
- static volatile bank1 bit CIS @ (unsigned)&CMCON*8+3; //比較器輸入開關(guān)位
- static volatile bank1 bit CM2 @ (unsigned)&CMCON*8+2; //比較器模式位
- static volatile bank1 bit CM1 @ (unsigned)&CMCON*8+1; //比較器模式位
- static volatile bank1 bit CM0 @ (unsigned)&CMCON*8+0; //比較器模式位
- //* CVRCON Bits 比較電壓參考寄存器 */
- static volatile bank1 bit CVREN @ (unsigned)&CVRCON*8+7; //比較器電壓參考使能位
- static volatile bank1 bit CVROE @ (unsigned)&CVRCON*8+6; //比較器Vref輸出使能位
- static volatile bank1 bit CVRR @ (unsigned)&CVRCON*8+5; //比較器Vref范圍選擇位
- static volatile bank1 bit CVR3 @ (unsigned)&CVRCON*8+3; //比較器Vref值選擇位
- static volatile bank1 bit CVR2 @ (unsigned)&CVRCON*8+2; //比較器Vref值選擇位
- static volatile bank1 bit CVR1 @ (unsigned)&CVRCON*8+1; //比較器Vref值選擇位
- static volatile bank1 bit CVR0 @ (unsigned)&CVRCON*8+0; //比較器Vref值選擇位
- //* ADCON1 bits ADC控制寄存器ADCON1*/
- static volatile bank1 bit ADFM @ (unsigned)&ADCON1*8+7; //AD轉(zhuǎn)換結(jié)果格式選擇位
- static volatile bank1 bit ADCS2 @ (unsigned)&ADCON1*8+6; //AD轉(zhuǎn)換時(shí)鐘選擇位
- static volatile bank1 bit PCFG3 @ (unsigned)&ADCON1*8+3; //PCFG3-PCFG0AD轉(zhuǎn)換引腳功能選擇位。詳細(xì)意義見手冊(cè)PAGE-130.
- static volatile bank1 bit PCFG2 @ (unsigned)&ADCON1*8+2;
- static volatile bank1 bit PCFG1 @ (unsigned)&ADCON1*8+1;
- static volatile bank1 bit PCFG0 @ (unsigned)&ADCON1*8+0;
- //* EECON1 bits EEPROM控制寄存器*/
- static volatile bank3 bit EEPGD @ (unsigned)&EECON1*8+7; //程序/數(shù)據(jù)EEPROM選擇位。0:選擇訪問數(shù)據(jù)存儲(chǔ)器
- static volatile bank3 bit WRERR @ (unsigned)&EECON1*8+3; //EEPROM錯(cuò)誤標(biāo)志位。0:寫操作完成
- static volatile bank3 bit WREN @ (unsigned)&EECON1*8+2; //EEPROM寫使能位。1:允許
- static volatile bank3 bit WR @ (unsigned)&EECON1*8+1; //寫控制位
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (57.77 KB, 下載次數(shù): 251)
下載附件
2017-5-13 19:27 上傳
29個(gè)常用模塊的例程列表:
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, 下載次數(shù): 245)
2017-5-13 09:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|