PIC16F84 pic.h

Contenuto di pic.h per il PIC16F84// 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

// WDT enabled

#define WDTE_ON 0xFFFF

// WDT disabled

#define WDTE_OFF 0xFFFB

// Power-up Timer Enable bit

// Power-up Timer is disabled

#define PWRTE_OFF 0xFFFF

// Power-up Timer is enabled

#define PWRTE_ON 0xFFF7

// Code Protection bit

// Code protection disabled

#define CP_OFF 0xFFFF

// All program memory is code protected

#define CP_ON 0xC00F

//

// 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;

#ifndef _LIB_BUILD

volatile union {

struct {

unsigned RA0 : 1;

unsigned RA1 : 1;

unsigned RA2 : 1;

unsigned RA3 : 1;

unsigned RA4 : 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: EEDATA

volatile unsigned char EEDATA @ 0x008;

// bit and bitfield definitions

// Register: EEADR

volatile unsigned char EEADR @ 0x009;

// bit and bitfield definitions

// 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 T0IF @ ((unsigned)&INTCON*8)+2;

volatile bit RBIE @ ((unsigned)&INTCON*8)+3;

volatile bit INTE @ ((unsigned)&INTCON*8)+4;

volatile bit T0IE @ ((unsigned)&INTCON*8)+5;

volatile bit EEIE @ ((unsigned)&INTCON*8)+6;

volatile bit GIE @ ((unsigned)&INTCON*8)+7;

volatile bit TMR0IF @ ((unsigned)&INTCON*8)+2;

volatile bit TMR0IE @ ((unsigned)&INTCON*8)+5;

#ifndef _LIB_BUILD

volatile union {

struct {

unsigned RBIF : 1;

unsigned INTF : 1;

unsigned T0IF : 1;

unsigned RBIE : 1;

unsigned INTE : 1;

unsigned T0IE : 1;

unsigned EEIE : 1;

unsigned GIE : 1;

};

struct {

unsigned : 2;

unsigned TMR0IF : 1;

unsigned : 2;

unsigned TMR0IE : 1;

};

} INTCONbits @ 0x00B;

#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;

#ifndef _LIB_BUILD

volatile union {

struct {

unsigned TRISA0 : 1;

unsigned TRISA1 : 1;

unsigned TRISA2 : 1;

unsigned TRISA3 : 1;

unsigned TRISA4 : 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: EECON1

volatile unsigned char EECON1 @ 0x088;

// 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 EEIF @ ((unsigned)&EECON1*8)+4;

#ifndef _LIB_BUILD

volatile union {

struct {

unsigned RD : 1;

unsigned WR : 1;

unsigned WREN : 1;

unsigned WRERR : 1;

unsigned EEIF : 1;

};

} EECON1bits @ 0x088;

#endif

// Register: EECON2

volatile unsigned char EECON2 @ 0x089;

// bit and bitfield definitions