
#ifndef	_HTC_H_
#warning Header file pic125xx.h included directly. Use #include <htc.h> instead.
#endif

/*
 *	Header file for the Microchip 
 *	PIC 12C508 
 *	PIC 12C509 
 *	PIC 12F508 
 *	PIC 12F509 
 *	PIC 12C508A 
 *      PIC 12C509A 
 *      PIC 12CE518 
 *      PIC 12CE519 
 *      PIC 12CR509A 
 *      rfPIC 12C509AG 
 *      rfPIC 12C509AF 
 *	Baseline Microcontrollers
 */

static volatile unsigned char	RTCC	@ 0x01;
static volatile unsigned char	TMR0	@ 0x01;
static volatile unsigned char	PCL	@ 0x02;
static volatile unsigned char	STATUS	@ 0x03;
static          unsigned char	FSR	@ 0x04;
static volatile unsigned char	OSCCAL	@ 0x05;
static volatile unsigned char	GPIO	@ 0x06;

static          unsigned char control	OPTION	@ 0x00;
static volatile	unsigned char control	TRIS	@ 0x06;

/*	STATUS bits	*/
static bit 	GPWUF	@ (unsigned)&STATUS*8+7;
static bit	PA0	@ (unsigned)&STATUS*8+5;
static bit 	TO	@ (unsigned)&STATUS*8+4;
static bit 	PD	@ (unsigned)&STATUS*8+3;
static bit 	ZERO	@ (unsigned)&STATUS*8+2;
static bit	DC	@ (unsigned)&STATUS*8+1;
static bit	CARRY	@ (unsigned)&STATUS*8+0;

/*	OPTION bits	*/
#define		GPWU	(1<<7)
#define		GPPU	(1<<6)
#define		T0CS	(1<<5)
#define		T0SE	(1<<4)
#define		PSA	(1<<3)
#define		PS2	(1<<2)
#define		PS1	(1<<1)
#define		PS0	(1<<0)

/*      OSCCAL bits     */
#if defined(_12C508) || defined(_12C509)
static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+7;
static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+6;
static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+5;
static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+4;
#elif	defined(_12C508A) || defined(_12C509A) ||\
	defined(_12CE518) || defined(_12CE519) ||\
	defined(_12C509AG) || defined(_12C509AF) ||\
	defined(_12CR509A)
	static volatile bit     CAL5    @ (unsigned)&OSCCAL*8+7;
	static volatile bit     CAL4    @ (unsigned)&OSCCAL*8+6;
	static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+5;
	static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+4;
	static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+3;
	static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+2;
#elif defined(_12F508) || defined(_12F509)
static volatile bit     CAL6    @ (unsigned)&OSCCAL*8+7;
static volatile bit     CAL5    @ (unsigned)&OSCCAL*8+6;
static volatile bit     CAL4    @ (unsigned)&OSCCAL*8+5;
static volatile bit     CAL3    @ (unsigned)&OSCCAL*8+4;
static volatile bit     CAL2    @ (unsigned)&OSCCAL*8+3;
static volatile bit     CAL1    @ (unsigned)&OSCCAL*8+2;
static volatile bit     CAL0    @ (unsigned)&OSCCAL*8+1;
#endif
	
/*	GPIO bits	*/
#if defined(_12CE518) || defined(_12CE519)
	static volatile bit     SCL     @ (unsigned)&GPIO*8+7;
	static volatile bit     SDA     @ (unsigned)&GPIO*8+6;
#endif
static volatile bit	GP5	@ (unsigned)&GPIO*8+5;
static volatile bit	GP4	@ (unsigned)&GPIO*8+4;
static volatile bit	GP3	@ (unsigned)&GPIO*8+3;
static volatile bit	GP2	@ (unsigned)&GPIO*8+2;
static volatile bit	GP1	@ (unsigned)&GPIO*8+1;
static volatile bit	GP0	@ (unsigned)&GPIO*8+0;


#define CONFIG_ADDR	0xFFF

/* MCLR Pin function */
#define MCLREN		0xFFF	// master clear reset enable
#define MCLRDIS		0xFEF	// master clear reset disable

/*watchdog*/
#define WDTEN		0xFFF	// watchdog timer enable
#define WDTDIS		0xFFB	// watchdog timer disable

/* code protection */
#define PROTECT		0xFF7	// protect the program code
#define UNPROTECT	0xFFF	// do not protect the program code

/*osc configurations*/
#define EXTRC   	0xFFF	// external resistor/capacitor
#define INTRC		0xFFE	// internal
#define XT		0xFFD	// crystal/resonator
#define LP		0xFFC	// low power crystal/resonator
