/*
 * This declarations of the PIC12F617 MCU.
 *
 * This file is part of the GNU PIC library for SDCC, originally
 * created by Molnar Karoly <molnarkaroly@users.sf.net> 2016.
 *
 * This file is generated automatically by the cinc2h.pl, 2016-04-13 17:23:04 UTC.
 *
 * SDCC is licensed under the GNU Public license (GPL) v2. Note that
 * this license covers the code to the compiler and other executables,
 * but explicitly does not cover any code or objects generated by sdcc.
 *
 * For pic device libraries and header files which are derived from
 * Microchip header (.inc) and linker script (.lkr) files Microchip
 * requires that "The header files should state that they are only to be
 * used with authentic Microchip devices" which makes them incompatible
 * with the GPL. Pic device libraries and header files are located at
 * non-free/lib and non-free/include directories respectively.
 * Sdcc should be run with the --use-non-free command line option in
 * order to include non-free header files and libraries.
 *
 * See http://sdcc.sourceforge.net/ for the latest information on sdcc.
 */

#ifndef __PIC12F617_H__
#define __PIC12F617_H__

//==============================================================================
//
//	Register Addresses
//
//==============================================================================

#ifndef NO_ADDR_DEFINES

#define INDF_ADDR               0x0000
#define TMR0_ADDR               0x0001
#define PCL_ADDR                0x0002
#define STATUS_ADDR             0x0003
#define FSR_ADDR                0x0004
#define GPIO_ADDR               0x0005
#define PORTA_ADDR              0x0005
#define PCLATH_ADDR             0x000A
#define INTCON_ADDR             0x000B
#define PIR1_ADDR               0x000C
#define TMR1_ADDR               0x000E
#define TMR1L_ADDR              0x000E
#define TMR1H_ADDR              0x000F
#define T1CON_ADDR              0x0010
#define TMR2_ADDR               0x0011
#define T2CON_ADDR              0x0012
#define CCPR1_ADDR              0x0013
#define CCPR1L_ADDR             0x0013
#define CCPR1H_ADDR             0x0014
#define CCP1CON_ADDR            0x0015
#define PWM1CON_ADDR            0x0016
#define ECCPAS_ADDR             0x0017
#define VRCON_ADDR              0x0019
#define CMCON0_ADDR             0x001A
#define CMCON1_ADDR             0x001C
#define ADRESH_ADDR             0x001E
#define ADCON0_ADDR             0x001F
#define OPTION_REG_ADDR         0x0081
#define TRISA_ADDR              0x0085
#define TRISIO_ADDR             0x0085
#define PIE1_ADDR               0x008C
#define PCON_ADDR               0x008E
#define OSCTUNE_ADDR            0x0090
#define PR2_ADDR                0x0092
#define APFCON_ADDR             0x0093
#define WPU_ADDR                0x0095
#define WPUA_ADDR               0x0095
#define IOC_ADDR                0x0096
#define IOCA_ADDR               0x0096
#define PMCON1_ADDR             0x0098
#define PMCON2_ADDR             0x0099
#define PMADRL_ADDR             0x009A
#define PMADRH_ADDR             0x009B
#define PMDATL_ADDR             0x009C
#define PMDATH_ADDR             0x009D
#define ADRESL_ADDR             0x009E
#define ANSEL_ADDR              0x009F

#endif // #ifndef NO_ADDR_DEFINES

//==============================================================================
//
//	Register Definitions
//
//==============================================================================

extern __at(0x0000) __sfr INDF;
extern __at(0x0001) __sfr TMR0;
extern __at(0x0002) __sfr PCL;

//==============================================================================
//        STATUS Bits

extern __at(0x0003) __sfr STATUS;

typedef union
  {
  struct
    {
    unsigned C                  : 1;
    unsigned DC                 : 1;
    unsigned Z                  : 1;
    unsigned NOT_PD             : 1;
    unsigned NOT_TO             : 1;
    unsigned RP0                : 1;
    unsigned RP1                : 1;
    unsigned IRP                : 1;
    };

  struct
    {
    unsigned                    : 5;
    unsigned RP                 : 2;
    unsigned                    : 1;
    };
  } __STATUSbits_t;

extern __at(0x0003) volatile __STATUSbits_t STATUSbits;

#define _C                      0x01
#define _DC                     0x02
#define _Z                      0x04
#define _NOT_PD                 0x08
#define _NOT_TO                 0x10
#define _RP0                    0x20
#define _RP1                    0x40
#define _IRP                    0x80

//==============================================================================

extern __at(0x0004) __sfr FSR;

//==============================================================================
//        GPIO Bits

extern __at(0x0005) __sfr GPIO;

typedef union
  {
  struct
    {
    unsigned GP0                : 1;
    unsigned GP1                : 1;
    unsigned GP2                : 1;
    unsigned GP3                : 1;
    unsigned GP4                : 1;
    unsigned GP5                : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned GPIO0              : 1;
    unsigned GPIO1              : 1;
    unsigned GPIO2              : 1;
    unsigned GPIO3              : 1;
    unsigned GPIO4              : 1;
    unsigned GPIO5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned RA0                : 1;
    unsigned RA1                : 1;
    unsigned RA2                : 1;
    unsigned RA3                : 1;
    unsigned RA4                : 1;
    unsigned RA5                : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned GPIO               : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned GP                 : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned RA                 : 6;
    unsigned                    : 2;
    };
  } __GPIObits_t;

extern __at(0x0005) volatile __GPIObits_t GPIObits;

#define _GP0                    0x01
#define _GPIO0                  0x01
#define _RA0                    0x01
#define _GP1                    0x02
#define _GPIO1                  0x02
#define _RA1                    0x02
#define _GP2                    0x04
#define _GPIO2                  0x04
#define _RA2                    0x04
#define _GP3                    0x08
#define _GPIO3                  0x08
#define _RA3                    0x08
#define _GP4                    0x10
#define _GPIO4                  0x10
#define _RA4                    0x10
#define _GP5                    0x20
#define _GPIO5                  0x20
#define _RA5                    0x20

//==============================================================================


//==============================================================================
//        PORTA Bits

extern __at(0x0005) __sfr PORTA;

typedef union
  {
  struct
    {
    unsigned GP0                : 1;
    unsigned GP1                : 1;
    unsigned GP2                : 1;
    unsigned GP3                : 1;
    unsigned GP4                : 1;
    unsigned GP5                : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned GPIO0              : 1;
    unsigned GPIO1              : 1;
    unsigned GPIO2              : 1;
    unsigned GPIO3              : 1;
    unsigned GPIO4              : 1;
    unsigned GPIO5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned RA0                : 1;
    unsigned RA1                : 1;
    unsigned RA2                : 1;
    unsigned RA3                : 1;
    unsigned RA4                : 1;
    unsigned RA5                : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned GP                 : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned RA                 : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned GPIO               : 6;
    unsigned                    : 2;
    };
  } __PORTAbits_t;

