-- =================================================== -- Title: JalV2 device include file for PIC 16F1827 -- -- Author: Rob Hamerling, Copyright (c) 2008..2010, all rights reserved. -- -- Adapted-by: -- -- Compiler: 2.4n -- -- This file is part of jallib (http://jallib.googlecode.com) -- Released under the ZLIB license (http://www.opensource.org/licenses/zlib-license.html) -- -- Description: -- Device include file for pic16f1827, containing: -- - Declaration of ports and pins of the chip. -- - Procedures for shadowing of ports and pins -- to circumvent the read-modify-write problem. -- - Symbolic definitions for configuration bits (fuses) -- - Some device dependent procedures for common -- operations, like: -- . enable_digital_io() -- -- Sources: -- - x:/mplab856/mplab ide/device/pic16f1827.dev -- - x:/mplab856/MPASM Suite/LKR/16f1827_g.lkr -- -- Notes: -- - Created with Dev2Jal Rexx script version 0.1.05 -- - File creation date/time: 5 Sep 2010 09:06 -- -- =================================================== -- const word DEVICE_ID = 0x27A0 const byte PICTYPE[] = "16F1827" const byte DATASHEET[] = "41391" const byte PGMSPEC[] = "41390" -- -- Vdd Range: 1.800-5.500 Nominal: 5.000 -- Vpp Range: 8.000-9.000 Default: 9.000 -- -- --------------------------------------------------- -- include chipdef_jallib -- common constants -- pragma target cpu PIC_14H -- (banks=32) pragma target chip 16f1827 pragma target bank 0x0080 pragma target page 0x0800 pragma stack 16 pragma code 4096 -- (words) pragma eeprom 0xF000,256 pragma ID 0x8000,4 pragma data 0x20-0x6F,0xA0-0xEF,0x120-0x16F,0x1A0-0x1EF,0x220-0x24F pragma shared 0x70-0x7F -- var volatile byte _pic_accum shared at 0x07F -- (compiler) -- const word _FUSES_CT = 2 const word _FUSE_BASE[_FUSES_CT] = { 0x8007,0x8008 } const word _FUSES[_FUSES_CT] = { 0b_0011_1111_1111_1111, -- CONFIG1 0b_0011_1111_1111_1111 } -- CONFIG2 -- -- ------------------------------------------------ var volatile byte INDF0 shared at 0x000 var volatile byte _ind shared at 0x000 -- (compiler) -- ------------------------------------------------ var volatile byte INDF1 shared at 0x001 -- ------------------------------------------------ var volatile byte PCL shared at 0x002 var volatile byte _pcl shared at 0x002 -- (compiler) -- ------------------------------------------------ var volatile byte STATUS shared at 0x003 var volatile bit STATUS_NTO shared at STATUS : 4 var volatile bit STATUS_NPD shared at STATUS : 3 var volatile bit STATUS_Z shared at STATUS : 2 var volatile bit STATUS_DC shared at STATUS : 1 var volatile bit STATUS_C shared at STATUS : 0 var volatile byte _status shared at 0x003 -- (compiler) const byte _not_to = 4 -- (compiler) const byte _not_pd = 3 -- (compiler) const byte _z = 2 -- (compiler) const byte _dc = 1 -- (compiler) const byte _c = 0 -- (compiler) -- ------------------------------------------------ var volatile word FSR0 shared at 0x004 -- ------------------------------------------------ var volatile byte FSR0L shared at 0x004 var volatile byte _fsr0l shared at 0x004 -- (compiler) -- ------------------------------------------------ var volatile byte FSR0H shared at 0x005 var volatile byte _fsr0h shared at 0x005 -- (compiler) -- ------------------------------------------------ var volatile word FSR1 shared at 0x006 -- ------------------------------------------------ var volatile byte FSR1L shared at 0x006 var volatile byte _fsr1l shared at 0x006 -- (compiler) -- ------------------------------------------------ var volatile byte FSR1H shared at 0x007 var volatile byte _fsr1h shared at 0x007 -- (compiler) -- ------------------------------------------------ var volatile byte BSR shared at 0x008 var volatile bit BSR_BSR4 shared at BSR : 4 var volatile bit BSR_BSR3 shared at BSR : 3 var volatile bit BSR_BSR2 shared at BSR : 2 var volatile bit BSR_BSR1 shared at BSR : 1 var volatile bit BSR_BSR0 shared at BSR : 0 var volatile byte _bsr shared at 0x008 -- (compiler) -- ------------------------------------------------ var volatile byte WREG shared at 0x009 var volatile bit*8 WREG_WREG0 shared at WREG : 0 -- ------------------------------------------------ var volatile byte PCLATH shared at 0x00A var volatile bit*7 PCLATH_PCLATH shared at PCLATH : 0 var volatile byte _pclath shared at 0x00A -- (compiler) -- ------------------------------------------------ var volatile byte INTCON shared at 0x00B var volatile bit INTCON_GIE shared at INTCON : 7 var volatile bit INTCON_PEIE shared at INTCON : 6 var volatile bit INTCON_TMR0IE shared at INTCON : 5 var volatile bit INTCON_INTE shared at INTCON : 4 var volatile bit INTCON_IOCIE shared at INTCON : 3 var volatile bit INTCON_TMR0IF shared at INTCON : 2 var volatile bit INTCON_INTF shared at INTCON : 1 var volatile bit INTCON_IOCIF shared at INTCON : 0 -- ------------------------------------------------ var volatile byte PORTA at 0x00C var volatile bit PORTA_RA7 at PORTA : 7 var volatile bit PORTA_RA6 at PORTA : 6 var volatile bit PORTA_RA5 at PORTA : 5 var volatile bit PORTA_RA4 at PORTA : 4 var volatile bit PORTA_RA3 at PORTA : 3 var volatile bit PORTA_RA2 at PORTA : 2 var volatile bit PORTA_RA1 at PORTA : 1 var volatile bit PORTA_RA0 at PORTA : 0 -- ------------------------------------------------ var volatile byte PORTB at 0x00D var volatile bit PORTB_RB7 at PORTB : 7 var volatile bit PORTB_RB6 at PORTB : 6 var volatile bit PORTB_RB5 at PORTB : 5 var volatile bit PORTB_RB4 at PORTB : 4 var volatile bit PORTB_RB3 at PORTB : 3 var volatile bit PORTB_RB2 at PORTB : 2 var volatile bit PORTB_RB1 at PORTB : 1 var volatile bit PORTB_RB0 at PORTB : 0 -- ------------------------------------------------ var volatile byte PIR1 at 0x011 var volatile bit PIR1_TMR1GIF at PIR1 : 7 var volatile bit PIR1_ADIF at PIR1 : 6 var volatile bit PIR1_RCIF at PIR1 : 5 var volatile bit PIR1_TXIF at PIR1 : 4 var volatile bit PIR1_SSP1IF at PIR1 : 3 var volatile bit PIR1_CCP1IF at PIR1 : 2 var volatile bit PIR1_TMR2IF at PIR1 : 1 var volatile bit PIR1_TMR1IF at PIR1 : 0 -- ------------------------------------------------ var volatile byte PIR2 at 0x012 var volatile bit PIR2_OSFIF at PIR2 : 7 var volatile bit PIR2_C2IF at PIR2 : 6 var volatile bit PIR2_C1IF at PIR2 : 5 var volatile bit PIR2_EEIF at PIR2 : 4 var volatile bit PIR2_BCL1IF at PIR2 : 3 var volatile bit PIR2_CCP2IF at PIR2 : 0 -- ------------------------------------------------ var volatile byte PIR3 at 0x013 var volatile bit PIR3_CCP4IF at PIR3 : 5 var volatile bit PIR3_CCP3IF at PIR3 : 4 var volatile bit PIR3_TMR6IF at PIR3 : 3 var volatile bit PIR3_TMR4IF at PIR3 : 1 -- ------------------------------------------------ var volatile byte PIR4 at 0x014 var volatile bit PIR4_BCL2IF at PIR4 : 1 var volatile bit PIR4_SSP2IF at PIR4 : 0 -- ------------------------------------------------ var volatile byte TMR0 at 0x015 -- ------------------------------------------------ var volatile word TMR1 at 0x016 -- ------------------------------------------------ var volatile byte TMR1L at 0x016 -- ------------------------------------------------ var volatile byte TMR1H at 0x017 -- ------------------------------------------------ var volatile byte T1CON at 0x018 var volatile bit*2 T1CON_TMR1CS at T1CON : 6 var volatile bit*2 T1CON_T1CKPS at T1CON : 4 var volatile bit T1CON_T1OSCEN at T1CON : 3 var volatile bit T1CON_NT1SYNC at T1CON : 2 var volatile bit T1CON_TMR1ON at T1CON : 0 -- ------------------------------------------------ var volatile byte T1GCON at 0x019 var volatile bit T1GCON_TMR1GE at T1GCON : 7 var volatile bit T1GCON_T1GPOL at T1GCON : 6 var volatile bit T1GCON_T1GTM at T1GCON : 5 var volatile bit T1GCON_T1GSPM at T1GCON : 4 var volatile bit T1GCON_T1GGO at T1GCON : 3 var volatile bit T1GCON_T1GVAL at T1GCON : 2 var volatile bit T1GCON_T1GSS1 at T1GCON : 1 var volatile bit T1GCON_T1GSS0 at T1GCON : 0 -- ------------------------------------------------ var volatile byte TMR2 at 0x01A -- ------------------------------------------------ var volatile byte PR2 at 0x01B -- ------------------------------------------------ var volatile byte T2CON at 0x01C var volatile bit*4 T2CON_T2OUTPS at T2CON : 3 var volatile bit T2CON_TMR2ON at T2CON : 2 var volatile bit*2 T2CON_T2CKPS at T2CON : 0 -- ------------------------------------------------ var volatile byte CPSCON0 at 0x01E var volatile bit CPSCON0_CPSON at CPSCON0 : 7 var volatile bit CPSCON0_CPSRNG1 at CPSCON0 : 3 var volatile bit CPSCON0_CPSRNG0 at CPSCON0 : 2 var volatile bit CPSCON0_CPSOUT at CPSCON0 : 1 var volatile bit CPSCON0_T0XCS at CPSCON0 : 0 -- ------------------------------------------------ var volatile byte CPSCON1 at 0x01F var volatile bit CPSCON1_CPSCH3 at CPSCON1 : 3 var volatile bit CPSCON1_CPSCH2 at CPSCON1 : 2 var volatile bit CPSCON1_CPSCH1 at CPSCON1 : 1 var volatile bit CPSCON1_CPSCH0 at CPSCON1 : 0 -- ------------------------------------------------ var volatile byte TRISA at 0x08C var volatile byte PORTA_direction at TRISA -- procedure PORTA_low_direction'put(byte in x) is pragma inline TRISA = (TRISA & 0xF0) | (x & 0x0F) end procedure function PORTA_low_direction'get() return byte is pragma inline return (TRISA & 0x0F) end function -- procedure PORTA_high_direction'put(byte in x) is pragma inline TRISA = (TRISA & 0x0F) | (x << 4) end procedure function PORTA_high_direction'get() return byte is pragma inline return (TRISA >> 4) end function -- var volatile bit TRISA_TRISA7 at TRISA : 7 var volatile bit pin_A7_direction at TRISA : 7 alias pin_OSC1_direction is pin_A7_direction alias pin_CLKIN_direction is pin_A7_direction alias pin_P1C_RA7_direction is pin_A7_direction alias pin_CCP2_RA7_direction is pin_A7_direction alias pin_P2A_RA7_direction is pin_A7_direction -- var volatile bit TRISA_TRISA6 at TRISA : 6 var volatile bit pin_A6_direction at TRISA : 6 alias pin_OSC2_direction is pin_A6_direction alias pin_CLKOUT_direction is pin_A6_direction alias pin_CLKR_direction is pin_A6_direction alias pin_P1D_RA6_direction is pin_A6_direction alias pin_P2B_RA6_direction is pin_A6_direction alias pin_SDO_direction is pin_A6_direction -- var volatile bit TRISA_TRISA5 at TRISA : 5 var volatile bit pin_A5_direction at TRISA : 5 alias pin_SS1_RA5_direction is pin_A5_direction alias pin_MCLR_direction is pin_A5_direction alias pin_VPP_direction is pin_A5_direction -- var volatile bit TRISA_TRISA4 at TRISA : 4 var volatile bit pin_A4_direction at TRISA : 4 alias pin_AN4_direction is pin_A4_direction alias pin_CPS4_direction is pin_A4_direction alias pin_C2OUT_direction is pin_A4_direction alias pin_T0CKI_direction is pin_A4_direction alias pin_CCP4_direction is pin_A4_direction alias pin_SRNQ_direction is pin_A4_direction -- var volatile bit TRISA_TRISA3 at TRISA : 3 var volatile bit pin_A3_direction at TRISA : 3 alias pin_AN3_direction is pin_A3_direction alias pin_CPS3_direction is pin_A3_direction alias pin_C12IN3_NEG_direction is pin_A3_direction alias pin_VREF_POS_direction is pin_A3_direction alias pin_C1OUT_direction is pin_A3_direction alias pin_CCP3_direction is pin_A3_direction alias pin_SRQ_direction is pin_A3_direction -- var volatile bit TRISA_TRISA2 at TRISA : 2 var volatile bit pin_A2_direction at TRISA : 2 alias pin_AN2_direction is pin_A2_direction alias pin_CPS2_direction is pin_A2_direction alias pin_C12IN2_NEG_direction is pin_A2_direction alias pin_C12IN_POS_direction is pin_A2_direction alias pin_VREF_NEG_direction is pin_A2_direction alias pin_DACOUT_direction is pin_A2_direction -- var volatile bit TRISA_TRISA1 at TRISA : 1 var volatile bit pin_A1_direction at TRISA : 1 alias pin_AN1_direction is pin_A1_direction alias pin_CPS1_direction is pin_A1_direction alias pin_C12IN1_NEG_direction is pin_A1_direction alias pin_SS2_direction is pin_A1_direction -- var volatile bit TRISA_TRISA0 at TRISA : 0 var volatile bit pin_A0_direction at TRISA : 0 alias pin_AN0_direction is pin_A0_direction alias pin_CPS0_direction is pin_A0_direction alias pin_C12IN0_NEG_direction is pin_A0_direction alias pin_SDO2_direction is pin_A0_direction -- -- ------------------------------------------------ var volatile byte TRISB at 0x08D var volatile byte PORTB_direction at TRISB -- procedure PORTB_low_direction'put(byte in x) is pragma inline TRISB = (TRISB & 0xF0) | (x & 0x0F) end procedure function PORTB_low_direction'get() return byte is pragma inline return (TRISB & 0x0F) end function -- procedure PORTB_high_direction'put(byte in x) is pragma inline TRISB = (TRISB & 0x0F) | (x << 4) end procedure function PORTB_high_direction'get() return byte is pragma inline return (TRISB >> 4) end function -- var volatile bit TRISB_TRISB7 at TRISB : 7 var volatile bit pin_B7_direction at TRISB : 7 alias pin_AN6_direction is pin_B7_direction alias pin_CPS6_direction is pin_B7_direction alias pin_T1OSO_direction is pin_B7_direction alias pin_P1D_RB7_direction is pin_B7_direction alias pin_P2B_RB7_direction is pin_B7_direction alias pin_MDCIN1_direction is pin_B7_direction alias pin_ICSPDAT_direction is pin_B7_direction -- var volatile bit TRISB_TRISB6 at TRISB : 6 var volatile bit pin_B6_direction at TRISB : 6 alias pin_AN5_direction is pin_B6_direction alias pin_CPS5_direction is pin_B6_direction alias pin_T1CKI_direction is pin_B6_direction alias pin_T1OSI_direction is pin_B6_direction alias pin_P1C_RB6_direction is pin_B6_direction alias pin_CCP2_RB6_direction is pin_B6_direction alias pin_P2A_RB6_direction is pin_B6_direction alias pin_ICSPCLK_direction is pin_B6_direction -- var volatile bit TRISB_TRISB5 at TRISB : 5 var volatile bit pin_B5_direction at TRISB : 5 alias pin_AN7_direction is pin_B5_direction alias pin_CPS7_direction is pin_B5_direction alias pin_P1B_direction is pin_B5_direction alias pin_TX_RB5_direction is pin_B5_direction alias pin_CK_RB5_direction is pin_B5_direction alias pin_SCL2_direction is pin_B5_direction alias pin_SS1_RB5_direction is pin_B5_direction -- var volatile bit TRISB_TRISB4 at TRISB : 4 var volatile bit pin_B4_direction at TRISB : 4 alias pin_AN8_direction is pin_B4_direction alias pin_CPS8_direction is pin_B4_direction alias pin_SCL1_direction is pin_B4_direction alias pin_SCK1_direction is pin_B4_direction alias pin_MDCIN2_direction is pin_B4_direction -- var volatile bit TRISB_TRISB3 at TRISB : 3 var volatile bit pin_B3_direction at TRISB : 3 alias pin_AN9_direction is pin_B3_direction alias pin_CPS9_direction is pin_B3_direction alias pin_MDOUT_direction is pin_B3_direction alias pin_CCP1_RB3_direction is pin_B3_direction alias pin_P1A_RB3_direction is pin_B3_direction -- var volatile bit TRISB_TRISB2 at TRISB : 2 var volatile bit pin_B2_direction at TRISB : 2 alias pin_AN10_direction is pin_B2_direction alias pin_CPS10_direction is pin_B2_direction alias pin_MDMIN_direction is pin_B2_direction alias pin_TX_RB2_direction is pin_B2_direction alias pin_CK_RB2_direction is pin_B2_direction alias pin_RX_RB2_direction is pin_B2_direction alias pin_DT_RB2_direction is pin_B2_direction alias pin_SDA2_direction is pin_B2_direction alias pin_SDI2_direction is pin_B2_direction alias pin_SDO1_direction is pin_B2_direction -- var volatile bit TRISB_TRISB1 at TRISB : 1 var volatile bit pin_B1_direction at TRISB : 1 alias pin_AN11_direction is pin_B1_direction alias pin_CPS11_direction is pin_B1_direction alias pin_RX_RB1_direction is pin_B1_direction alias pin_DT_RB1_direction is pin_B1_direction alias pin_SDA_direction is pin_B1_direction alias pin_SDI1_direction is pin_B1_direction -- var volatile bit TRISB_TRISB0 at TRISB : 0 var volatile bit pin_B0_direction at TRISB : 0 alias pin_SRI_direction is pin_B0_direction alias pin_T1G_direction is pin_B0_direction alias pin_CCP1_RB0_direction is pin_B0_direction alias pin_P1A_RB0_direction is pin_B0_direction alias pin_FLT0_direction is pin_B0_direction -- -- ------------------------------------------------ var volatile byte PIE1 at 0x091 var volatile bit PIE1_TMR1GIE at PIE1 : 7 var volatile bit PIE1_ADIE at PIE1 : 6 var volatile bit PIE1_RCIE at PIE1 : 5 var volatile bit PIE1_TXIE at PIE1 : 4 var volatile bit PIE1_SSP1IE at PIE1 : 3 var volatile bit PIE1_CCP1IE at PIE1 : 2 var volatile bit PIE1_TMR2IE at PIE1 : 1 var volatile bit PIE1_TMR1IE at PIE1 : 0 -- ------------------------------------------------ var volatile byte PIE2 at 0x092 var volatile bit PIE2_OSFIE at PIE2 : 7 var volatile bit PIE2_C2IE at PIE2 : 6 var volatile bit PIE2_C1IE at PIE2 : 5 var volatile bit PIE2_EEIE at PIE2 : 4 var volatile bit PIE2_BCL1IE at PIE2 : 3 var volatile bit PIE2_CCP2IE at PIE2 : 0 -- ------------------------------------------------ var volatile byte PIE3 at 0x093 var volatile bit PIE3_CCP4IE at PIE3 : 5 var volatile bit PIE3_CCP3IE at PIE3 : 4 var volatile bit PIE3_TMR6IE at PIE3 : 3 var volatile bit PIE3_TMR4IE at PIE3 : 1 -- ------------------------------------------------ var volatile byte PIE4 at 0x094 var volatile bit PIE4_BCL2IE at PIE4 : 1 var volatile bit PIE4_SSP2IE at PIE4 : 0 -- ------------------------------------------------ var volatile byte OPTION_REG at 0x095 var volatile bit OPTION_REG_NWPUEN at OPTION_REG : 7 var volatile bit OPTION_REG_INTEDG at OPTION_REG : 6 var volatile bit OPTION_REG_TMR0CS at OPTION_REG : 5 alias T0CON_T0CS is OPTION_REG_TMR0CS var volatile bit OPTION_REG_TMR0SE at OPTION_REG : 4 alias T0CON_T0SE is OPTION_REG_TMR0SE var volatile bit OPTION_REG_PSA at OPTION_REG : 3 alias T0CON_PSA is OPTION_REG_PSA var volatile bit*3 OPTION_REG_PS at OPTION_REG : 0 alias T0CON_T0PS is OPTION_REG_PS -- ------------------------------------------------ var volatile byte PCON at 0x096 var volatile bit PCON_STKOVF at PCON : 7 var volatile bit PCON_STKUNF at PCON : 6 var volatile bit PCON_NRMCLR at PCON : 3 var volatile bit PCON_NRI at PCON : 2 var volatile bit PCON_NPOR at PCON : 1 var volatile bit PCON_NBOR at PCON : 0 -- ------------------------------------------------ var volatile byte WDTCON at 0x097 var volatile bit*5 WDTCON_WDTPS at WDTCON : 1 var volatile bit WDTCON_SWDTEN at WDTCON : 0 -- ------------------------------------------------ var volatile byte OSCTUNE at 0x098 var volatile bit*6 OSCTUNE_TUN at OSCTUNE : 0 -- ------------------------------------------------ var volatile byte OSCCON at 0x099 var volatile bit OSCCON_SPLLEN at OSCCON : 7 var volatile bit*4 OSCCON_IRCF at OSCCON : 3 var volatile bit OSCCON_SCS1 at OSCCON : 1 var volatile bit OSCCON_SCS0 at OSCCON : 0 -- ------------------------------------------------ var volatile byte OSCSTAT at 0x09A var volatile bit OSCSTAT_T1OSCR at OSCSTAT : 7 var volatile bit OSCSTAT_PLLR at OSCSTAT : 6 var volatile bit OSCSTAT_OSTS at OSCSTAT : 5 var volatile bit OSCSTAT_HFIOFR at OSCSTAT : 4 var volatile bit OSCSTAT_HFIOFL at OSCSTAT : 3 var volatile bit OSCSTAT_MFIOFR at OSCSTAT : 2 var volatile bit OSCSTAT_LFIOFR at OSCSTAT : 1 var volatile bit OSCSTAT_HFIOFS at OSCSTAT : 0 -- ------------------------------------------------ var volatile word ADRES at 0x09B -- ------------------------------------------------ var volatile byte ADRESL at 0x09B -- ------------------------------------------------ var volatile byte ADRESH at 0x09C -- ------------------------------------------------ var volatile byte ADCON0 at 0x09D var volatile bit*5 ADCON0_CHS at ADCON0 : 2 var volatile bit ADCON0_GO at ADCON0 : 1 var volatile bit ADCON0_NDONE at ADCON0 : 1 var volatile bit ADCON0_ADON at ADCON0 : 0 -- ------------------------------------------------ var volatile byte ADCON1 at 0x09E var volatile bit ADCON1_ADFM at ADCON1 : 7 var volatile bit ADCON1_ADCS2 at ADCON1 : 6 var volatile bit ADCON1_ADCS1 at ADCON1 : 5 var volatile bit ADCON1_ADCS0 at ADCON1 : 4 var volatile bit ADCON1_ADNREF at ADCON1 : 2 var volatile bit ADCON1_ADPREF1 at ADCON1 : 1 var volatile bit ADCON1_ADPREF0 at ADCON1 : 0 -- ------------------------------------------------ var volatile byte LATA at 0x10C -- procedure PORTA'put(byte in x) is pragma inline LATA = x end procedure -- procedure PORTA_low'put(byte in x) is pragma inline LATA = (PORTA & 0xF0) | (x & 0x0F) end procedure function PORTA_low'get() return byte is pragma inline return (PORTA & 0x0F) end function -- procedure PORTA_high'put(byte in x) is pragma inline LATA = (PORTA & 0x0F) | (x << 4) end procedure function PORTA_high'get() return byte is pragma inline return (PORTA >> 4) end function -- var volatile bit LATA_LATA7 at LATA : 7 var volatile bit pin_A7 at PORTA : 7 alias pin_OSC1 is pin_A7 alias pin_CLKIN is pin_A7 alias pin_P1C_RA7 is pin_A7 alias pin_CCP2_RA7 is pin_A7 alias pin_P2A_RA7 is pin_A7 -- procedure pin_A7'put(bit in x at LATA : 7) is pragma inline end procedure -- var volatile bit LATA_LATA6 at LATA : 6 var volatile bit pin_A6 at PORTA : 6 alias pin_OSC2 is pin_A6 alias pin_CLKOUT is pin_A6 alias pin_CLKR is pin_A6 alias pin_P1D_RA6 is pin_A6 alias pin_P2B_RA6 is pin_A6 alias pin_SDO is pin_A6 -- procedure pin_A6'put(bit in x at LATA : 6) is pragma inline end procedure -- var volatile bit LATA_LATA4 at LATA : 4 var volatile bit pin_A4 at PORTA : 4 alias pin_AN4 is pin_A4 alias pin_CPS4 is pin_A4 alias pin_C2OUT is pin_A4 alias pin_T0CKI is pin_A4 alias pin_CCP4 is pin_A4 alias pin_SRNQ is pin_A4 -- procedure pin_A4'put(bit in x at LATA : 4) is pragma inline end procedure -- var volatile bit LATA_LATA3 at LATA : 3 var volatile bit pin_A3 at PORTA : 3 alias pin_AN3 is pin_A3 alias pin_CPS3 is pin_A3 alias pin_C12IN3_NEG is pin_A3 alias pin_VREF_POS is pin_A3 alias pin_C1OUT is pin_A3 alias pin_CCP3 is pin_A3 alias pin_SRQ is pin_A3 -- procedure pin_A3'put(bit in x at LATA : 3) is pragma inline end procedure -- var volatile bit LATA_LATA2 at LATA : 2 var volatile bit pin_A2 at PORTA : 2 alias pin_AN2 is pin_A2 alias pin_CPS2 is pin_A2 alias pin_C12IN2_NEG is pin_A2 alias pin_C12IN_POS is pin_A2 alias pin_VREF_NEG is pin_A2 alias pin_DACOUT is pin_A2 -- procedure pin_A2'put(bit in x at LATA : 2) is pragma inline end procedure -- var volatile bit LATA_LATA1 at LATA : 1 var volatile bit pin_A1 at PORTA : 1 alias pin_AN1 is pin_A1 alias pin_CPS1 is pin_A1 alias pin_C12IN1_NEG is pin_A1 alias pin_SS2 is pin_A1 -- procedure pin_A1'put(bit in x at LATA : 1) is pragma inline end procedure -- var volatile bit LATA_LATA0 at LATA : 0 var volatile bit pin_A0 at PORTA : 0 alias pin_AN0 is pin_A0 alias pin_CPS0 is pin_A0 alias pin_C12IN0_NEG is pin_A0 alias pin_SDO2 is pin_A0 -- procedure pin_A0'put(bit in x at LATA : 0) is pragma inline end procedure -- -- ------------------------------------------------ var volatile byte LATB at 0x10D -- procedure PORTB'put(byte in x) is pragma inline LATB = x end procedure -- procedure PORTB_low'put(byte in x) is pragma inline LATB = (PORTB & 0xF0) | (x & 0x0F) end procedure function PORTB_low'get() return byte is pragma inline return (PORTB & 0x0F) end function -- procedure PORTB_high'put(byte in x) is pragma inline LATB = (PORTB & 0x0F) | (x << 4) end procedure function PORTB_high'get() return byte is pragma inline return (PORTB >> 4) end function -- var volatile bit LATB_LATB7 at LATB : 7 var volatile bit pin_B7 at PORTB : 7 alias pin_AN6 is pin_B7 alias pin_CPS6 is pin_B7 alias pin_T1OSO is pin_B7 alias pin_P1D_RB7 is pin_B7 alias pin_P2B_RB7 is pin_B7 alias pin_MDCIN1 is pin_B7 alias pin_ICSPDAT is pin_B7 -- procedure pin_B7'put(bit in x at LATB : 7) is pragma inline end procedure -- var volatile bit LATB_LATB6 at LATB : 6 var volatile bit pin_B6 at PORTB : 6 alias pin_AN5 is pin_B6 alias pin_CPS5 is pin_B6 alias pin_T1CKI is pin_B6 alias pin_T1OSI is pin_B6 alias pin_P1C_RB6 is pin_B6 alias pin_CCP2_RB6 is pin_B6 alias pin_P2A_RB6 is pin_B6 alias pin_ICSPCLK is pin_B6 -- procedure pin_B6'put(bit in x at LATB : 6) is pragma inline end procedure -- var volatile bit LATB_LATB5 at LATB : 5 var volatile bit pin_B5 at PORTB : 5 alias pin_AN7 is pin_B5 alias pin_CPS7 is pin_B5 alias pin_P1B is pin_B5 alias pin_TX_RB5 is pin_B5 alias pin_CK_RB5 is pin_B5 alias pin_SCL2 is pin_B5 alias pin_SS1_RB5 is pin_B5 -- procedure pin_B5'put(bit in x at LATB : 5) is pragma inline end procedure -- var volatile bit LATB_LATB4 at LATB : 4 var volatile bit pin_B4 at PORTB : 4 alias pin_AN8 is pin_B4 alias pin_CPS8 is pin_B4 alias pin_SCL1 is pin_B4 alias pin_SCK1 is pin_B4 alias pin_MDCIN2 is pin_B4 -- procedure pin_B4'put(bit in x at LATB : 4) is pragma inline end procedure -- var volatile bit LATB_LATB3 at LATB : 3 var volatile bit pin_B3 at PORTB : 3 alias pin_AN9 is pin_B3 alias pin_CPS9 is pin_B3 alias pin_MDOUT is pin_B3 alias pin_CCP1_RB3 is pin_B3 alias pin_P1A_RB3 is pin_B3 -- procedure pin_B3'put(bit in x at LATB : 3) is pragma inline end procedure -- var volatile bit LATB_LATB2 at LATB : 2 var volatile bit pin_B2 at PORTB : 2 alias pin_AN10 is pin_B2 alias pin_CPS10 is pin_B2 alias pin_MDMIN is pin_B2 alias pin_TX_RB2 is pin_B2 alias pin_CK_RB2 is pin_B2 alias pin_RX_RB2 is pin_B2 alias pin_DT_RB2 is pin_B2 alias pin_SDA2 is pin_B2 alias pin_SDI2 is pin_B2 alias pin_SDO1 is pin_B2 -- procedure pin_B2'put(bit in x at LATB : 2) is pragma inline end procedure -- var volatile bit LATB_LATB1 at LATB : 1 var volatile bit pin_B1 at PORTB : 1 alias pin_AN11 is pin_B1 alias pin_CPS11 is pin_B1 alias pin_RX_RB1 is pin_B1 alias pin_DT_RB1 is pin_B1 alias pin_SDA is pin_B1 alias pin_SDI1 is pin_B1 -- procedure pin_B1'put(bit in x at LATB : 1) is pragma inline end procedure -- var volatile bit LATB_LATB0 at LATB : 0 var volatile bit pin_B0 at PORTB : 0 alias pin_SRI is pin_B0 alias pin_T1G is pin_B0 alias pin_CCP1_RB0 is pin_B0 alias pin_P1A_RB0 is pin_B0 alias pin_FLT0 is pin_B0 -- procedure pin_B0'put(bit in x at LATB : 0) is pragma inline end procedure -- -- ------------------------------------------------ var volatile byte CM1CON0 at 0x111 var volatile bit CM1CON0_C1ON at CM1CON0 : 7 var volatile bit CM1CON0_C1OUT at CM1CON0 : 6 var volatile bit CM1CON0_C1OE at CM1CON0 : 5 var volatile bit CM1CON0_C1POL at CM1CON0 : 4 var volatile bit CM1CON0_C1SP at CM1CON0 : 2 var volatile bit CM1CON0_C1HYS at CM1CON0 : 1 var volatile bit CM1CON0_C1SYNC at CM1CON0 : 0 -- ------------------------------------------------ var volatile byte CM1CON1 at 0x112 var volatile bit CM1CON1_C1INTP at CM1CON1 : 7 var volatile bit CM1CON1_C1INTN at CM1CON1 : 6 var volatile bit CM1CON1_C1PCH1 at CM1CON1 : 5 var volatile bit CM1CON1_C1PCH0 at CM1CON1 : 4 var volatile bit CM1CON1_C1NCH1 at CM1CON1 : 1 var volatile bit CM1CON1_C1NCH0 at CM1CON1 : 0 -- ------------------------------------------------ var volatile byte CM2CON0 at 0x113 var volatile bit CM2CON0_C2ON at CM2CON0 : 7 var volatile bit CM2CON0_C2OUT at CM2CON0 : 6 var volatile bit CM2CON0_C2OE at CM2CON0 : 5 var volatile bit CM2CON0_C2POL at CM2CON0 : 4 var volatile bit CM2CON0_C2SP at CM2CON0 : 2 var volatile bit CM2CON0_C2HYS at CM2CON0 : 1 var volatile bit CM2CON0_C2SYNC at CM2CON0 : 0 -- ------------------------------------------------ var volatile byte CM2CON1 at 0x114 var volatile bit CM2CON1_C2INTP at CM2CON1 : 7 var volatile bit CM2CON1_C2INTN at CM2CON1 : 6 var volatile bit CM2CON1_C2PCH1 at CM2CON1 : 5 var volatile bit CM2CON1_C2PCH0 at CM2CON1 : 4 var volatile bit CM2CON1_C2NCH1 at CM2CON1 : 1 var volatile bit CM2CON1_C2NCH0 at CM2CON1 : 0 -- ------------------------------------------------ var volatile byte CMOUT at 0x115 var volatile bit CMOUT_MC2OUT at CMOUT : 1 var volatile bit CMOUT_MC1OUT at CMOUT : 0 -- ------------------------------------------------ var volatile byte BORCON at 0x116 var volatile bit BORCON_SBOREN at BORCON : 7 var volatile bit BORCON_BORRDY at BORCON : 0 -- ------------------------------------------------ var volatile byte FVRCON at 0x117 var volatile bit FVRCON_FVREN at FVRCON : 7 var volatile bit FVRCON_FVRRDY at FVRCON : 6 var volatile bit FVRCON_CDAFVR1 at FVRCON : 3 var volatile bit FVRCON_CDAFVR0 at FVRCON : 2 var volatile bit FVRCON_ADFVR1 at FVRCON : 1 var volatile bit FVRCON_ADFVR0 at FVRCON : 0 -- ------------------------------------------------ var volatile byte DACCON0 at 0x118 var volatile bit DACCON0_DACEN at DACCON0 : 7 var volatile bit DACCON0_DACLPS at DACCON0 : 6 var volatile bit DACCON0_DACOE at DACCON0 : 5 var volatile bit DACCON0_DACPSS1 at DACCON0 : 3 var volatile bit DACCON0_DACPSS0 at DACCON0 : 2 var volatile bit DACCON0_DACNSS at DACCON0 : 0 -- ------------------------------------------------ var volatile byte DACCON1 at 0x119 var volatile bit DACCON1_DACR4 at DACCON1 : 4 var volatile bit DACCON1_DACR3 at DACCON1 : 3 var volatile bit DACCON1_DACR2 at DACCON1 : 2 var volatile bit DACCON1_DACR1 at DACCON1 : 1 var volatile bit DACCON1_DACR0 at DACCON1 : 0 -- ------------------------------------------------ var volatile byte SRCON0 at 0x11A var volatile bit SRCON0_SRLEN at SRCON0 : 7 var volatile bit SRCON0_SRCLK2 at SRCON0 : 6 var volatile bit SRCON0_SRCLK1 at SRCON0 : 5 var volatile bit SRCON0_SRCLK0 at SRCON0 : 4 var volatile bit SRCON0_SRQEN at SRCON0 : 3 var volatile bit SRCON0_SRNQEN at SRCON0 : 2 var volatile bit SRCON0_SRPS at SRCON0 : 1 var volatile bit SRCON0_SRPR at SRCON0 : 0 -- ------------------------------------------------ var volatile byte SRCON1 at 0x11B var volatile bit SRCON1_SRSPE at SRCON1 : 7 var volatile bit SRCON1_SRSCKE at SRCON1 : 6 var volatile bit SRCON1_SRSC2E at SRCON1 : 5 var volatile bit SRCON1_SRSC1E at SRCON1 : 4 var volatile bit SRCON1_SRRPE at SRCON1 : 3 var volatile bit SRCON1_SRRCKE at SRCON1 : 2 var volatile bit SRCON1_SRRC2E at SRCON1 : 1 var volatile bit SRCON1_SRRC1E at SRCON1 : 0 -- ------------------------------------------------ var volatile byte APFCON0 at 0x11D var volatile bit APFCON0_RXDTSEL at APFCON0 : 7 var volatile bit APFCON0_SDO1SEL at APFCON0 : 6 var volatile bit APFCON0_SS1SEL at APFCON0 : 5 var volatile bit APFCON0_P2BSEL at APFCON0 : 4 var volatile bit APFCON0_CCP2SEL at APFCON0 : 3 var volatile bit APFCON0_P1DSEL at APFCON0 : 2 var volatile bit APFCON0_P1CSEL at APFCON0 : 1 var volatile bit APFCON0_CCP1SEL at APFCON0 : 0 -- ------------------------------------------------ var volatile byte APFCON1 at 0x11E var volatile bit APFCON1_TXCKSEL at APFCON1 : 0 -- ------------------------------------------------ var volatile byte ANSELA at 0x18C var volatile bit JANSEL_ANS4 at ANSELA : 4 var volatile bit JANSEL_ANS3 at ANSELA : 3 var volatile bit JANSEL_ANS2 at ANSELA : 2 var volatile bit JANSEL_ANS1 at ANSELA : 1 var volatile bit JANSEL_ANS0 at ANSELA : 0 -- ------------------------------------------------ var volatile byte ANSELB at 0x18D var volatile bit JANSEL_ANS6 at ANSELB : 7 var volatile bit JANSEL_ANS5 at ANSELB : 6 var volatile bit JANSEL_ANS7 at ANSELB : 5 var volatile bit JANSEL_ANS8 at ANSELB : 4 var volatile bit JANSEL_ANS9 at ANSELB : 3 var volatile bit JANSEL_ANS10 at ANSELB : 2 var volatile bit JANSEL_ANS11 at ANSELB : 1 -- ------------------------------------------------ var volatile word EEADR at 0x191 -- ------------------------------------------------ var volatile byte EEADRL at 0x191 -- ------------------------------------------------ var volatile byte EEADRH at 0x192 var volatile bit*7 EEADRH_EEADRH at EEADRH : 0 -- ------------------------------------------------ var volatile word EEDAT at 0x193 -- ------------------------------------------------ var volatile byte EEDATL at 0x193 -- ------------------------------------------------ var volatile byte EEDATH at 0x194 var volatile bit*6 EEDATH_EEDATH at EEDATH : 0 -- ------------------------------------------------ var volatile byte EECON1 at 0x195 var volatile bit EECON1_EEPGD at EECON1 : 7 var volatile bit EECON1_CFGS at EECON1 : 6 var volatile bit EECON1_LWLO at EECON1 : 5 var volatile bit EECON1_FREE at EECON1 : 4 var volatile bit EECON1_WRERR at EECON1 : 3 var volatile bit EECON1_WREN at EECON1 : 2 var volatile bit EECON1_WR at EECON1 : 1 var volatile bit EECON1_RD at EECON1 : 0 -- ------------------------------------------------ var volatile byte EECON2 at 0x196 -- ------------------------------------------------ var volatile byte RCREG at 0x199 -- ------------------------------------------------ var volatile byte TXREG at 0x19A -- ------------------------------------------------ var volatile byte SPBRGL at 0x19B alias SPBRG is SPBRGL -- ------------------------------------------------ var volatile byte SPBRGH at 0x19C -- ------------------------------------------------ var volatile byte RCSTA at 0x19D var volatile bit RCSTA_SPEN at RCSTA : 7 var volatile bit RCSTA_RX9 at RCSTA : 6 var volatile bit RCSTA_SREN at RCSTA : 5 var volatile bit RCSTA_CREN at RCSTA : 4 var volatile bit RCSTA_ADDEN at RCSTA : 3 var volatile bit RCSTA_FERR at RCSTA : 2 var volatile bit RCSTA_OERR at RCSTA : 1 var volatile bit RCSTA_RX9D at RCSTA : 0 -- ------------------------------------------------ var volatile byte TXSTA at 0x19E var volatile bit TXSTA_CSRC at TXSTA : 7 var volatile bit TXSTA_TX9 at TXSTA : 6 var volatile bit TXSTA_TXEN at TXSTA : 5 var volatile bit TXSTA_SYNC at TXSTA : 4 var volatile bit TXSTA_SENDB at TXSTA : 3 var volatile bit TXSTA_BRGH at TXSTA : 2 var volatile bit TXSTA_TRMT at TXSTA : 1 var volatile bit TXSTA_TX9D at TXSTA : 0 -- ------------------------------------------------ var volatile byte BAUDCON at 0x19F var volatile bit BAUDCON_ABDOVF at BAUDCON : 7 var volatile bit BAUDCON_RCIDL at BAUDCON : 6 var volatile bit BAUDCON_SCKP at BAUDCON : 4 var volatile bit BAUDCON_BRG16 at BAUDCON : 3 var volatile bit BAUDCON_WUE at BAUDCON : 1 var volatile bit BAUDCON_ABDEN at BAUDCON : 0 -- ------------------------------------------------ var volatile byte WPUA at 0x20C var volatile bit WPUA_WPUA5 at WPUA : 5 -- ------------------------------------------------ var volatile byte WPUB at 0x20D var volatile bit WPUB_WPUB7 at WPUB : 7 var volatile bit WPUB_WPUB6 at WPUB : 6 var volatile bit WPUB_WPUB5 at WPUB : 5 var volatile bit WPUB_WPUB4 at WPUB : 4 var volatile bit WPUB_WPUB3 at WPUB : 3 var volatile bit WPUB_WPUB2 at WPUB : 2 var volatile bit WPUB_WPUB1 at WPUB : 1 var volatile bit WPUB_WPUB0 at WPUB : 0 -- ------------------------------------------------ var volatile byte SSP1BUF at 0x211 var volatile bit*8 SSP1BUF_SSPBUF at SSP1BUF : 0 -- ------------------------------------------------ var volatile byte SSP1ADD at 0x212 var volatile bit*8 SSP1ADD_SSPADD at SSP1ADD : 0 -- ------------------------------------------------ var volatile byte SSP1MSK at 0x213 var volatile bit*8 SSP1MSK_SSPMSK at SSP1MSK : 0 -- ------------------------------------------------ var volatile byte SSP1STAT at 0x214 var volatile bit SSP1STAT_SMP at SSP1STAT : 7 var volatile bit SSP1STAT_CKE at SSP1STAT : 6 var volatile bit SSP1STAT_D at SSP1STAT : 5 var volatile bit SSP1STAT_NA at SSP1STAT : 5 var volatile bit SSP1STAT_P at SSP1STAT : 4 var volatile bit SSP1STAT_S at SSP1STAT : 3 var volatile bit SSP1STAT_R at SSP1STAT : 2 var volatile bit SSP1STAT_NW at SSP1STAT : 2 var volatile bit SSP1STAT_UA at SSP1STAT : 1 var volatile bit SSP1STAT_BF at SSP1STAT : 0 -- ------------------------------------------------ var volatile byte SSP1CON1 at 0x215 var volatile bit SSP1CON1_WCOL at SSP1CON1 : 7 var volatile bit SSP1CON1_SSPOV at SSP1CON1 : 6 var volatile bit SSP1CON1_SSPEN at SSP1CON1 : 5 var volatile bit SSP1CON1_CKP at SSP1CON1 : 4 var volatile bit SSP1CON1_SSPM3 at SSP1CON1 : 3 var volatile bit SSP1CON1_SSPM2 at SSP1CON1 : 2 var volatile bit SSP1CON1_SSPM1 at SSP1CON1 : 1 var volatile bit SSP1CON1_SSPM0 at SSP1CON1 : 0 -- ------------------------------------------------ var volatile byte SSP1CON2 at 0x216 var volatile bit SSP1CON2_GCEN at SSP1CON2 : 7 var volatile bit SSP1CON2_ACKSTAT at SSP1CON2 : 6 var volatile bit SSP1CON2_ACKDT at SSP1CON2 : 5 var volatile bit SSP1CON2_ACKEN at SSP1CON2 : 4 var volatile bit SSP1CON2_RCEN at SSP1CON2 : 3 var volatile bit SSP1CON2_PEN at SSP1CON2 : 2 var volatile bit SSP1CON2_RSEN at SSP1CON2 : 1 var volatile bit SSP1CON2_SEN at SSP1CON2 : 0 -- ------------------------------------------------ var volatile byte SSP1CON3 at 0x217 var volatile bit SSP1CON3_ACKTIM at SSP1CON3 : 7 var volatile bit SSP1CON3_PCIE at SSP1CON3 : 6 var volatile bit SSP1CON3_SCIE at SSP1CON3 : 5 var volatile bit SSP1CON3_BOEN at SSP1CON3 : 4 var volatile bit SSP1CON3_SDAHT at SSP1CON3 : 3 var volatile bit SSP1CON3_SBCDE at SSP1CON3 : 2 var volatile bit SSP1CON3_AHEN at SSP1CON3 : 1 var volatile bit SSP1CON3_DHEN at SSP1CON3 : 0 -- ------------------------------------------------ var volatile byte SSP2BUF at 0x219 var volatile bit*8 SSP2BUF_SSPBUF at SSP2BUF : 0 -- ------------------------------------------------ var volatile byte SSP2ADD at 0x21A var volatile bit*8 SSP2ADD_SSPADD at SSP2ADD : 0 -- ------------------------------------------------ var volatile byte SSP2MSK at 0x21B var volatile bit*8 SSP2MSK_SSPMSK at SSP2MSK : 0 -- ------------------------------------------------ var volatile byte SSP2STAT at 0x21C var volatile bit SSP2STAT_SMP at SSP2STAT : 7 var volatile bit SSP2STAT_CKE at SSP2STAT : 6 var volatile bit SSP2STAT_D at SSP2STAT : 5 var volatile bit SSP2STAT_NA at SSP2STAT : 5 var volatile bit SSP2STAT_P at SSP2STAT : 4 var volatile bit SSP2STAT_S at SSP2STAT : 3 var volatile bit SSP2STAT_R at SSP2STAT : 2 var volatile bit SSP2STAT_NW at SSP2STAT : 2 var volatile bit SSP2STAT_UA at SSP2STAT : 1 var volatile bit SSP2STAT_BF at SSP2STAT : 0 -- ------------------------------------------------ var volatile byte SSP2CON1 at 0x21D var volatile bit SSP2CON1_WCOL at SSP2CON1 : 7 var volatile bit SSP2CON1_SSPOV at SSP2CON1 : 6 var volatile bit SSP2CON1_SSPEN at SSP2CON1 : 5 var volatile bit SSP2CON1_CKP at SSP2CON1 : 4 var volatile bit SSP2CON1_SSPM3 at SSP2CON1 : 3 var volatile bit SSP2CON1_SSPM2 at SSP2CON1 : 2 var volatile bit SSP2CON1_SSPM1 at SSP2CON1 : 1 var volatile bit SSP2CON1_SSPM0 at SSP2CON1 : 0 -- ------------------------------------------------ var volatile byte SSP2CON2 at 0x21E var volatile bit SSP2CON2_GCEN at SSP2CON2 : 7 var volatile bit SSP2CON2_ACKSTAT at SSP2CON2 : 6 var volatile bit SSP2CON2_ACKDT at SSP2CON2 : 5 var volatile bit SSP2CON2_ACKEN at SSP2CON2 : 4 var volatile bit SSP2CON2_RCEN at SSP2CON2 : 3 var volatile bit SSP2CON2_PEN at SSP2CON2 : 2 var volatile bit SSP2CON2_RSEN at SSP2CON2 : 1 var volatile bit SSP2CON2_SEN at SSP2CON2 : 0 -- ------------------------------------------------ var volatile byte SSP2CON3 at 0x21F var volatile bit SSP2CON3_ACKTIM at SSP2CON3 : 7 var volatile bit SSP2CON3_PCIE at SSP2CON3 : 6 var volatile bit SSP2CON3_SCIE at SSP2CON3 : 5 var volatile bit SSP2CON3_BOEN at SSP2CON3 : 4 var volatile bit SSP2CON3_SDAHT at SSP2CON3 : 3 var volatile bit SSP2CON3_SBCDE at SSP2CON3 : 2 var volatile bit SSP2CON3_AHEN at SSP2CON3 : 1 var volatile bit SSP2CON3_DHEN at SSP2CON3 : 0 -- ------------------------------------------------ var volatile byte CCPR1L at 0x291 -- ------------------------------------------------ var volatile byte CCPR1H at 0x292 -- ------------------------------------------------ var volatile byte CCP1CON at 0x293 var volatile bit*2 CCP1CON_P1M at CCP1CON : 6 var volatile bit*2 CCP1CON_DC1B at CCP1CON : 4 var volatile bit*4 CCP1CON_CCP1M at CCP1CON : 0 -- ------------------------------------------------ var volatile byte PWM1CON at 0x294 var volatile bit PWM1CON_P1RSEN at PWM1CON : 7 var volatile bit PWM1CON_P1DC6 at PWM1CON : 6 var volatile bit PWM1CON_P1DC5 at PWM1CON : 5 var volatile bit PWM1CON_P1DC4 at PWM1CON : 4 var volatile bit PWM1CON_P1DC3 at PWM1CON : 3 var volatile bit PWM1CON_P1DC2 at PWM1CON : 2 var volatile bit PWM1CON_P1DC1 at PWM1CON : 1 var volatile bit PWM1CON_P1DC0 at PWM1CON : 0 -- ------------------------------------------------ var volatile byte CCP1AS at 0x295 var volatile bit CCP1AS_CCP1ASE at CCP1AS : 7 var volatile bit CCP1AS_CCP1AS2 at CCP1AS : 6 var volatile bit CCP1AS_CCP1AS1 at CCP1AS : 5 var volatile bit CCP1AS_CCP1AS0 at CCP1AS : 4 var volatile bit CCP1AS_PSS1AC1 at CCP1AS : 3 var volatile bit CCP1AS_PSS1AC0 at CCP1AS : 2 var volatile bit CCP1AS_PSS1BD1 at CCP1AS : 1 var volatile bit CCP1AS_PSS1BD0 at CCP1AS : 0 -- ------------------------------------------------ var volatile byte PSTR1CON at 0x296 var volatile bit PSTR1CON_STR1SYNC at PSTR1CON : 4 var volatile bit PSTR1CON_STR1D at PSTR1CON : 3 var volatile bit PSTR1CON_STR1C at PSTR1CON : 2 var volatile bit PSTR1CON_STR1B at PSTR1CON : 1 var volatile bit PSTR1CON_STR1A at PSTR1CON : 0 -- ------------------------------------------------ var volatile byte CCPR2L at 0x298 -- ------------------------------------------------ var volatile byte CCPR2H at 0x299 -- ------------------------------------------------ var volatile byte CCP2CON at 0x29A var volatile bit*2 CCP2CON_P2M at CCP2CON : 6 var volatile bit*2 CCP2CON_DC2B at CCP2CON : 4 var volatile bit*4 CCP2CON_CCP2M at CCP2CON : 0 -- ------------------------------------------------ var volatile byte PWM2CON at 0x29B var volatile bit PWM2CON_P2RSEN at PWM2CON : 7 var volatile bit PWM2CON_P2DC6 at PWM2CON : 6 var volatile bit PWM2CON_P2DC5 at PWM2CON : 5 var volatile bit PWM2CON_P2DC4 at PWM2CON : 4 var volatile bit PWM2CON_P2DC3 at PWM2CON : 3 var volatile bit PWM2CON_P2DC2 at PWM2CON : 2 var volatile bit PWM2CON_P2DC1 at PWM2CON : 1 var volatile bit PWM2CON_P2DC0 at PWM2CON : 0 -- ------------------------------------------------ var volatile byte CCP2AS at 0x29C var volatile bit CCP2AS_CCP2ASE at CCP2AS : 7 var volatile bit CCP2AS_CCP2AS2 at CCP2AS : 6 var volatile bit CCP2AS_CCP2AS1 at CCP2AS : 5 var volatile bit CCP2AS_CCP2AS0 at CCP2AS : 4 var volatile bit CCP2AS_PSS2AC1 at CCP2AS : 3 var volatile bit CCP2AS_PSS2AC0 at CCP2AS : 2 var volatile bit CCP2AS_PSS2BD1 at CCP2AS : 1 var volatile bit CCP2AS_PSS2BD0 at CCP2AS : 0 -- ------------------------------------------------ var volatile byte PSTR2CON at 0x29D var volatile bit PSTR2CON_STR2SYNC at PSTR2CON : 4 var volatile bit PSTR2CON_STR2D at PSTR2CON : 3 var volatile bit PSTR2CON_STR2C at PSTR2CON : 2 var volatile bit PSTR2CON_STR2B at PSTR2CON : 1 var volatile bit PSTR2CON_STR2A at PSTR2CON : 0 -- ------------------------------------------------ var volatile byte CCPTMRS at 0x29E var volatile bit CCPTMRS_C4TSEL1 at CCPTMRS : 7 var volatile bit CCPTMRS_C4TSEL0 at CCPTMRS : 6 var volatile bit CCPTMRS_C3TSEL1 at CCPTMRS : 5 var volatile bit CCPTMRS_C3TSEL0 at CCPTMRS : 4 var volatile bit CCPTMRS_C2TSEL1 at CCPTMRS : 3 var volatile bit CCPTMRS_C2TSEL0 at CCPTMRS : 2 var volatile bit CCPTMRS_C1TSEL1 at CCPTMRS : 1 var volatile bit CCPTMRS_C1TSEL0 at CCPTMRS : 0 -- ------------------------------------------------ var volatile byte CCPR3L at 0x311 -- ------------------------------------------------ var volatile byte CCPR3H at 0x312 -- ------------------------------------------------ var volatile byte CCP3CON at 0x313 var volatile bit*2 CCP3CON_DC3B at CCP3CON : 4 var volatile bit*4 CCP3CON_CCP3M at CCP3CON : 0 -- ------------------------------------------------ var volatile byte CCPR4L at 0x318 -- ------------------------------------------------ var volatile byte CCPR4H at 0x319 -- ------------------------------------------------ var volatile byte CCP4CON at 0x31A var volatile bit*2 CCP4CON_DC4B at CCP4CON : 4 var volatile bit*4 CCP4CON_CCP4M at CCP4CON : 0 -- ------------------------------------------------ var volatile byte IOCBP at 0x394 var volatile bit IOCBP_IOCBP7 at IOCBP : 7 var volatile bit IOCBP_IOCBP6 at IOCBP : 6 var volatile bit IOCBP_IOCBP5 at IOCBP : 5 var volatile bit IOCBP_IOCBP4 at IOCBP : 4 var volatile bit IOCBP_IOCBP3 at IOCBP : 3 var volatile bit IOCBP_IOCBP2 at IOCBP : 2 var volatile bit IOCBP_IOCBP1 at IOCBP : 1 var volatile bit IOCBP_IOCBP0 at IOCBP : 0 -- ------------------------------------------------ var volatile byte IOCBN at 0x395 var volatile bit IOCBN_IOCBN7 at IOCBN : 7 var volatile bit IOCBN_IOCBN6 at IOCBN : 6 var volatile bit IOCBN_IOCBN5 at IOCBN : 5 var volatile bit IOCBN_IOCBN4 at IOCBN : 4 var volatile bit IOCBN_IOCBN3 at IOCBN : 3 var volatile bit IOCBN_IOCBN2 at IOCBN : 2 var volatile bit IOCBN_IOCBN1 at IOCBN : 1 var volatile bit IOCBN_IOCBN0 at IOCBN : 0 -- ------------------------------------------------ var volatile byte IOCBF at 0x396 var volatile bit IOCBF_IOCBF7 at IOCBF : 7 var volatile bit IOCBF_IOCBF6 at IOCBF : 6 var volatile bit IOCBF_IOCBF5 at IOCBF : 5 var volatile bit IOCBF_IOCBF4 at IOCBF : 4 var volatile bit IOCBF_IOCBF3 at IOCBF : 3 var volatile bit IOCBF_IOCBF2 at IOCBF : 2 var volatile bit IOCBF_IOCBF1 at IOCBF : 1 var volatile bit IOCBF_IOCBF0 at IOCBF : 0 -- ------------------------------------------------ var volatile byte CLKRCON at 0x39A var volatile bit CLKRCON_CLKREN at CLKRCON : 7 var volatile bit CLKRCON_CLKROE at CLKRCON : 6 var volatile bit CLKRCON_CLKRSLR at CLKRCON : 5 var volatile bit CLKRCON_CLKRDC1 at CLKRCON : 4 var volatile bit CLKRCON_CLKRDC0 at CLKRCON : 3 var volatile bit CLKRCON_CLKRDIV2 at CLKRCON : 2 var volatile bit CLKRCON_CLKRDIV1 at CLKRCON : 1 var volatile bit CLKRCON_CLKRDIV0 at CLKRCON : 0 -- ------------------------------------------------ var volatile byte MDCON at 0x39C var volatile bit MDCON_MDEN at MDCON : 7 var volatile bit MDCON_MDOE at MDCON : 6 var volatile bit MDCON_MDSLR at MDCON : 5 var volatile bit MDCON_MDOPOL at MDCON : 4 var volatile bit MDCON_MDOUT at MDCON : 3 var volatile bit MDCON_MDBIT at MDCON : 0 -- ------------------------------------------------ var volatile byte MDSRC at 0x39D var volatile bit MDSRC_MDMSODIS at MDSRC : 7 var volatile bit MDSRC_MDMS3 at MDSRC : 3 var volatile bit MDSRC_MDMS2 at MDSRC : 2 var volatile bit MDSRC_MDMS1 at MDSRC : 1 var volatile bit MDSRC_MDMS0 at MDSRC : 0 -- ------------------------------------------------ var volatile byte MDCARL at 0x39E var volatile bit MDCARL_MDCLODIS at MDCARL : 7 var volatile bit MDCARL_MDCLPOL at MDCARL : 6 var volatile bit MDCARL_MDCLSYNC at MDCARL : 5 var volatile bit MDCARL_MDCL3 at MDCARL : 3 var volatile bit MDCARL_MDCL2 at MDCARL : 2 var volatile bit MDCARL_MDCL1 at MDCARL : 1 var volatile bit MDCARL_MDCL0 at MDCARL : 0 -- ------------------------------------------------ var volatile byte MDCARH at 0x39F var volatile bit MDCARH_MDCHODIS at MDCARH : 7 var volatile bit MDCARH_MDCHPOL at MDCARH : 6 var volatile bit MDCARH_MDCHSYNC at MDCARH : 5 var volatile bit MDCARH_MDCH3 at MDCARH : 3 var volatile bit MDCARH_MDCH2 at MDCARH : 2 var volatile bit MDCARH_MDCH1 at MDCARH : 1 var volatile bit MDCARH_MDCH0 at MDCARH : 0 -- ------------------------------------------------ var volatile byte TMR4 at 0x415 -- ------------------------------------------------ var volatile byte PR4 at 0x416 -- ------------------------------------------------ var volatile byte T4CON at 0x417 var volatile bit*4 T4CON_T4OUTPS at T4CON : 3 var volatile bit T4CON_TMR4ON at T4CON : 2 var volatile bit*2 T4CON_T4CKPS at T4CON : 0 -- ------------------------------------------------ var volatile byte TMR6 at 0x41C -- ------------------------------------------------ var volatile byte PR6 at 0x41D -- ------------------------------------------------ var volatile byte T6CON at 0x41E var volatile bit*4 T6CON_T6OUTPS at T6CON : 3 var volatile bit T6CON_TMR6ON at T6CON : 2 var volatile bit*2 T6CON_T6CKPS at T6CON : 0 -- ------------------------------------------------ var volatile byte STATUS_SHAD at 0xFE4 var volatile bit STATUS_SHAD_Z at STATUS_SHAD : 2 var volatile bit STATUS_SHAD_DC at STATUS_SHAD : 1 var volatile bit STATUS_SHAD_C at STATUS_SHAD : 0 -- ------------------------------------------------ var volatile byte WREG_SHAD at 0xFE5 -- ------------------------------------------------ var volatile byte BSR_SHAD at 0xFE6 var volatile bit*5 BSR_SHAD_BSR_SHAD at BSR_SHAD : 0 -- ------------------------------------------------ var volatile byte PCLATH_SHAD at 0xFE7 var volatile bit*7 PCLATH_SHAD_PCLATH_SHAD at PCLATH_SHAD : 0 -- ------------------------------------------------ var volatile byte FSR0L_SHAD at 0xFE8 -- ------------------------------------------------ var volatile byte FSR0H_SHAD at 0xFE9 -- ------------------------------------------------ var volatile byte FSR1L_SHAD at 0xFEA -- ------------------------------------------------ var volatile byte FSR1H_SHAD at 0xFEB -- ------------------------------------------------ var volatile byte STKPTR at 0xFED var volatile bit*5 STKPTR_STKPTR at STKPTR : 0 -- ------------------------------------------------ var volatile byte TOSL at 0xFEE -- ------------------------------------------------ var volatile byte TOSH at 0xFEF var volatile bit*7 TOSH_TOSH at TOSH : 0 -- -- =================================================== -- -- Special (device specific) constants and procedures -- const ADC_GROUP = ADC_V1 const byte ADC_NTOTAL_CHANNEL = 12 -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- Change analog I/O pins into digital I/O pins. procedure analog_off() is pragma inline ANSELA = 0b0000_0000 -- all digital ANSELB = 0b0000_0000 -- all digital end procedure -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- Disable ADC module procedure adc_off() is pragma inline ADCON0 = 0b0000_0000 -- disable ADC ADCON1 = 0b0000_0111 -- digital I/O end procedure -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- Disable comparator module procedure comparator_off() is pragma inline CM1CON0 = 0b0000_0000 -- disable comparator CM2CON0 = 0b0000_0000 -- disable 2nd comparator end procedure -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- Switch analog ports to digital mode (if analog module present). procedure enable_digital_io() is pragma inline analog_off() adc_off() comparator_off() end procedure -- -- ================================================== -- -- Symbolic Fuse definitions -- ------------------------- -- -- CONFIG1 (0x8007) -- pragma fuse_def OSC:0 0x7 { -- oscillator selection ECH_NOCLKOUT = 0x7 -- ech, external clock, high power mode (4-32 mhz): device clock supplied to clkin pin ECM_NOCLKOUT = 0x6 -- ecm, external clock, medium power mode (0.5-4 mhz): device clock supplied to clkin pin ECL_NOCLKOUT = 0x5 -- ecl, external clock, low power mode (0-0.5 mhz): device clock supplied to clkin pin INTOSC_NOCLKOUT = 0x4 -- intosc oscillator: i/o function on clkin pin RC_NOCLKOUT = 0x3 -- extrc oscillator: external rc circuit connected to clkin pin HS = 0x2 -- hs oscillator, high-speed crystal/resonator connected between osc1 and osc2 pins XT = 0x1 -- xt oscillator, crystal/resonator connected between osc1 and osc2 pins LP = 0x0 -- lp oscillator, low-power crystal connected between osc1 and osc2 pins } pragma fuse_def WDT:0 0x18 { -- watchdog timer enable ENABLED = 0x18 -- enabled RUNONLY = 0x10 -- wdt enabled while running and disabled in sleep CONTROL = 0x8 -- wdt controlled by the swdten bit in the wdtcon register DISABLED = 0x0 -- disabled } pragma fuse_def PWRTE:0 0x20 { -- power-up timer enable DISABLED = 0x20 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def MCLR:0 0x40 { -- mclr pin function select EXTERNAL = 0x40 -- enabled INTERNAL = 0x0 -- disabled } pragma fuse_def CP:0 0x80 { -- flash program memory code protection DISABLED = 0x80 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def CPD:0 0x100 { -- data memory code protection DISABLED = 0x100 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def BROWNOUT:0 0x600 { -- brown-out reset enable ENABLED = 0x600 -- enabled RUNONLY = 0x400 -- brown-out reset enabled while running and disabled in sleep CONTROL = 0x200 -- brown-out reset controlled by the sboren bit in the borcon register DISABLED = 0x0 -- disabled } pragma fuse_def CLKOUTEN:0 0x800 { -- clock out enable DISABLED = 0x800 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def IESO:0 0x1000 { -- internal/external switchover ENABLED = 0x1000 -- enabled DISABLED = 0x0 -- disabled } pragma fuse_def FCMEN:0 0x2000 { -- fail-safe clock monitor enable ENABLED = 0x2000 -- enabled DISABLED = 0x0 -- disabled } -- -- CONFIG2 (0x8008) -- pragma fuse_def WRT:1 0x3 { -- flash memory self-write protection NO_PROTECTION = 0x3 -- disabled R0000_01FF = 0x2 -- 000h to 1ffh write protected, 200h to fffh may be modified by eecon control R0000_07FF = 0x1 -- 000h to 7ffh write protected, 800h to fffh may be modified by eecon control R0000_0FFF = 0x0 -- 000h to fffh write protected, no addresses may be modified by eecon control } pragma fuse_def VCAPEN:1 0x10 { -- voltage regulator capacitor enable DISABLED = 0x10 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def PLLEN:1 0x100 { -- pll enable P4 = 0x100 -- enabled P1 = 0x0 -- disabled } pragma fuse_def STVR:1 0x200 { -- stack overflow/underflow reset enable ENABLED = 0x200 -- enabled DISABLED = 0x0 -- disabled } pragma fuse_def VOLTAGE:1 0x400 { -- brown-out reset voltage selection V19 = 0x400 -- brown-out reset voltage (vbor) set to 1.9 v V25 = 0x0 -- brown-out reset voltage (vbor) set to 2.5 v } pragma fuse_def DEBUG:1 0x1000 { -- in-circuit debugger mode DISABLED = 0x1000 -- disabled ENABLED = 0x0 -- enabled } pragma fuse_def LVP:1 0x2000 { -- low-voltage programming enable ENABLED = 0x2000 -- enabled DISABLED = 0x0 -- disabled } --