PIC16F877 pic.h
Contenuto di pic.h per il PIC16F877// Config Register: CONFIG#define CONFIG 0x2007// Oscillator Selection bits// RC oscillator#define FOSC_EXTRC 0xFFFF// HS oscillator#define FOSC_HS 0xFFFE// XT oscillator#define FOSC_XT 0xFFFD// LP oscillator#define FOSC_LP 0xFFFC// Watchdog Timer Enable bit// WDT enabled#define WDTE_ON 0xFFFF// WDT disabled
#define WDTE_OFF 0xFFFB
// Power-up Timer Enable bit
// PWRT disabled
#define PWRTE_OFF 0xFFFF
// PWRT enabled
#define PWRTE_ON 0xFFF7
// Brown-out Reset Enable bit
// BOR enabled
#define BOREN_ON 0xFFFF
// BOR disabled
#define BOREN_OFF 0xFFBF
// Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
// RB3/PGM pin has PGM function; low-voltage programming enabled
#define LVP_ON 0xFFFF
// RB3 is digital I/O, HV on MCLR must be used for programming
#define LVP_OFF 0xFF7F
// Data EEPROM Memory Code Protection bit
// Data EEPROM code protection off
#define CPD_OFF 0xFFFF
// Data EEPROM code-protected
#define CPD_ON 0xFEFF
// Flash Program Memory Write Enable bits
// Write protection off; all program memory may be written to by EECON control
#define WRT_OFF 0xFFFF
// 0000h to 00FFh write-protected; 0100h to 1FFFh may be written to by EECON control
#define WRT_256 0xFDFF
// 0000h to 07FFh write-protected; 0800h to 1FFFh may be written to by EECON control
#define WRT_1FOURTH 0xFBFF
// 0000h to 0FFFh write-protected; 1000h to 1FFFh may be written to by EECON control
#define WRT_HALF 0xF9FF
// In-Circuit Debugger Mode bit
// In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
#define DEBUG_OFF 0xFFFF
// In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger
#define DEBUG_ON 0xF7FF
// Flash Program Memory Code Protection bit
// Code protection off
#define CP_OFF 0xFFFF
// All program memory code-protected
#define CP_ON 0xDFFF
//
// Special function register definitions
//
// Register: INDF
volatile unsigned char INDF @ 0x000;
// bit and bitfield definitions
// Register: TMR0
volatile unsigned char TMR0 @ 0x001;
// bit and bitfield definitions
// Register: PCL
volatile unsigned char PCL @ 0x002;
// bit and bitfield definitions
// Register: STATUS
volatile unsigned char STATUS @ 0x003;
// bit and bitfield definitions
volatile bit CARRY @ ((unsigned)&STATUS*8)+0;
volatile bit DC @ ((unsigned)&STATUS*8)+1;
volatile bit ZERO @ ((unsigned)&STATUS*8)+2;
volatile bit nPD @ ((unsigned)&STATUS*8)+3;
volatile bit nTO @ ((unsigned)&STATUS*8)+4;
volatile bit IRP @ ((unsigned)&STATUS*8)+7;
volatile bit RP0 @ ((unsigned)&STATUS*8)+5;
volatile bit RP1 @ ((unsigned)&STATUS*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned C : 1;
unsigned DC : 1;
unsigned Z : 1;
unsigned nPD : 1;
unsigned nTO : 1;
unsigned RP : 2;
unsigned IRP : 1;
};
struct {
unsigned : 5;
unsigned RP0 : 1;
unsigned RP1 : 1;
};
} STATUSbits @ 0x003;
#endif
// Register: FSR
volatile unsigned char FSR @ 0x004;
// bit and bitfield definitions
// Register: PORTA
volatile unsigned char PORTA @ 0x005;
// bit and bitfield definitions
volatile bit RA0 @ ((unsigned)&PORTA*8)+0;
volatile bit RA1 @ ((unsigned)&PORTA*8)+1;
volatile bit RA2 @ ((unsigned)&PORTA*8)+2;
volatile bit RA3 @ ((unsigned)&PORTA*8)+3;
volatile bit RA4 @ ((unsigned)&PORTA*8)+4;
volatile bit RA5 @ ((unsigned)&PORTA*8)+5;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RA0 : 1;
unsigned RA1 : 1;
unsigned RA2 : 1;
unsigned RA3 : 1;
unsigned RA4 : 1;
unsigned RA5 : 1;
};
} PORTAbits @ 0x005;
#endif
// Register: PORTB
volatile unsigned char PORTB @ 0x006;
// bit and bitfield definitions
volatile bit RB0 @ ((unsigned)&PORTB*8)+0;
volatile bit RB1 @ ((unsigned)&PORTB*8)+1;
volatile bit RB2 @ ((unsigned)&PORTB*8)+2;
volatile bit RB3 @ ((unsigned)&PORTB*8)+3;
volatile bit RB4 @ ((unsigned)&PORTB*8)+4;
volatile bit RB5 @ ((unsigned)&PORTB*8)+5;
volatile bit RB6 @ ((unsigned)&PORTB*8)+6;
volatile bit RB7 @ ((unsigned)&PORTB*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RB0 : 1;
unsigned RB1 : 1;
unsigned RB2 : 1;
unsigned RB3 : 1;
unsigned RB4 : 1;
unsigned RB5 : 1;
unsigned RB6 : 1;
unsigned RB7 : 1;
};
} PORTBbits @ 0x006;
#endif
// Register: PORTC
volatile unsigned char PORTC @ 0x007;
// bit and bitfield definitions
volatile bit RC0 @ ((unsigned)&PORTC*8)+0;
volatile bit RC1 @ ((unsigned)&PORTC*8)+1;
volatile bit RC2 @ ((unsigned)&PORTC*8)+2;
volatile bit RC3 @ ((unsigned)&PORTC*8)+3;
volatile bit RC4 @ ((unsigned)&PORTC*8)+4;
volatile bit RC5 @ ((unsigned)&PORTC*8)+5;
volatile bit RC6 @ ((unsigned)&PORTC*8)+6;
volatile bit RC7 @ ((unsigned)&PORTC*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RC0 : 1;
unsigned RC1 : 1;
unsigned RC2 : 1;
unsigned RC3 : 1;
unsigned RC4 : 1;
unsigned RC5 : 1;
unsigned RC6 : 1;
unsigned RC7 : 1;
};
} PORTCbits @ 0x007;
#endif
// Register: PORTD
volatile unsigned char PORTD @ 0x008;
// bit and bitfield definitions
volatile bit RD0 @ ((unsigned)&PORTD*8)+0;
volatile bit RD1 @ ((unsigned)&PORTD*8)+1;
volatile bit RD2 @ ((unsigned)&PORTD*8)+2;
volatile bit RD3 @ ((unsigned)&PORTD*8)+3;
volatile bit RD4 @ ((unsigned)&PORTD*8)+4;
volatile bit RD5 @ ((unsigned)&PORTD*8)+5;
volatile bit RD6 @ ((unsigned)&PORTD*8)+6;
volatile bit RD7 @ ((unsigned)&PORTD*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RD0 : 1;
unsigned RD1 : 1;
unsigned RD2 : 1;
unsigned RD3 : 1;
unsigned RD4 : 1;
unsigned RD5 : 1;
unsigned RD6 : 1;
unsigned RD7 : 1;
};
} PORTDbits @ 0x008;
#endif
// Register: PORTE
volatile unsigned char PORTE @ 0x009;
// bit and bitfield definitions
volatile bit RE0 @ ((unsigned)&PORTE*8)+0;
volatile bit RE1 @ ((unsigned)&PORTE*8)+1;
volatile bit RE2 @ ((unsigned)&PORTE*8)+2;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RE0 : 1;
unsigned RE1 : 1;
unsigned RE2 : 1;
};
} PORTEbits @ 0x009;
#endif
// Register: PCLATH
volatile unsigned char PCLATH @ 0x00A;
// bit and bitfield definitions
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned PCLATH : 5;
};
} PCLATHbits @ 0x00A;
#endif
// Register: INTCON
volatile unsigned char INTCON @ 0x00B;
// bit and bitfield definitions
volatile bit RBIF @ ((unsigned)&INTCON*8)+0;
volatile bit INTF @ ((unsigned)&INTCON*8)+1;
volatile bit TMR0IF @ ((unsigned)&INTCON*8)+2;
volatile bit RBIE @ ((unsigned)&INTCON*8)+3;
volatile bit INTE @ ((unsigned)&INTCON*8)+4;
volatile bit TMR0IE @ ((unsigned)&INTCON*8)+5;
volatile bit PEIE @ ((unsigned)&INTCON*8)+6;
volatile bit GIE @ ((unsigned)&INTCON*8)+7;
volatile bit T0IF @ ((unsigned)&INTCON*8)+2;
volatile bit T0IE @ ((unsigned)&INTCON*8)+5;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RBIF : 1;
unsigned INTF : 1;
unsigned TMR0IF : 1;
unsigned RBIE : 1;
unsigned INTE : 1;
unsigned TMR0IE : 1;
unsigned PEIE : 1;
unsigned GIE : 1;
};
struct {
unsigned : 2;
unsigned T0IF : 1;
unsigned : 2;
unsigned T0IE : 1;
};
} INTCONbits @ 0x00B;
#endif
// Register: PIR1
volatile unsigned char PIR1 @ 0x00C;
// bit and bitfield definitions
volatile bit TMR1IF @ ((unsigned)&PIR1*8)+0;
volatile bit TMR2IF @ ((unsigned)&PIR1*8)+1;
volatile bit CCP1IF @ ((unsigned)&PIR1*8)+2;
volatile bit SSPIF @ ((unsigned)&PIR1*8)+3;
volatile bit TXIF @ ((unsigned)&PIR1*8)+4;
volatile bit RCIF @ ((unsigned)&PIR1*8)+5;
volatile bit ADIF @ ((unsigned)&PIR1*8)+6;
volatile bit PSPIF @ ((unsigned)&PIR1*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TMR1IF : 1;
unsigned TMR2IF : 1;
unsigned CCP1IF : 1;
unsigned SSPIF : 1;
unsigned TXIF : 1;
unsigned RCIF : 1;
unsigned ADIF : 1;
unsigned PSPIF : 1;
};
struct {
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 2;
unsigned : 1;
unsigned : 1;
};
} PIR1bits @ 0x00C;
#endif
// Register: PIR2
volatile unsigned char PIR2 @ 0x00D;
// bit and bitfield definitions
volatile bit CCP2IF @ ((unsigned)&PIR2*8)+0;
volatile bit BCLIF @ ((unsigned)&PIR2*8)+3;
volatile bit EEIF @ ((unsigned)&PIR2*8)+4;
volatile bit CMIF @ ((unsigned)&PIR2*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CCP2IF : 1;
unsigned : 2;
unsigned BCLIF : 1;
unsigned EEIF : 1;
unsigned : 1;
unsigned CMIF : 1;
};
} PIR2bits @ 0x00D;
#endif
// bit and bitfield definitions
// Register: TMR1L
volatile unsigned char TMR1L @ 0x00E;
// bit and bitfield definitions
// Register: TMR1H
volatile unsigned char TMR1H @ 0x00F;
// bit and bitfield definitions
// Register: TMR1
volatile unsigned int TMR1 @ 0x00E;
// Register: T1CON
volatile unsigned char T1CON @ 0x010;
// bit and bitfield definitions
volatile bit TMR1ON @ ((unsigned)&T1CON*8)+0;
volatile bit TMR1CS @ ((unsigned)&T1CON*8)+1;
volatile bit nT1SYNC @ ((unsigned)&T1CON*8)+2;
volatile bit T1OSCEN @ ((unsigned)&T1CON*8)+3;
volatile bit T1SYNC @ ((unsigned)&T1CON*8)+2;
volatile bit T1CKPS0 @ ((unsigned)&T1CON*8)+4;
volatile bit T1CKPS1 @ ((unsigned)&T1CON*8)+5;
volatile bit T1INSYNC @ ((unsigned)&T1CON*8)+2;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TMR1ON : 1;
unsigned TMR1CS : 1;
unsigned nT1SYNC : 1;
unsigned T1OSCEN : 1;
unsigned T1CKPS : 2;
};
struct {
unsigned : 2;
unsigned T1SYNC : 1;
unsigned : 1;
unsigned T1CKPS0 : 1;
unsigned T1CKPS1 : 1;
};
struct {
unsigned : 2;
unsigned T1INSYNC : 1;
};
} T1CONbits @ 0x010;
#endif
// Register: TMR2
volatile unsigned char TMR2 @ 0x011;
// bit and bitfield definitions
// Register: T2CON
volatile unsigned char T2CON @ 0x012;
// bit and bitfield definitions
volatile bit TMR2ON @ ((unsigned)&T2CON*8)+2;
volatile bit T2CKPS0 @ ((unsigned)&T2CON*8)+0;
volatile bit T2CKPS1 @ ((unsigned)&T2CON*8)+1;
volatile bit TOUTPS0 @ ((unsigned)&T2CON*8)+3;
volatile bit TOUTPS1 @ ((unsigned)&T2CON*8)+4;
volatile bit TOUTPS2 @ ((unsigned)&T2CON*8)+5;
volatile bit TOUTPS3 @ ((unsigned)&T2CON*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned T2CKPS : 2;
unsigned TMR2ON : 1;
unsigned TOUTPS : 4;
};
struct {
unsigned T2CKPS0 : 1;
unsigned T2CKPS1 : 1;
unsigned : 1;
unsigned TOUTPS0 : 1;
unsigned TOUTPS1 : 1;
unsigned TOUTPS2 : 1;
unsigned TOUTPS3 : 1;
};
} T2CONbits @ 0x012;
#endif
// Register: SSPBUF
volatile unsigned char SSPBUF @ 0x013;
// bit and bitfield definitions
// Register: SSPCON
volatile unsigned char SSPCON @ 0x014;
// bit and bitfield definitions
volatile bit CKP @ ((unsigned)&SSPCON*8)+4;
volatile bit SSPEN @ ((unsigned)&SSPCON*8)+5;
volatile bit SSPOV @ ((unsigned)&SSPCON*8)+6;
volatile bit WCOL @ ((unsigned)&SSPCON*8)+7;
volatile bit SSPM0 @ ((unsigned)&SSPCON*8)+0;
volatile bit SSPM1 @ ((unsigned)&SSPCON*8)+1;
volatile bit SSPM2 @ ((unsigned)&SSPCON*8)+2;
volatile bit SSPM3 @ ((unsigned)&SSPCON*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned SSPM : 4;
unsigned CKP : 1;
unsigned SSPEN : 1;
unsigned SSPOV : 1;
unsigned WCOL : 1;
};
struct {
unsigned SSPM0 : 1;
unsigned SSPM1 : 1;
unsigned SSPM2 : 1;
unsigned SSPM3 : 1;
};
} SSPCONbits @ 0x014;
#endif
// bit and bitfield definitions
// Register: CCPR1L
volatile unsigned char CCPR1L @ 0x015;
// bit and bitfield definitions
// Register: CCPR1H
volatile unsigned char CCPR1H @ 0x016;
// bit and bitfield definitions
// Register: CCPR1
volatile unsigned int CCPR1 @ 0x015;
// Register: CCP1CON
volatile unsigned char CCP1CON @ 0x017;
// bit and bitfield definitions
volatile bit CCP1Y @ ((unsigned)&CCP1CON*8)+4;
volatile bit CCP1X @ ((unsigned)&CCP1CON*8)+5;
volatile bit CCP1M0 @ ((unsigned)&CCP1CON*8)+0;
volatile bit CCP1M1 @ ((unsigned)&CCP1CON*8)+1;
volatile bit CCP1M2 @ ((unsigned)&CCP1CON*8)+2;
volatile bit CCP1M3 @ ((unsigned)&CCP1CON*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CCP1M : 4;
unsigned CCP1Y : 1;
unsigned CCP1X : 1;
};
struct {
unsigned CCP1M0 : 1;
unsigned CCP1M1 : 1;
unsigned CCP1M2 : 1;
unsigned CCP1M3 : 1;
};
} CCP1CONbits @ 0x017;
#endif
// Register: RCSTA
volatile unsigned char RCSTA @ 0x018;
// bit and bitfield definitions
volatile bit RX9D @ ((unsigned)&RCSTA*8)+0;
volatile bit OERR @ ((unsigned)&RCSTA*8)+1;
volatile bit FERR @ ((unsigned)&RCSTA*8)+2;
volatile bit ADDEN @ ((unsigned)&RCSTA*8)+3;
volatile bit CREN @ ((unsigned)&RCSTA*8)+4;
volatile bit SREN @ ((unsigned)&RCSTA*8)+5;
volatile bit RX9 @ ((unsigned)&RCSTA*8)+6;
volatile bit SPEN @ ((unsigned)&RCSTA*8)+7;
volatile bit RCD8 @ ((unsigned)&RCSTA*8)+0;
volatile bit RC9 @ ((unsigned)&RCSTA*8)+6;
volatile bit nRC8 @ ((unsigned)&RCSTA*8)+6;
volatile bit RC8_9 @ ((unsigned)&RCSTA*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RX9D : 1;
unsigned OERR : 1;
unsigned FERR : 1;
unsigned ADDEN : 1;
unsigned CREN : 1;
unsigned SREN : 1;
unsigned RX9 : 1;
unsigned SPEN : 1;
};
struct {
unsigned RCD8 : 1;
unsigned : 5;
unsigned RC9 : 1;
};
struct {
unsigned : 6;
unsigned nRC8 : 1;
};
struct {
unsigned : 6;
unsigned RC8_9 : 1;
};
} RCSTAbits @ 0x018;
#endif
// Register: TXREG
volatile unsigned char TXREG @ 0x019;
// bit and bitfield definitions
// Register: RCREG
volatile unsigned char RCREG @ 0x01A;
// bit and bitfield definitions
// bit and bitfield definitions
// Register: CCPR2L
volatile unsigned char CCPR2L @ 0x01B;
// bit and bitfield definitions
// Register: CCPR2H
volatile unsigned char CCPR2H @ 0x01C;
// bit and bitfield definitions
// Register: CCPR2
volatile unsigned int CCPR2 @ 0x01B;
// Register: CCP2CON
volatile unsigned char CCP2CON @ 0x01D;
// bit and bitfield definitions
volatile bit CCP2Y @ ((unsigned)&CCP2CON*8)+4;
volatile bit CCP2X @ ((unsigned)&CCP2CON*8)+5;
volatile bit CCP2M0 @ ((unsigned)&CCP2CON*8)+0;
volatile bit CCP2M1 @ ((unsigned)&CCP2CON*8)+1;
volatile bit CCP2M2 @ ((unsigned)&CCP2CON*8)+2;
volatile bit CCP2M3 @ ((unsigned)&CCP2CON*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CCP2M : 4;
unsigned CCP2Y : 1;
unsigned CCP2X : 1;
};
struct {
unsigned CCP2M0 : 1;
unsigned CCP2M1 : 1;
unsigned CCP2M2 : 1;
unsigned CCP2M3 : 1;
};
} CCP2CONbits @ 0x01D;
#endif
// Register: ADRESH
volatile unsigned char ADRESH @ 0x01E;
// bit and bitfield definitions
// Register: ADCON0
volatile unsigned char ADCON0 @ 0x01F;
// bit and bitfield definitions
volatile bit ADON @ ((unsigned)&ADCON0*8)+0;
volatile bit GO_nDONE @ ((unsigned)&ADCON0*8)+2;
volatile bit GO @ ((unsigned)&ADCON0*8)+2;
volatile bit CHS0 @ ((unsigned)&ADCON0*8)+3;
volatile bit CHS1 @ ((unsigned)&ADCON0*8)+4;
volatile bit CHS2 @ ((unsigned)&ADCON0*8)+5;
volatile bit ADCS0 @ ((unsigned)&ADCON0*8)+6;
volatile bit ADCS1 @ ((unsigned)&ADCON0*8)+7;
volatile bit nDONE @ ((unsigned)&ADCON0*8)+2;
volatile bit GO_DONE @ ((unsigned)&ADCON0*8)+2;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned ADON : 1;
unsigned : 1;
unsigned GO_nDONE : 1;
unsigned CHS : 3;
unsigned ADCS : 2;
};
struct {
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 3;
unsigned : 2;
};
struct {
unsigned : 2;
unsigned GO : 1;
unsigned CHS0 : 1;
unsigned CHS1 : 1;
unsigned CHS2 : 1;
unsigned ADCS0 : 1;
unsigned ADCS1 : 1;
};
struct {
unsigned : 2;
unsigned nDONE : 1;
};
struct {
unsigned : 2;
unsigned GO_DONE : 1;
};
} ADCON0bits @ 0x01F;
#endif
//
// Special function register definitions: Bank 1
//
// Register: OPTION_REG
volatile unsigned char OPTION_REG @ 0x081;
// bit and bitfield definitions
volatile bit PSA @ ((unsigned)&OPTION_REG*8)+3;
volatile bit T0SE @ ((unsigned)&OPTION_REG*8)+4;
volatile bit T0CS @ ((unsigned)&OPTION_REG*8)+5;
volatile bit INTEDG @ ((unsigned)&OPTION_REG*8)+6;
volatile bit nRBPU @ ((unsigned)&OPTION_REG*8)+7;
volatile bit PS0 @ ((unsigned)&OPTION_REG*8)+0;
volatile bit PS1 @ ((unsigned)&OPTION_REG*8)+1;
volatile bit PS2 @ ((unsigned)&OPTION_REG*8)+2;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned PS : 3;
unsigned PSA : 1;
unsigned T0SE : 1;
unsigned T0CS : 1;
unsigned INTEDG : 1;
unsigned nRBPU : 1;
};
struct {
unsigned PS0 : 1;
unsigned PS1 : 1;
unsigned PS2 : 1;
};
} OPTION_REGbits @ 0x081;
#endif
// Register: TRISA
volatile unsigned char TRISA @ 0x085;
// bit and bitfield definitions
volatile bit TRISA0 @ ((unsigned)&TRISA*8)+0;
volatile bit TRISA1 @ ((unsigned)&TRISA*8)+1;
volatile bit TRISA2 @ ((unsigned)&TRISA*8)+2;
volatile bit TRISA3 @ ((unsigned)&TRISA*8)+3;
volatile bit TRISA4 @ ((unsigned)&TRISA*8)+4;
volatile bit TRISA5 @ ((unsigned)&TRISA*8)+5;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISA0 : 1;
unsigned TRISA1 : 1;
unsigned TRISA2 : 1;
unsigned TRISA3 : 1;
unsigned TRISA4 : 1;
unsigned TRISA5 : 1;
};
} TRISAbits @ 0x085;
#endif
// Register: TRISB
volatile unsigned char TRISB @ 0x086;
// bit and bitfield definitions
volatile bit TRISB0 @ ((unsigned)&TRISB*8)+0;
volatile bit TRISB1 @ ((unsigned)&TRISB*8)+1;
volatile bit TRISB2 @ ((unsigned)&TRISB*8)+2;
volatile bit TRISB3 @ ((unsigned)&TRISB*8)+3;
volatile bit TRISB4 @ ((unsigned)&TRISB*8)+4;
volatile bit TRISB5 @ ((unsigned)&TRISB*8)+5;
volatile bit TRISB6 @ ((unsigned)&TRISB*8)+6;
volatile bit TRISB7 @ ((unsigned)&TRISB*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISB0 : 1;
unsigned TRISB1 : 1;
unsigned TRISB2 : 1;
unsigned TRISB3 : 1;
unsigned TRISB4 : 1;
unsigned TRISB5 : 1;
unsigned TRISB6 : 1;
unsigned TRISB7 : 1;
};
} TRISBbits @ 0x086;
#endif
// Register: TRISC
volatile unsigned char TRISC @ 0x087;
// bit and bitfield definitions
volatile bit TRISC0 @ ((unsigned)&TRISC*8)+0;
volatile bit TRISC1 @ ((unsigned)&TRISC*8)+1;
volatile bit TRISC2 @ ((unsigned)&TRISC*8)+2;
volatile bit TRISC3 @ ((unsigned)&TRISC*8)+3;
volatile bit TRISC4 @ ((unsigned)&TRISC*8)+4;
volatile bit TRISC5 @ ((unsigned)&TRISC*8)+5;
volatile bit TRISC6 @ ((unsigned)&TRISC*8)+6;
volatile bit TRISC7 @ ((unsigned)&TRISC*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISC0 : 1;
unsigned TRISC1 : 1;
unsigned TRISC2 : 1;
unsigned TRISC3 : 1;
unsigned TRISC4 : 1;
unsigned TRISC5 : 1;
unsigned TRISC6 : 1;
unsigned TRISC7 : 1;
};
} TRISCbits @ 0x087;
#endif
// Register: TRISD
volatile unsigned char TRISD @ 0x088;
// bit and bitfield definitions
volatile bit TRISD0 @ ((unsigned)&TRISD*8)+0;
volatile bit TRISD1 @ ((unsigned)&TRISD*8)+1;
volatile bit TRISD2 @ ((unsigned)&TRISD*8)+2;
volatile bit TRISD3 @ ((unsigned)&TRISD*8)+3;
volatile bit TRISD4 @ ((unsigned)&TRISD*8)+4;
volatile bit TRISD5 @ ((unsigned)&TRISD*8)+5;
volatile bit TRISD6 @ ((unsigned)&TRISD*8)+6;
volatile bit TRISD7 @ ((unsigned)&TRISD*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISD0 : 1;
unsigned TRISD1 : 1;
unsigned TRISD2 : 1;
unsigned TRISD3 : 1;
unsigned TRISD4 : 1;
unsigned TRISD5 : 1;
unsigned TRISD6 : 1;
unsigned TRISD7 : 1;
};
} TRISDbits @ 0x088;
#endif
// Register: TRISE
volatile unsigned char TRISE @ 0x089;
// bit and bitfield definitions
volatile bit TRISE0 @ ((unsigned)&TRISE*8)+0;
volatile bit TRISE1 @ ((unsigned)&TRISE*8)+1;
volatile bit TRISE2 @ ((unsigned)&TRISE*8)+2;
volatile bit PSPMODE @ ((unsigned)&TRISE*8)+4;
volatile bit IBOV @ ((unsigned)&TRISE*8)+5;
volatile bit OBF @ ((unsigned)&TRISE*8)+6;
volatile bit IBF @ ((unsigned)&TRISE*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISE0 : 1;
unsigned TRISE1 : 1;
unsigned TRISE2 : 1;
unsigned : 1;
unsigned PSPMODE : 1;
unsigned IBOV : 1;
unsigned OBF : 1;
unsigned IBF : 1;
};
} TRISEbits @ 0x089;
#endif
// Register: PIE1
volatile unsigned char PIE1 @ 0x08C;
// bit and bitfield definitions
volatile bit TMR1IE @ ((unsigned)&PIE1*8)+0;
volatile bit TMR2IE @ ((unsigned)&PIE1*8)+1;
volatile bit CCP1IE @ ((unsigned)&PIE1*8)+2;
volatile bit SSPIE @ ((unsigned)&PIE1*8)+3;
volatile bit TXIE @ ((unsigned)&PIE1*8)+4;
volatile bit RCIE @ ((unsigned)&PIE1*8)+5;
volatile bit ADIE @ ((unsigned)&PIE1*8)+6;
volatile bit PSPIE @ ((unsigned)&PIE1*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TMR1IE : 1;
unsigned TMR2IE : 1;
unsigned CCP1IE : 1;
unsigned SSPIE : 1;
unsigned TXIE : 1;
unsigned RCIE : 1;
unsigned ADIE : 1;
unsigned PSPIE : 1;
};
} PIE1bits @ 0x08C;
#endif
// Register: PIE2
volatile unsigned char PIE2 @ 0x08D;
// bit and bitfield definitions
volatile bit CCP2IE @ ((unsigned)&PIE2*8)+0;
volatile bit BCLIE @ ((unsigned)&PIE2*8)+3;
volatile bit EEIE @ ((unsigned)&PIE2*8)+4;
volatile bit CMIE @ ((unsigned)&PIE2*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CCP2IE : 1;
unsigned : 2;
unsigned BCLIE : 1;
unsigned EEIE : 1;
unsigned : 1;
unsigned CMIE : 1;
};
} PIE2bits @ 0x08D;
#endif
// Register: PCON
volatile unsigned char PCON @ 0x08E;
// bit and bitfield definitions
volatile bit nBOR @ ((unsigned)&PCON*8)+0;
volatile bit nPOR @ ((unsigned)&PCON*8)+1;
volatile bit nBO @ ((unsigned)&PCON*8)+0;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned nBOR : 1;
unsigned nPOR : 1;
};
struct {
unsigned nBO : 1;
};
} PCONbits @ 0x08E;
#endif
// Register: SSPCON2
volatile unsigned char SSPCON2 @ 0x091;
// bit and bitfield definitions
volatile bit SEN @ ((unsigned)&SSPCON2*8)+0;
volatile bit RSEN @ ((unsigned)&SSPCON2*8)+1;
volatile bit PEN @ ((unsigned)&SSPCON2*8)+2;
volatile bit RCEN @ ((unsigned)&SSPCON2*8)+3;
volatile bit ACKEN @ ((unsigned)&SSPCON2*8)+4;
volatile bit ACKDT @ ((unsigned)&SSPCON2*8)+5;
volatile bit ACKSTAT @ ((unsigned)&SSPCON2*8)+6;
volatile bit GCEN @ ((unsigned)&SSPCON2*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned SEN : 1;
unsigned RSEN : 1;
unsigned PEN : 1;
unsigned RCEN : 1;
unsigned ACKEN : 1;
unsigned ACKDT : 1;
unsigned ACKSTAT : 1;
unsigned GCEN : 1;
};
} SSPCON2bits @ 0x091;
#endif
// Register: PR2
volatile unsigned char PR2 @ 0x092;
// bit and bitfield definitions
// Register: SSPADD
volatile unsigned char SSPADD @ 0x093;
// bit and bitfield definitions
// Register: SSPSTAT
volatile unsigned char SSPSTAT @ 0x094;
// bit and bitfield definitions
volatile bit BF @ ((unsigned)&SSPSTAT*8)+0;
volatile bit UA @ ((unsigned)&SSPSTAT*8)+1;
volatile bit R_nW @ ((unsigned)&SSPSTAT*8)+2;
volatile bit S @ ((unsigned)&SSPSTAT*8)+3;
volatile bit P @ ((unsigned)&SSPSTAT*8)+4;
volatile bit D_nA @ ((unsigned)&SSPSTAT*8)+5;
volatile bit CKE @ ((unsigned)&SSPSTAT*8)+6;
volatile bit SMP @ ((unsigned)&SSPSTAT*8)+7;
volatile bit R @ ((unsigned)&SSPSTAT*8)+2;
volatile bit D @ ((unsigned)&SSPSTAT*8)+5;
volatile bit I2C_READ @ ((unsigned)&SSPSTAT*8)+2;
volatile bit I2C_START @ ((unsigned)&SSPSTAT*8)+3;
volatile bit I2C_STOP @ ((unsigned)&SSPSTAT*8)+4;
volatile bit I2C_DATA @ ((unsigned)&SSPSTAT*8)+5;
volatile bit nW @ ((unsigned)&SSPSTAT*8)+2;
volatile bit nA @ ((unsigned)&SSPSTAT*8)+5;
volatile bit nWRITE @ ((unsigned)&SSPSTAT*8)+2;
volatile bit nADDRESS @ ((unsigned)&SSPSTAT*8)+5;
volatile bit R_W @ ((unsigned)&SSPSTAT*8)+2;
volatile bit D_A @ ((unsigned)&SSPSTAT*8)+5;
volatile bit READ_WRITE @ ((unsigned)&SSPSTAT*8)+2;
volatile bit DATA_ADDRESS @ ((unsigned)&SSPSTAT*8)+5;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned BF : 1;
unsigned UA : 1;
unsigned R_nW : 1;
unsigned S : 1;
unsigned P : 1;
unsigned D_nA : 1;
unsigned CKE : 1;
unsigned SMP : 1;
};
struct {
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
};
struct {
unsigned : 2;
unsigned R : 1;
unsigned : 2;
unsigned D : 1;
};
struct {
unsigned : 2;
unsigned I2C_READ : 1;
unsigned I2C_START : 1;
unsigned I2C_STOP : 1;
unsigned I2C_DATA : 1;
};
struct {
unsigned : 2;
unsigned nW : 1;
unsigned : 2;
unsigned nA : 1;
};
struct {
unsigned : 2;
unsigned nWRITE : 1;
unsigned : 2;
unsigned nADDRESS : 1;
};
struct {
unsigned : 2;
unsigned R_W : 1;
unsigned : 2;
unsigned D_A : 1;
};
struct {
unsigned : 2;
unsigned READ_WRITE : 1;
unsigned : 2;
unsigned DATA_ADDRESS : 1;
};
} SSPSTATbits @ 0x094;
#endif
// Register: TXSTA
volatile unsigned char TXSTA @ 0x098;
// bit and bitfield definitions
volatile bit TX9D @ ((unsigned)&TXSTA*8)+0;
volatile bit TRMT @ ((unsigned)&TXSTA*8)+1;
volatile bit BRGH @ ((unsigned)&TXSTA*8)+2;
volatile bit SYNC @ ((unsigned)&TXSTA*8)+4;
volatile bit TXEN @ ((unsigned)&TXSTA*8)+5;
volatile bit TX9 @ ((unsigned)&TXSTA*8)+6;
volatile bit CSRC @ ((unsigned)&TXSTA*8)+7;
volatile bit TXD8 @ ((unsigned)&TXSTA*8)+0;
volatile bit nTX8 @ ((unsigned)&TXSTA*8)+6;
volatile bit TX8_9 @ ((unsigned)&TXSTA*8)+6;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TX9D : 1;
unsigned TRMT : 1;
unsigned BRGH : 1;
unsigned : 1;
unsigned SYNC : 1;
unsigned TXEN : 1;
unsigned TX9 : 1;
unsigned CSRC : 1;
};
struct {
unsigned TXD8 : 1;
unsigned : 5;
unsigned nTX8 : 1;
};
struct {
unsigned : 6;
unsigned TX8_9 : 1;
};
} TXSTAbits @ 0x098;
#endif
// Register: SPBRG
volatile unsigned char SPBRG @ 0x099;
// bit and bitfield definitions
// Register: CMCON
volatile unsigned char CMCON @ 0x09C;
// bit and bitfield definitions
volatile bit CIS @ ((unsigned)&CMCON*8)+3;
volatile bit C1INV @ ((unsigned)&CMCON*8)+4;
volatile bit C2INV @ ((unsigned)&CMCON*8)+5;
volatile bit C1OUT @ ((unsigned)&CMCON*8)+6;
volatile bit C2OUT @ ((unsigned)&CMCON*8)+7;
volatile bit CM0 @ ((unsigned)&CMCON*8)+0;
volatile bit CM1 @ ((unsigned)&CMCON*8)+1;
volatile bit CM2 @ ((unsigned)&CMCON*8)+2;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CM : 3;
unsigned CIS : 1;
unsigned C1INV : 1;
unsigned C2INV : 1;
unsigned C1OUT : 1;
unsigned C2OUT : 1;
};
struct {
unsigned CM0 : 1;
unsigned CM1 : 1;
unsigned CM2 : 1;
};
} CMCONbits @ 0x09C;
#endif
// Register: CVRCON
volatile unsigned char CVRCON @ 0x09D;
// bit and bitfield definitions
volatile bit CVRR @ ((unsigned)&CVRCON*8)+5;
volatile bit CVROE @ ((unsigned)&CVRCON*8)+6;
volatile bit CVREN @ ((unsigned)&CVRCON*8)+7;
volatile bit CVR0 @ ((unsigned)&CVRCON*8)+0;
volatile bit CVR1 @ ((unsigned)&CVRCON*8)+1;
volatile bit CVR2 @ ((unsigned)&CVRCON*8)+2;
volatile bit CVR3 @ ((unsigned)&CVRCON*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned CVR : 4;
unsigned : 1;
unsigned CVRR : 1;
unsigned CVROE : 1;
unsigned CVREN : 1;
};
struct {
unsigned CVR0 : 1;
unsigned CVR1 : 1;
unsigned CVR2 : 1;
unsigned CVR3 : 1;
};
} CVRCONbits @ 0x09D;
#endif
// Register: ADRESL
volatile unsigned char ADRESL @ 0x09E;
// bit and bitfield definitions
// Register: ADCON1
volatile unsigned char ADCON1 @ 0x09F;
// bit and bitfield definitions
volatile bit ADCS2 @ ((unsigned)&ADCON1*8)+6;
volatile bit ADFM @ ((unsigned)&ADCON1*8)+7;
volatile bit PCFG0 @ ((unsigned)&ADCON1*8)+0;
volatile bit PCFG1 @ ((unsigned)&ADCON1*8)+1;
volatile bit PCFG2 @ ((unsigned)&ADCON1*8)+2;
volatile bit PCFG3 @ ((unsigned)&ADCON1*8)+3;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned PCFG : 4;
unsigned : 2;
unsigned ADCS2 : 1;
unsigned ADFM : 1;
};
struct {
unsigned PCFG0 : 1;
unsigned PCFG1 : 1;
unsigned PCFG2 : 1;
unsigned PCFG3 : 1;
};
} ADCON1bits @ 0x09F;
#endif
//
// Special function register definitions: Bank 2
//
// Register: EEDATA
volatile unsigned char EEDATA @ 0x10C;
// bit and bitfield definitions
// Register: EEADR
volatile unsigned char EEADR @ 0x10D;
// bit and bitfield definitions
// Register: EEDATH
volatile unsigned char EEDATH @ 0x10E;
// bit and bitfield definitions
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned : 6;
};
} EEDATHbits @ 0x10E;
#endif
// Register: EEADRH
volatile unsigned char EEADRH @ 0x10F;
// bit and bitfield definitions
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned : 5;
};
} EEADRHbits @ 0x10F;
#endif
//
// Special function register definitions: Bank 3
//
// Register: EECON1
volatile unsigned char EECON1 @ 0x18C;
// bit and bitfield definitions
volatile bit RD @ ((unsigned)&EECON1*8)+0;
volatile bit WR @ ((unsigned)&EECON1*8)+1;
volatile bit WREN @ ((unsigned)&EECON1*8)+2;
volatile bit WRERR @ ((unsigned)&EECON1*8)+3;
volatile bit EEPGD @ ((unsigned)&EECON1*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned RD : 1;
unsigned WR : 1;
unsigned WREN : 1;
unsigned WRERR : 1;
unsigned : 3;
unsigned EEPGD : 1;
};
} EECON1bits @ 0x18C;
#endif
// Register: EECON2
volatile unsigned char EECON2 @ 0x18D;
// bit and bitfield definitions