extern __at(0x0005) volatile __PORTAbits_t PORTAbits;

#define _PORTA_GP0              0x01
#define _PORTA_GPIO0            0x01
#define _PORTA_RA0              0x01
#define _PORTA_GP1              0x02
#define _PORTA_GPIO1            0x02
#define _PORTA_RA1              0x02
#define _PORTA_GP2              0x04
#define _PORTA_GPIO2            0x04
#define _PORTA_RA2              0x04
#define _PORTA_GP3              0x08
#define _PORTA_GPIO3            0x08
#define _PORTA_RA3              0x08
#define _PORTA_GP4              0x10
#define _PORTA_GPIO4            0x10
#define _PORTA_RA4              0x10
#define _PORTA_GP5              0x20
#define _PORTA_GPIO5            0x20
#define _PORTA_RA5              0x20

//==============================================================================

extern __at(0x000A) __sfr PCLATH;

//==============================================================================
//        INTCON Bits

extern __at(0x000B) __sfr INTCON;

typedef union
  {
  struct
    {
    unsigned GPIF               : 1;
    unsigned INTF               : 1;
    unsigned T0IF               : 1;
    unsigned GPIE               : 1;
    unsigned INTE               : 1;
    unsigned T0IE               : 1;
    unsigned PEIE               : 1;
    unsigned GIE                : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned TMR0IF             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned TMR0IE             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __INTCONbits_t;

extern __at(0x000B) volatile __INTCONbits_t INTCONbits;

#define _GPIF                   0x01
#define _INTF                   0x02
#define _T0IF                   0x04
#define _TMR0IF                 0x04
#define _GPIE                   0x08
#define _INTE                   0x10
#define _T0IE                   0x20
#define _TMR0IE                 0x20
#define _PEIE                   0x40
#define _GIE                    0x80

//==============================================================================


//==============================================================================
//        PIR1 Bits

extern __at(0x000C) __sfr PIR1;

typedef union
  {
  struct
    {
    unsigned TMR1IF             : 1;
    unsigned TMR2IF             : 1;
    unsigned                    : 1;
    unsigned CMIF               : 1;
    unsigned                    : 1;
    unsigned CCP1IF             : 1;
    unsigned ADIF               : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned C1IF               : 1;
    unsigned                    : 1;
    unsigned CCPIF              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned ECCPIF             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __PIR1bits_t;

extern __at(0x000C) volatile __PIR1bits_t PIR1bits;

#define _TMR1IF                 0x01
#define _TMR2IF                 0x02
#define _CMIF                   0x08
#define _C1IF                   0x08
#define _CCP1IF                 0x20
#define _CCPIF                  0x20
#define _ECCPIF                 0x20
#define _ADIF                   0x40

//==============================================================================

extern __at(0x000E) __sfr TMR1;
extern __at(0x000E) __sfr TMR1L;
extern __at(0x000F) __sfr TMR1H;

//==============================================================================
//        T1CON Bits

extern __at(0x0010) __sfr T1CON;

typedef union
  {
  struct
    {
    unsigned TMR1ON             : 1;
    unsigned TMR1CS             : 1;
    unsigned NOT_T1SYNC         : 1;
    unsigned T1OSCEN            : 1;
    unsigned T1CKPS0            : 1;
    unsigned T1CKPS1            : 1;
    unsigned TMR1GE             : 1;
    unsigned T1GINV             : 1;
    };

  struct
    {
    unsigned                    : 4;
    unsigned T1CKPS             : 2;
    unsigned                    : 2;
    };
  } __T1CONbits_t;

extern __at(0x0010) volatile __T1CONbits_t T1CONbits;

#define _TMR1ON                 0x01
#define _TMR1CS                 0x02
#define _NOT_T1SYNC             0x04
#define _T1OSCEN                0x08
#define _T1CKPS0                0x10
#define _T1CKPS1                0x20
#define _TMR1GE                 0x40
#define _T1GINV                 0x80

//==============================================================================

extern __at(0x0011) __sfr TMR2;

//==============================================================================
//        T2CON Bits

extern __at(0x0012) __sfr T2CON;

typedef union
  {
  struct
    {
    unsigned T2CKPS0            : 1;
    unsigned T2CKPS1            : 1;
    unsigned TMR2ON             : 1;
    unsigned TOUTPS0            : 1;
    unsigned TOUTPS1            : 1;
    unsigned TOUTPS2            : 1;
    unsigned TOUTPS3            : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned T2CKPS             : 2;
    unsigned                    : 6;
    };

  struct
    {
    unsigned                    : 3;
    unsigned TOUTPS             : 4;
    unsigned                    : 1;
    };
  } __T2CONbits_t;

extern __at(0x0012) volatile __T2CONbits_t T2CONbits;

#define _T2CKPS0                0x01
#define _T2CKPS1                0x02
#define _TMR2ON                 0x04
#define _TOUTPS0                0x08
#define _TOUTPS1                0x10
#define _TOUTPS2                0x20
#define _TOUTPS3                0x40

//==============================================================================

extern __at(0x0013) __sfr CCPR1;
extern __at(0x0013) __sfr CCPR1L;
extern __at(0x0014) __sfr CCPR1H;

//==============================================================================
//        CCP1CON Bits

extern __at(0x0015) __sfr CCP1CON;

typedef union
  {
  struct
    {
    unsigned CCP1M0             : 1;
    unsigned CCP1M1             : 1;
    unsigned CCP1M2             : 1;
    unsigned CCP1M3             : 1;
    unsigned DCB0               : 1;
    unsigned DCB1               : 1;
    unsigned                    : 1;
    unsigned P1M                : 1;
    };

  struct
    {
    unsigned CCP1M              : 4;
    unsigned                    : 4;
    };

  struct
    {
    unsigned                    : 4;
    unsigned DCB                : 2;
    unsigned                    : 2;
    };
  } __CCP1CONbits_t;

extern __at(0x0015) volatile __CCP1CONbits_t CCP1CONbits;

#define _CCP1M0                 0x01
#define _CCP1M1                 0x02
#define _CCP1M2                 0x04
#define _CCP1M3                 0x08
#define _DCB0                   0x10
#define _DCB1                   0x20
#define _P1M                    0x80

//==============================================================================


//==============================================================================
//        PWM1CON Bits

extern __at(0x0016) __sfr PWM1CON;

typedef union
  {
  struct
    {
    unsigned PDC0               : 1;
    unsigned PDC1               : 1;
    unsigned PDC2               : 1;
    unsigned PDC3               : 1;
    unsigned PDC4               : 1;
    unsigned PDC5               : 1;
    unsigned PDC6               : 1;
    unsigned PRSEN              : 1;
    };

  struct
    {
    unsigned PDC                : 7;
    unsigned                    : 1;
    };
  } __PWM1CONbits_t;

extern __at(0x0016) volatile __PWM1CONbits_t PWM1CONbits;

#define _PDC0                   0x01
#define _PDC1                   0x02
#define _PDC2                   0x04
#define _PDC3                   0x08
#define _PDC4                   0x10
#define _PDC5                   0x20
#define _PDC6                   0x40
#define _PRSEN                  0x80

//==============================================================================


//==============================================================================
//        ECCPAS Bits

extern __at(0x0017) __sfr ECCPAS;

typedef union
  {
  struct
    {
    unsigned PSSBD0             : 1;
    unsigned PSSBD1             : 1;
    unsigned PSSAC0             : 1;
    unsigned PSSAC1             : 1;
    unsigned ECCPAS0            : 1;
    unsigned ECCPAS1            : 1;
    unsigned ECCPAS2            : 1;
    unsigned ECCPASE            : 1;
    };

  struct
    {
    unsigned PSSBD              : 2;
    unsigned                    : 6;
    };

  struct
    {
    unsigned                    : 2;
    unsigned PSSAC              : 2;
    unsigned                    : 4;
    };

  struct
    {
    unsigned                    : 4;
    unsigned ECCPAS             : 3;
    unsigned                    : 1;
    };
  } __ECCPASbits_t;

extern __at(0x0017) volatile __ECCPASbits_t ECCPASbits;

#define _PSSBD0                 0x01
#define _PSSBD1                 0x02
#define _PSSAC0                 0x04
#define _PSSAC1                 0x08
#define _ECCPAS0                0x10
#define _ECCPAS1                0x20
#define _ECCPAS2                0x40
#define _ECCPASE                0x80

//==============================================================================


//==============================================================================
//        VRCON Bits

extern __at(0x0019) __sfr VRCON;

typedef union
  {
  struct
    {
    unsigned VR0                : 1;
    unsigned VR1                : 1;
    unsigned VR2                : 1;
    unsigned VR3                : 1;
    unsigned FVREN              : 1;
    unsigned VRR                : 1;
    unsigned                    : 1;
    unsigned CMVREN             : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned C1VREN             : 1;
    };

  struct
    {
    unsigned VR                 : 4;
    unsigned                    : 4;
    };
  } __VRCONbits_t;

extern __at(0x0019) volatile __VRCONbits_t VRCONbits;

#define _VR0                    0x01
#define _VR1                    0x02
#define _VR2                    0x04
#define _VR3                    0x08
#define _FVREN                  0x10
#define _VRR                    0x20
#define _CMVREN                 0x80
#define _C1VREN                 0x80

//==============================================================================


//==============================================================================
//        CMCON0 Bits

extern __at(0x001A) __sfr CMCON0;

typedef union
  {
  struct
    {
    unsigned CMCH               : 1;
    unsigned                    : 1;
    unsigned CMR                : 1;
    unsigned                    : 1;
    unsigned CMPOL              : 1;
    unsigned CMOE               : 1;
    unsigned COUT               : 1;
    unsigned CMON               : 1;
    };

  struct
    {
    unsigned C1CH               : 1;
    unsigned                    : 1;
    unsigned C1R                : 1;
    unsigned                    : 1;
    unsigned C1POL              : 1;
    unsigned C1OE               : 1;
    unsigned C1OUT              : 1;
    unsigned C1ON               : 1;
    };
  } __CMCON0bits_t;

extern __at(0x001A) volatile __CMCON0bits_t CMCON0bits;

#define _CMCH                   0x01
#define _C1CH                   0x01
#define _CMR                    0x04
#define _C1R                    0x04
#define _CMPOL                  0x10
#define _C1POL                  0x10
#define _CMOE                   0x20
#define _C1OE                   0x20
#define _COUT                   0x40
#define _C1OUT                  0x40
#define _CMON                   0x80
#define _C1ON                   0x80

//==============================================================================


//==============================================================================
//        CMCON1 Bits

extern __at(0x001C) __sfr CMCON1;

typedef union
  {
  struct
    {
    unsigned CMSYNC             : 1;
    unsigned T1GSS              : 1;
    unsigned                    : 1;
    unsigned CMHYS              : 1;
    unsigned T1ACS              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned C1SYNC             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned C1HYS              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __CMCON1bits_t;

extern __at(0x001C) volatile __CMCON1bits_t CMCON1bits;

#define _CMSYNC                 0x01
#define _C1SYNC                 0x01
#define _T1GSS                  0x02
#define _CMHYS                  0x08
#define _C1HYS                  0x08
#define _T1ACS                  0x10

//==============================================================================

extern __at(0x001E) __sfr ADRESH;

//==============================================================================
//        ADCON0 Bits

extern __at(0x001F) __sfr ADCON0;

typedef union
  {
  struct
    {
    unsigned ADON               : 1;
    unsigned GO_NOT_DONE        : 1;
    unsigned CHS0               : 1;
    unsigned CHS1               : 1;
    unsigned CHS2               : 1;
    unsigned                    : 1;
    unsigned VCFG               : 1;
    unsigned ADFM               : 1;
    };

  struct
    {
    unsigned                    : 2;
    unsigned CHS                : 3;
    unsigned                    : 3;
    };
  } __ADCON0bits_t;

extern __at(0x001F) volatile __ADCON0bits_t ADCON0bits;

#define _ADON                   0x01
#define _GO_NOT_DONE            0x02
#define _CHS0                   0x04
#define _CHS1                   0x08
#define _CHS2                   0x10
#define _VCFG                   0x40
#define _ADFM                   0x80

//==============================================================================


//==============================================================================
//        OPTION_REG Bits

extern __at(0x0081) __sfr OPTION_REG;

typedef union
  {
  struct
    {
    unsigned PS0                : 1;
    unsigned PS1                : 1;
    unsigned PS2                : 1;
    unsigned PSA                : 1;
    unsigned T0SE               : 1;
    unsigned T0CS               : 1;
    unsigned INTEDG             : 1;
    unsigned NOT_GPPU           : 1;
    };

  struct
    {
    unsigned PS                 : 3;
    unsigned                    : 5;
    };
  } __OPTION_REGbits_t;

extern __at(0x0081) volatile __OPTION_REGbits_t OPTION_REGbits;

#define _PS0                    0x01
#define _PS1                    0x02
#define _PS2                    0x04
#define _PSA                    0x08
#define _T0SE                   0x10
#define _T0CS                   0x20
#define _INTEDG                 0x40
#define _NOT_GPPU               0x80

//==============================================================================


//==============================================================================
//        TRISA Bits

extern __at(0x0085) __sfr TRISA;

typedef union
  {
  struct
    {
    unsigned TRISIO0            : 1;
    unsigned TRISIO1            : 1;
    unsigned TRISIO2            : 1;
    unsigned TRISIO3            : 1;
    unsigned TRISIO4            : 1;
    unsigned TRISIO5            : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned TRISA0             : 1;
    unsigned TRISA1             : 1;
    unsigned TRISA2             : 1;
    unsigned TRISA3             : 1;
    unsigned TRISA4             : 1;
    unsigned TRISA5             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned TRISA              : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned TRISIO             : 6;
    unsigned                    : 2;
    };
  } __TRISAbits_t;

extern __at(0x0085) volatile __TRISAbits_t TRISAbits;

#define _TRISIO0                0x01
#define _TRISA0                 0x01
#define _TRISIO1                0x02
#define _TRISA1                 0x02
#define _TRISIO2                0x04
#define _TRISA2                 0x04
#define _TRISIO3                0x08
#define _TRISA3                 0x08
#define _TRISIO4                0x10
#define _TRISA4                 0x10
#define _TRISIO5                0x20
#define _TRISA5                 0x20

//==============================================================================


//==============================================================================
//        TRISIO Bits

extern __at(0x0085) __sfr TRISIO;

typedef union
  {
  struct
    {
    unsigned TRISIO0            : 1;
    unsigned TRISIO1            : 1;
    unsigned TRISIO2            : 1;
    unsigned TRISIO3            : 1;
    unsigned TRISIO4            : 1;
    unsigned TRISIO5            : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned TRISA0             : 1;
    unsigned TRISA1             : 1;
    unsigned TRISA2             : 1;
    unsigned TRISA3             : 1;
    unsigned TRISA4             : 1;
    unsigned TRISA5             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned TRISA              : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned TRISIO             : 6;
    unsigned                    : 2;
    };
  } __TRISIObits_t;

extern __at(0x0085) volatile __TRISIObits_t TRISIObits;

#define _TRISIO_TRISIO0         0x01
#define _TRISIO_TRISA0          0x01
#define _TRISIO_TRISIO1         0x02
#define _TRISIO_TRISA1          0x02
#define _TRISIO_TRISIO2         0x04
#define _TRISIO_TRISA2          0x04
#define _TRISIO_TRISIO3         0x08
#define _TRISIO_TRISA3          0x08
#define _TRISIO_TRISIO4         0x10
#define _TRISIO_TRISA4          0x10
#define _TRISIO_TRISIO5         0x20
#define _TRISIO_TRISA5          0x20

//==============================================================================


//==============================================================================
//        PIE1 Bits

extern __at(0x008C) __sfr PIE1;

typedef union
  {
  struct
    {
    unsigned TMR1IE             : 1;
    unsigned TMR2IE             : 1;
    unsigned                    : 1;
    unsigned CMIE               : 1;
    unsigned                    : 1;
    unsigned CCP1IE             : 1;
    unsigned ADIE               : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned C1IE               : 1;
    unsigned                    : 1;
    unsigned CCPIE              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned ECCPIE             : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __PIE1bits_t;

extern __at(0x008C) volatile __PIE1bits_t PIE1bits;

#define _TMR1IE                 0x01
#define _TMR2IE                 0x02
#define _CMIE                   0x08
#define _C1IE                   0x08
#define _CCP1IE                 0x20
#define _CCPIE                  0x20
#define _ECCPIE                 0x20
#define _ADIE                   0x40

//==============================================================================


//==============================================================================
//        PCON Bits

extern __at(0x008E) __sfr PCON;

typedef struct
  {
  unsigned NOT_BOR              : 1;
  unsigned NOT_POR              : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  } __PCONbits_t;

extern __at(0x008E) volatile __PCONbits_t PCONbits;

#define _NOT_BOR                0x01
#define _NOT_POR                0x02

//==============================================================================


//==============================================================================
//        OSCTUNE Bits

extern __at(0x0090) __sfr OSCTUNE;

typedef union
  {
  struct
    {
    unsigned TUN0               : 1;
    unsigned TUN1               : 1;
    unsigned TUN2               : 1;
    unsigned TUN3               : 1;
    unsigned TUN4               : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned TUN                : 5;
    unsigned                    : 3;
    };
  } __OSCTUNEbits_t;

extern __at(0x0090) volatile __OSCTUNEbits_t OSCTUNEbits;

#define _TUN0                   0x01
#define _TUN1                   0x02
#define _TUN2                   0x04
#define _TUN3                   0x08
#define _TUN4                   0x10

//==============================================================================

extern __at(0x0092) __sfr PR2;

//==============================================================================
//        APFCON Bits

extern __at(0x0093) __sfr APFCON;

typedef struct
  {
  unsigned P1ASEL               : 1;
  unsigned P1BSEL               : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned T1GSEL               : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  } __APFCONbits_t;

extern __at(0x0093) volatile __APFCONbits_t APFCONbits;

#define _P1ASEL                 0x01
#define _P1BSEL                 0x02
#define _T1GSEL                 0x10

//==============================================================================


//==============================================================================
//        WPU Bits

extern __at(0x0095) __sfr WPU;

typedef union
  {
  struct
    {
    unsigned WPU0               : 1;
    unsigned WPU1               : 1;
    unsigned WPU2               : 1;
    unsigned                    : 1;
    unsigned WPU4               : 1;
    unsigned WPU5               : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned WPUA0              : 1;
    unsigned WPUA1              : 1;
    unsigned WPUA2              : 1;
    unsigned                    : 1;
    unsigned WPUA4              : 1;
    unsigned WPUA5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __WPUbits_t;

extern __at(0x0095) volatile __WPUbits_t WPUbits;

#define _WPU0                   0x01
#define _WPUA0                  0x01
#define _WPU1                   0x02
#define _WPUA1                  0x02
#define _WPU2                   0x04
#define _WPUA2                  0x04
#define _WPU4                   0x10
#define _WPUA4                  0x10
#define _WPU5                   0x20
#define _WPUA5                  0x20

//==============================================================================


//==============================================================================
//        WPUA Bits

extern __at(0x0095) __sfr WPUA;

typedef union
  {
  struct
    {
    unsigned WPU0               : 1;
    unsigned WPU1               : 1;
    unsigned WPU2               : 1;
    unsigned                    : 1;
    unsigned WPU4               : 1;
    unsigned WPU5               : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned WPUA0              : 1;
    unsigned WPUA1              : 1;
    unsigned WPUA2              : 1;
    unsigned                    : 1;
    unsigned WPUA4              : 1;
    unsigned WPUA5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };
  } __WPUAbits_t;

extern __at(0x0095) volatile __WPUAbits_t WPUAbits;

#define _WPUA_WPU0              0x01
#define _WPUA_WPUA0             0x01
#define _WPUA_WPU1              0x02
#define _WPUA_WPUA1             0x02
#define _WPUA_WPU2              0x04
#define _WPUA_WPUA2             0x04
#define _WPUA_WPU4              0x10
#define _WPUA_WPUA4             0x10
#define _WPUA_WPU5              0x20
#define _WPUA_WPUA5             0x20

//==============================================================================


//==============================================================================
//        IOC Bits

extern __at(0x0096) __sfr IOC;

typedef union
  {
  struct
    {
    unsigned IOC0               : 1;
    unsigned IOC1               : 1;
    unsigned IOC2               : 1;
    unsigned IOC3               : 1;
    unsigned IOC4               : 1;
    unsigned IOC5               : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned IOCA0              : 1;
    unsigned IOCA1              : 1;
    unsigned IOCA2              : 1;
    unsigned IOCA3              : 1;
    unsigned IOCA4              : 1;
    unsigned IOCA5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned IOCA               : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned IOC                : 6;
    unsigned                    : 2;
    };
  } __IOCbits_t;

extern __at(0x0096) volatile __IOCbits_t IOCbits;

#define _IOC0                   0x01
#define _IOCA0                  0x01
#define _IOC1                   0x02
#define _IOCA1                  0x02
#define _IOC2                   0x04
#define _IOCA2                  0x04
#define _IOC3                   0x08
#define _IOCA3                  0x08
#define _IOC4                   0x10
#define _IOCA4                  0x10
#define _IOC5                   0x20
#define _IOCA5                  0x20

//==============================================================================


//==============================================================================
//        IOCA Bits

extern __at(0x0096) __sfr IOCA;

typedef union
  {
  struct
    {
    unsigned IOC0               : 1;
    unsigned IOC1               : 1;
    unsigned IOC2               : 1;
    unsigned IOC3               : 1;
    unsigned IOC4               : 1;
    unsigned IOC5               : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned IOCA0              : 1;
    unsigned IOCA1              : 1;
    unsigned IOCA2              : 1;
    unsigned IOCA3              : 1;
    unsigned IOCA4              : 1;
    unsigned IOCA5              : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned IOC                : 6;
    unsigned                    : 2;
    };

  struct
    {
    unsigned IOCA               : 6;
    unsigned                    : 2;
    };
  } __IOCAbits_t;

extern __at(0x0096) volatile __IOCAbits_t IOCAbits;

#define _IOCA_IOC0              0x01
#define _IOCA_IOCA0             0x01
#define _IOCA_IOC1              0x02
#define _IOCA_IOCA1             0x02
#define _IOCA_IOC2              0x04
#define _IOCA_IOCA2             0x04
#define _IOCA_IOC3              0x08
#define _IOCA_IOCA3             0x08
#define _IOCA_IOC4              0x10
#define _IOCA_IOCA4             0x10
#define _IOCA_IOC5              0x20
#define _IOCA_IOCA5             0x20

//==============================================================================


//==============================================================================
//        PMCON1 Bits

extern __at(0x0098) __sfr PMCON1;

typedef struct
  {
  unsigned RD                   : 1;
  unsigned WR                   : 1;
  unsigned WREN                 : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  unsigned                      : 1;
  } __PMCON1bits_t;

extern __at(0x0098) volatile __PMCON1bits_t PMCON1bits;

#define _RD                     0x01
#define _WR                     0x02
#define _WREN                   0x04

//==============================================================================

extern __at(0x0099) __sfr PMCON2;

//==============================================================================
//        PMADRL Bits

extern __at(0x009A) __sfr PMADRL;

typedef struct
  {
  unsigned PMADRL0              : 1;
  unsigned PMADRL1              : 1;
  unsigned PMADRL2              : 1;
  unsigned PMADRL3              : 1;
  unsigned PMADRL4              : 1;
  unsigned PMADRL5              : 1;
  unsigned PMADRL6              : 1;
  unsigned PMADRL7              : 1;
  } __PMADRLbits_t;

extern __at(0x009A) volatile __PMADRLbits_t PMADRLbits;

#define _PMADRL0                0x01
#define _PMADRL1                0x02
#define _PMADRL2                0x04
#define _PMADRL3                0x08
#define _PMADRL4                0x10
#define _PMADRL5                0x20
#define _PMADRL6                0x40
#define _PMADRL7                0x80

//==============================================================================


//==============================================================================
//        PMADRH Bits

extern __at(0x009B) __sfr PMADRH;

typedef union
  {
  struct
    {
    unsigned PMADRH0            : 1;
    unsigned PMADRH1            : 1;
    unsigned PMADRH2            : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned PMADRH             : 3;
    unsigned                    : 5;
    };
  } __PMADRHbits_t;

extern __at(0x009B) volatile __PMADRHbits_t PMADRHbits;

#define _PMADRH0                0x01
#define _PMADRH1                0x02
#define _PMADRH2                0x04

//==============================================================================


//==============================================================================
//        PMDATL Bits

extern __at(0x009C) __sfr PMDATL;

typedef struct
  {
  unsigned PMDATL0              : 1;
  unsigned PMDATL1              : 1;
  unsigned PMDATL2              : 1;
  unsigned PMDATL3              : 1;
  unsigned PMDATL4              : 1;
  unsigned PMDATL5              : 1;
  unsigned PMDATL6              : 1;
  unsigned PMDATL7              : 1;
  } __PMDATLbits_t;

extern __at(0x009C) volatile __PMDATLbits_t PMDATLbits;

#define _PMDATL0                0x01
#define _PMDATL1                0x02
#define _PMDATL2                0x04
#define _PMDATL3                0x08
#define _PMDATL4                0x10
#define _PMDATL5                0x20
#define _PMDATL6                0x40
#define _PMDATL7                0x80

//==============================================================================

extern __at(0x009D) __sfr PMDATH;
extern __at(0x009E) __sfr ADRESL;

//==============================================================================
//        ANSEL Bits

extern __at(0x009F) __sfr ANSEL;

typedef union
  {
  struct
    {
    unsigned ANS0               : 1;
    unsigned ANS1               : 1;
    unsigned ANS2               : 1;
    unsigned ANS3               : 1;
    unsigned ADCS0              : 1;
    unsigned ADCS1              : 1;
    unsigned ADCS2              : 1;
    unsigned                    : 1;
    };

  struct
    {
    unsigned ANS                : 4;
    unsigned                    : 4;
    };

  struct
    {
    unsigned                    : 4;
    unsigned ADCS               : 3;
    unsigned                    : 1;
    };
  } __ANSELbits_t;

extern __at(0x009F) volatile __ANSELbits_t ANSELbits;

#define _ANS0                   0x01
#define _ANS1                   0x02
#define _ANS2                   0x04
#define _ANS3                   0x08
#define _ADCS0                  0x10
#define _ADCS1                  0x20
#define _ADCS2                  0x40

//==============================================================================


//==============================================================================
//
//        Configuration Bits
//
//==============================================================================

#define _CONFIG                 0x2007

//----------------------------- CONFIG Options -------------------------------

#define _FOSC_LP                0x3FF8  // LP oscillator: Low-power crystal on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _LP_OSC                 0x3FF8  // LP oscillator: Low-power crystal on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _FOSC_XT                0x3FF9  // XT oscillator: Crystal/resonator on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _XT_OSC                 0x3FF9  // XT oscillator: Crystal/resonator on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _FOSC_HS                0x3FFA  // HS oscillator: High-speed crystal/resonator on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _HS_OSC                 0x3FFA  // HS oscillator: High-speed crystal/resonator on RA5/T1CKI/OSC1/CLKIN and RA4/AN3/T1G/OSC2/CLKOUT.
#define _FOSC_EC                0x3FFB  // EC: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, CLKIN on RA5/T1CKI/OSC1/CLKIN.
#define _EC_OSC                 0x3FFB  // EC: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, CLKIN on RA5/T1CKI/OSC1/CLKIN.
#define _FOSC_INTOSCIO          0x3FFC  // INTOSCIO oscillator: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, I/O function on RA5/T1CKI/OSC1/CLKIN.
#define _INTRC_OSC_NOCLKOUT     0x3FFC  // INTOSCIO oscillator: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, I/O function on RA5/T1CKI/OSC1/CLKIN.
#define _FOSC_INTOSCCLK         0x3FFD  // INTOSC oscillator: CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT, I/O function on RA5/T1CKI/OSC1/CLKIN.
#define _INTRC_OSC_CLKOUT       0x3FFD  // INTOSC oscillator: CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT, I/O function on RA5/T1CKI/OSC1/CLKIN.
#define _FOSC_EXTRCIO           0x3FFE  // EXTRCIO oscillator: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN.
#define _EXTRC_OSC_NOCLKOUT     0x3FFE  // EXTRCIO oscillator: I/O function on RA4/AN3/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN.
#define _FOSC_EXTRCCLK          0x3FFF  // EXTRC oscillator: CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN.
#define _EXTRC_OSC_CLKOUT       0x3FFF  // EXTRC oscillator: CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN.
#define _WDTE_OFF               0x3FF7  // WDT disabled and can be enabled by SWDTEN bit of the WDTCON register.
#define _WDT_OFF                0x3FF7  // WDT disabled and can be enabled by SWDTEN bit of the WDTCON register.
#define _WDTE_ON                0x3FFF  // WDT enabled.
#define _WDT_ON                 0x3FFF  // WDT enabled.
#define _PWRTE_ON               0x3FEF  // PWRT enabled.
#define _PWRTE_OFF              0x3FFF  // PWRT disabled.
#define _MCLRE_OFF              0x3FDF  // MCLR pin is alternate function, MCLR function is internally disabled.
#define _MCLRE_ON               0x3FFF  // MCLR pin is MCLR function and weak internal pull-up is enabled.
#define _CP_ON                  0x3FBF  // Program memory is external read and write protected.
#define _CP_OFF                 0x3FFF  // Program memory is not code protected.
#define _IOSCFS_4MHZ            0x3F7F  // 4 MHz.
#define _IOSCFS_8MHZ            0x3FFF  // 8 MHz.
#define _BOREN_OFF              0x3CFF  // BOR disabled.
#define _BOR_OFF                0x3CFF  // BOR disabled.
#define _BOREN_NSLEEP           0x3EFF  // BOR enabled during operation and disabled in Sleep.
#define _BOR_NSLEEP             0x3EFF  // BOR enabled during operation and disabled in Sleep.
#define _BOREN_ON               0x3FFF  // BOR enabled.
#define _BOR_ON                 0x3FFF  // BOR enabled.
#define _WRT_ALL                0x33FF  // 000h to 7FFh write protected, entire program memory is write protected.
#define _WRT_HALF               0x37FF  // 000h to 3FFh write protected, 400h to 7FFh may be modified by PMCON1 control.
#define _WRT_BOOT               0x3BFF  // 000h to 1FFh write protected, 200h to 7FFh may be modified by PMCON1 control.
#define _WRT_OFF                0x3FFF  // Write protection off.

//==============================================================================

#define _DEVID1                 0x2006

#define _IDLOC0                 0x2000
#define _IDLOC1                 0x2001
#define _IDLOC2                 0x2002
#define _IDLOC3                 0x2003

//==============================================================================

#ifndef NO_BIT_DEFINES

#define ADON                    ADCON0bits.ADON                 // bit 0
#define GO_NOT_DONE             ADCON0bits.GO_NOT_DONE          // bit 1
#define CHS0                    ADCON0bits.CHS0                 // bit 2
#define CHS1                    ADCON0bits.CHS1                 // bit 3
#define CHS2                    ADCON0bits.CHS2                 // bit 4
#define VCFG                    ADCON0bits.VCFG                 // bit 6
#define ADFM                    ADCON0bits.ADFM                 // bit 7

#define ANS0                    ANSELbits.ANS0                  // bit 0
#define ANS1                    ANSELbits.ANS1                  // bit 1
#define ANS2                    ANSELbits.ANS2                  // bit 2
#define ANS3                    ANSELbits.ANS3                  // bit 3
#define ADCS0                   ANSELbits.ADCS0                 // bit 4
#define ADCS1                   ANSELbits.ADCS1                 // bit 5
#define ADCS2                   ANSELbits.ADCS2                 // bit 6

#define P1ASEL                  APFCONbits.P1ASEL               // bit 0
#define P1BSEL                  APFCONbits.P1BSEL               // bit 1
#define T1GSEL                  APFCONbits.T1GSEL               // bit 4

#define CCP1M0                  CCP1CONbits.CCP1M0              // bit 0
#define CCP1M1                  CCP1CONbits.CCP1M1              // bit 1
#define CCP1M2                  CCP1CONbits.CCP1M2              // bit 2
#define CCP1M3                  CCP1CONbits.CCP1M3              // bit 3
#define DCB0                    CCP1CONbits.DCB0                // bit 4
#define DCB1                    CCP1CONbits.DCB1                // bit 5
#define P1M                     CCP1CONbits.P1M                 // bit 7

#define CMCH                    CMCON0bits.CMCH                 // bit 0, shadows bit in CMCON0bits
#define C1CH                    CMCON0bits.C1CH                 // bit 0, shadows bit in CMCON0bits
#define CMR                     CMCON0bits.CMR                  // bit 2, shadows bit in CMCON0bits
#define C1R                     CMCON0bits.C1R                  // bit 2, shadows bit in CMCON0bits
#define CMPOL                   CMCON0bits.CMPOL                // bit 4, shadows bit in CMCON0bits
#define C1POL                   CMCON0bits.C1POL                // bit 4, shadows bit in CMCON0bits
#define CMOE                    CMCON0bits.CMOE                 // bit 5, shadows bit in CMCON0bits
#define C1OE                    CMCON0bits.C1OE                 // bit 5, shadows bit in CMCON0bits
#define COUT                    CMCON0bits.COUT                 // bit 6, shadows bit in CMCON0bits
#define C1OUT                   CMCON0bits.C1OUT                // bit 6, shadows bit in CMCON0bits
#define CMON                    CMCON0bits.CMON                 // bit 7, shadows bit in CMCON0bits
#define C1ON                    CMCON0bits.C1ON                 // bit 7, shadows bit in CMCON0bits

#define CMSYNC                  CMCON1bits.CMSYNC               // bit 0, shadows bit in CMCON1bits
#define C1SYNC                  CMCON1bits.C1SYNC               // bit 0, shadows bit in CMCON1bits
#define T1GSS                   CMCON1bits.T1GSS                // bit 1
#define CMHYS                   CMCON1bits.CMHYS                // bit 3, shadows bit in CMCON1bits
#define C1HYS                   CMCON1bits.C1HYS                // bit 3, shadows bit in CMCON1bits
#define T1ACS                   CMCON1bits.T1ACS                // bit 4

#define PSSBD0                  ECCPASbits.PSSBD0               // bit 0
#define PSSBD1                  ECCPASbits.PSSBD1               // bit 1
#define PSSAC0                  ECCPASbits.PSSAC0               // bit 2
#define PSSAC1                  ECCPASbits.PSSAC1               // bit 3
#define ECCPAS0                 ECCPASbits.ECCPAS0              // bit 4
#define ECCPAS1                 ECCPASbits.ECCPAS1              // bit 5
#define ECCPAS2                 ECCPASbits.ECCPAS2              // bit 6
#define ECCPASE                 ECCPASbits.ECCPASE              // bit 7

#define GP0                     GPIObits.GP0                    // bit 0, shadows bit in GPIObits
#define GPIO0                   GPIObits.GPIO0                  // bit 0, shadows bit in GPIObits
#define RA0                     GPIObits.RA0                    // bit 0, shadows bit in GPIObits
#define GP1                     GPIObits.GP1                    // bit 1, shadows bit in GPIObits
#define GPIO1                   GPIObits.GPIO1                  // bit 1, shadows bit in GPIObits
#define RA1                     GPIObits.RA1                    // bit 1, shadows bit in GPIObits
#define GP2                     GPIObits.GP2                    // bit 2, shadows bit in GPIObits
#define GPIO2                   GPIObits.GPIO2                  // bit 2, shadows bit in GPIObits
#define RA2                     GPIObits.RA2                    // bit 2, shadows bit in GPIObits
#define GP3                     GPIObits.GP3                    // bit 3, shadows bit in GPIObits
#define GPIO3                   GPIObits.GPIO3                  // bit 3, shadows bit in GPIObits
#define RA3                     GPIObits.RA3                    // bit 3, shadows bit in GPIObits
#define GP4                     GPIObits.GP4                    // bit 4, shadows bit in GPIObits
#define GPIO4                   GPIObits.GPIO4                  // bit 4, shadows bit in GPIObits
#define RA4                     GPIObits.RA4                    // bit 4, shadows bit in GPIObits
#define GP5                     GPIObits.GP5                    // bit 5, shadows bit in GPIObits
#define GPIO5                   GPIObits.GPIO5                  // bit 5, shadows bit in GPIObits
#define RA5                     GPIObits.RA5                    // bit 5, shadows bit in GPIObits

#define GPIF                    INTCONbits.GPIF                 // bit 0
#define INTF                    INTCONbits.INTF                 // bit 1
#define T0IF                    INTCONbits.T0IF                 // bit 2, shadows bit in INTCONbits
#define TMR0IF                  INTCONbits.TMR0IF               // bit 2, shadows bit in INTCONbits
#define GPIE                    INTCONbits.GPIE                 // bit 3
#define INTE                    INTCONbits.INTE                 // bit 4
#define T0IE                    INTCONbits.T0IE                 // bit 5, shadows bit in INTCONbits
#define TMR0IE                  INTCONbits.TMR0IE               // bit 5, shadows bit in INTCONbits
#define PEIE                    INTCONbits.PEIE                 // bit 6
#define GIE                     INTCONbits.GIE                  // bit 7

#define IOC0                    IOCbits.IOC0                    // bit 0, shadows bit in IOCbits
#define IOCA0                   IOCbits.IOCA0                   // bit 0, shadows bit in IOCbits
#define IOC1                    IOCbits.IOC1                    // bit 1, shadows bit in IOCbits
#define IOCA1                   IOCbits.IOCA1                   // bit 1, shadows bit in IOCbits
#define IOC2                    IOCbits.IOC2                    // bit 2, shadows bit in IOCbits
#define IOCA2                   IOCbits.IOCA2                   // bit 2, shadows bit in IOCbits
#define IOC3                    IOCbits.IOC3                    // bit 3, shadows bit in IOCbits
#define IOCA3                   IOCbits.IOCA3                   // bit 3, shadows bit in IOCbits
#define IOC4                    IOCbits.IOC4                    // bit 4, shadows bit in IOCbits
#define IOCA4                   IOCbits.IOCA4                   // bit 4, shadows bit in IOCbits
#define IOC5                    IOCbits.IOC5                    // bit 5, shadows bit in IOCbits
#define IOCA5                   IOCbits.IOCA5                   // bit 5, shadows bit in IOCbits

#define PS0                     OPTION_REGbits.PS0              // bit 0
#define PS1                     OPTION_REGbits.PS1              // bit 1
#define PS2                     OPTION_REGbits.PS2              // bit 2
#define PSA                     OPTION_REGbits.PSA              // bit 3
#define T0SE                    OPTION_REGbits.T0SE             // bit 4
#define T0CS                    OPTION_REGbits.T0CS             // bit 5
#define INTEDG                  OPTION_REGbits.INTEDG           // bit 6
#define NOT_GPPU                OPTION_REGbits.NOT_GPPU         // bit 7

#define TUN0                    OSCTUNEbits.TUN0                // bit 0
#define TUN1                    OSCTUNEbits.TUN1                // bit 1
#define TUN2                    OSCTUNEbits.TUN2                // bit 2
#define TUN3                    OSCTUNEbits.TUN3                // bit 3
#define TUN4                    OSCTUNEbits.TUN4                // bit 4

#define NOT_BOR                 PCONbits.NOT_BOR                // bit 0
#define NOT_POR                 PCONbits.NOT_POR                // bit 1

#define TMR1IE                  PIE1bits.TMR1IE                 // bit 0
#define TMR2IE                  PIE1bits.TMR2IE                 // bit 1
#define CMIE                    PIE1bits.CMIE                   // bit 3, shadows bit in PIE1bits
#define C1IE                    PIE1bits.C1IE                   // bit 3, shadows bit in PIE1bits
#define CCP1IE                  PIE1bits.CCP1IE                 // bit 5, shadows bit in PIE1bits
#define CCPIE                   PIE1bits.CCPIE                  // bit 5, shadows bit in PIE1bits
#define ECCPIE                  PIE1bits.ECCPIE                 // bit 5, shadows bit in PIE1bits
#define ADIE                    PIE1bits.ADIE                   // bit 6

#define TMR1IF                  PIR1bits.TMR1IF                 // bit 0
#define TMR2IF                  PIR1bits.TMR2IF                 // bit 1
#define CMIF                    PIR1bits.CMIF                   // bit 3, shadows bit in PIR1bits
#define C1IF                    PIR1bits.C1IF                   // bit 3, shadows bit in PIR1bits
#define CCP1IF                  PIR1bits.CCP1IF                 // bit 5, shadows bit in PIR1bits
#define CCPIF                   PIR1bits.CCPIF                  // bit 5, shadows bit in PIR1bits
#define ECCPIF                  PIR1bits.ECCPIF                 // bit 5, shadows bit in PIR1bits
#define ADIF                    PIR1bits.ADIF                   // bit 6

#define PMADRH0                 PMADRHbits.PMADRH0              // bit 0
#define PMADRH1                 PMADRHbits.PMADRH1              // bit 1
#define PMADRH2                 PMADRHbits.PMADRH2              // bit 2

#define PMADRL0                 PMADRLbits.PMADRL0              // bit 0
#define PMADRL1                 PMADRLbits.PMADRL1              // bit 1
#define PMADRL2                 PMADRLbits.PMADRL2              // bit 2
#define PMADRL3                 PMADRLbits.PMADRL3              // bit 3
#define PMADRL4                 PMADRLbits.PMADRL4              // bit 4
#define PMADRL5                 PMADRLbits.PMADRL5              // bit 5
#define PMADRL6                 PMADRLbits.PMADRL6              // bit 6
#define PMADRL7                 PMADRLbits.PMADRL7              // bit 7

#define RD                      PMCON1bits.RD                   // bit 0
#define WR                      PMCON1bits.WR                   // bit 1
#define WREN                    PMCON1bits.WREN                 // bit 2

#define PMDATL0                 PMDATLbits.PMDATL0              // bit 0
#define PMDATL1                 PMDATLbits.PMDATL1              // bit 1
#define PMDATL2                 PMDATLbits.PMDATL2              // bit 2
#define PMDATL3                 PMDATLbits.PMDATL3              // bit 3
#define PMDATL4                 PMDATLbits.PMDATL4              // bit 4
#define PMDATL5                 PMDATLbits.PMDATL5              // bit 5
#define PMDATL6                 PMDATLbits.PMDATL6              // bit 6
#define PMDATL7                 PMDATLbits.PMDATL7              // bit 7

#define PDC0                    PWM1CONbits.PDC0                // bit 0
#define PDC1                    PWM1CONbits.PDC1                // bit 1
#define PDC2                    PWM1CONbits.PDC2                // bit 2
#define PDC3                    PWM1CONbits.PDC3                // bit 3
#define PDC4                    PWM1CONbits.PDC4                // bit 4
#define PDC5                    PWM1CONbits.PDC5                // bit 5
#define PDC6                    PWM1CONbits.PDC6                // bit 6
#define PRSEN                   PWM1CONbits.PRSEN               // bit 7

#define C                       STATUSbits.C                    // bit 0
#define DC                      STATUSbits.DC                   // bit 1
#define Z                       STATUSbits.Z                    // bit 2
#define NOT_PD                  STATUSbits.NOT_PD               // bit 3
#define NOT_TO                  STATUSbits.NOT_TO               // bit 4
#define RP0                     STATUSbits.RP0                  // bit 5
#define RP1                     STATUSbits.RP1                  // bit 6
#define IRP                     STATUSbits.IRP                  // bit 7

#define TMR1ON                  T1CONbits.TMR1ON                // bit 0
#define TMR1CS                  T1CONbits.TMR1CS                // bit 1
#define NOT_T1SYNC              T1CONbits.NOT_T1SYNC            // bit 2
#define T1OSCEN                 T1CONbits.T1OSCEN               // bit 3
#define T1CKPS0                 T1CONbits.T1CKPS0               // bit 4
#define T1CKPS1                 T1CONbits.T1CKPS1               // bit 5
#define TMR1GE                  T1CONbits.TMR1GE                // bit 6
#define T1GINV                  T1CONbits.T1GINV                // bit 7

#define T2CKPS0                 T2CONbits.T2CKPS0               // bit 0
#define T2CKPS1                 T2CONbits.T2CKPS1               // bit 1
#define TMR2ON                  T2CONbits.TMR2ON                // bit 2
#define TOUTPS0                 T2CONbits.TOUTPS0               // bit 3
#define TOUTPS1                 T2CONbits.TOUTPS1               // bit 4
#define TOUTPS2                 T2CONbits.TOUTPS2               // bit 5
#define TOUTPS3                 T2CONbits.TOUTPS3               // bit 6

#define TRISIO0                 TRISAbits.TRISIO0               // bit 0, shadows bit in TRISAbits
#define TRISA0                  TRISAbits.TRISA0                // bit 0, shadows bit in TRISAbits
#define TRISIO1                 TRISAbits.TRISIO1               // bit 1, shadows bit in TRISAbits
#define TRISA1                  TRISAbits.TRISA1                // bit 1, shadows bit in TRISAbits
#define TRISIO2                 TRISAbits.TRISIO2               // bit 2, shadows bit in TRISAbits
#define TRISA2                  TRISAbits.TRISA2                // bit 2, shadows bit in TRISAbits
#define TRISIO3                 TRISAbits.TRISIO3               // bit 3, shadows bit in TRISAbits
#define TRISA3                  TRISAbits.TRISA3                // bit 3, shadows bit in TRISAbits
#define TRISIO4                 TRISAbits.TRISIO4               // bit 4, shadows bit in TRISAbits
#define TRISA4                  TRISAbits.TRISA4                // bit 4, shadows bit in TRISAbits
#define TRISIO5                 TRISAbits.TRISIO5               // bit 5, shadows bit in TRISAbits
#define TRISA5                  TRISAbits.TRISA5                // bit 5, shadows bit in TRISAbits

#define VR0                     VRCONbits.VR0                   // bit 0
#define VR1                     VRCONbits.VR1                   // bit 1
#define VR2                     VRCONbits.VR2                   // bit 2
#define VR3                     VRCONbits.VR3                   // bit 3
#define FVREN                   VRCONbits.FVREN                 // bit 4
#define VRR                     VRCONbits.VRR                   // bit 5
#define CMVREN                  VRCONbits.CMVREN                // bit 7, shadows bit in VRCONbits
#define C1VREN                  VRCONbits.C1VREN                // bit 7, shadows bit in VRCONbits

#define WPU0                    WPUbits.WPU0                    // bit 0, shadows bit in WPUbits
#define WPUA0                   WPUbits.WPUA0                   // bit 0, shadows bit in WPUbits
#define WPU1                    WPUbits.WPU1                    // bit 1, shadows bit in WPUbits
#define WPUA1                   WPUbits.WPUA1                   // bit 1, shadows bit in WPUbits
#define WPU2                    WPUbits.WPU2                    // bit 2, shadows bit in WPUbits
#define WPUA2                   WPUbits.WPUA2                   // bit 2, shadows bit in WPUbits
#define WPU4                    WPUbits.WPU4                    // bit 4, shadows bit in WPUbits
#define WPUA4                   WPUbits.WPUA4                   // bit 4, shadows bit in WPUbits
#define WPU5                    WPUbits.WPU5                    // bit 5, shadows bit in WPUbits
#define WPUA5                   WPUbits.WPUA5                   // bit 5, shadows bit in WPUbits

#endif // #ifndef NO_BIT_DEFINES

#endif // #ifndef __PIC12F617_H__
