-- =================================================== -- Title: JalV2 device include file for PIC 12LF1822 -- -- Author: Rob Hamerling, Copyright (c) 2008..2011, all rights reserved. -- -- Adapted-by: -- -- Revision: $Revision: 2828 $ -- -- Compiler: 2.4o -- -- 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 pic12lf1822, 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:/mplab880/mplab ide/device/pic12lf1822.dev -- - x:/mplab880/mpasm suite/lkr/12lf1822_g.lkr -- -- Notes: -- - Created with Dev2Jal Rexx script version 0.1.24 -- - File creation date/time: 9 Nov 2011 11:12 -- -- =================================================== -- const word DEVICE_ID = 0x2800 const byte PICTYPE[] = "12LF1822" const byte DATASHEET[] = "41413B" const byte PGMSPEC[] = "41390C" -- -- Vdd Range: 1.800-3.600 Nominal: 3.300 -- Vpp Range: 8.000-9.000 Default: 9.000 -- -- --------------------------------------------------- -- include chipdef_jallib -- common constants -- pragma target cpu PIC_14H -- (banks=32) pragma target chip 12lf1822 pragma target bank 0x0080 pragma target page 0x0800 pragma stack 16 pragma code 2048 -- (words) pragma eeprom 0xF000,256 pragma ID 0x8000,4 pragma data 0x20-0x6F,0xA0-0xBF 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_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 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 alias PIR1_SSPIF is PIR1_SSP1IF 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_C1IF at PIR2 : 5 var volatile bit PIR2_EEIF at PIR2 : 4 var volatile bit PIR2_BCL1IF at PIR2 : 3 -- ------------------------------------------------ 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_NDONE 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_CPSRM at CPSCON0 : 6 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_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_TRISA5 at TRISA : 5 var volatile bit pin_A5_direction at TRISA : 5 alias pin_SRNQ_direction is pin_A5_direction alias pin_T1CKI_direction is pin_A5_direction alias pin_T1OSI_direction is pin_A5_direction alias pin_CCP1_RA5_direction is pin_A5_direction alias pin_P1A_RA5_direction is pin_A5_direction alias pin_RX_RA5_direction is pin_A5_direction alias pin_DT_RA5_direction is pin_A5_direction alias pin_OSC1_direction is pin_A5_direction alias pin_CLKIN_direction is pin_A5_direction -- var volatile bit TRISA_TRISA4 at TRISA : 4 var volatile bit pin_A4_direction at TRISA : 4 alias pin_AN3_direction is pin_A4_direction alias pin_CPS3_direction is pin_A4_direction alias pin_C1IN1_NEG_direction is pin_A4_direction alias pin_T1G_RA4_direction is pin_A4_direction alias pin_T1OSO_direction is pin_A4_direction alias pin_P1B_RA4_direction is pin_A4_direction alias pin_TX_RA4_direction is pin_A4_direction alias pin_CK_RA4_direction is pin_A4_direction alias pin_SDO_RA4_direction is pin_A4_direction alias pin_MDCIN2_direction is pin_A4_direction alias pin_OSC2_direction is pin_A4_direction alias pin_CLKOUT_direction is pin_A4_direction alias pin_CLKR_direction is pin_A4_direction -- var volatile bit TRISA_TRISA3 at TRISA : 3 var volatile bit pin_A3_direction at TRISA : 3 alias pin_T1G_RA3_direction is pin_A3_direction alias pin_SS_RA3_direction is pin_A3_direction alias pin_MCLR_direction is pin_A3_direction alias pin_VPP_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_C1OUT_direction is pin_A2_direction alias pin_SRQ_direction is pin_A2_direction alias pin_T0CKI_direction is pin_A2_direction alias pin_CCP1_RA2_direction is pin_A2_direction alias pin_P1A_RA2_direction is pin_A2_direction alias pin_FLT0_direction is pin_A2_direction alias pin_SDA_direction is pin_A2_direction alias pin_SDI_direction is pin_A2_direction alias pin_MDCIN1_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_VREF_direction is pin_A1_direction alias pin_CPS1_direction is pin_A1_direction alias pin_C1IN0_NEG_direction is pin_A1_direction alias pin_SRI_direction is pin_A1_direction alias pin_RX_RA1_direction is pin_A1_direction alias pin_DT_RA1_direction is pin_A1_direction alias pin_SCL_direction is pin_A1_direction alias pin_SCK_direction is pin_A1_direction alias pin_MDMIN_direction is pin_A1_direction alias pin_ICSPCLK_direction is pin_A1_direction alias pin_ICDCLK_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_DACOUT_direction is pin_A0_direction alias pin_CPS0_direction is pin_A0_direction alias pin_C1IN_POS_direction is pin_A0_direction alias pin_P1B_RA0_direction is pin_A0_direction alias pin_TX_RA0_direction is pin_A0_direction alias pin_CK_RA0_direction is pin_A0_direction alias pin_SDO_RA0_direction is pin_A0_direction alias pin_SS_RA0_direction is pin_A0_direction alias pin_MDOUT_direction is pin_A0_direction alias pin_ICSPDAT_direction is pin_A0_direction alias pin_ICDDAT_direction is pin_A0_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 alias PIE1_SSPIE is PIE1_SSP1IE 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_C1IE at PIE2 : 5 var volatile bit PIE2_EEIE at PIE2 : 4 var volatile bit PIE2_BCL1IE at PIE2 : 3 -- ------------------------------------------------ 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*2 OSCCON_SCS 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*3 ADCON1_ADCS at ADCON1 : 4 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 at LATA) is pragma inline end procedure -- procedure PORTA_low'put(byte in x) is pragma inline LATA = (LATA & 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 = (LATA & 0x0F) | (x << 4) end procedure function PORTA_high'get() return byte is pragma inline return (PORTA >> 4) end function -- var volatile bit LATA_LATA5 at LATA : 5 var volatile bit pin_A5 at PORTA : 5 alias pin_SRNQ is pin_A5 alias pin_T1CKI is pin_A5 alias pin_T1OSI is pin_A5 alias pin_CCP1_RA5 is pin_A5 alias pin_P1A_RA5 is pin_A5 alias pin_RX_RA5 is pin_A5 alias pin_DT_RA5 is pin_A5 alias pin_OSC1 is pin_A5 alias pin_CLKIN is pin_A5 -- procedure pin_A5'put(bit in x at LATA : 5) is pragma inline end procedure -- var volatile bit LATA_LATA4 at LATA : 4 var volatile bit pin_A4 at PORTA : 4 alias pin_AN3 is pin_A4 alias pin_CPS3 is pin_A4 alias pin_C1IN1_NEG is pin_A4 alias pin_T1G_RA4 is pin_A4 alias pin_T1OSO is pin_A4 alias pin_P1B_RA4 is pin_A4 alias pin_TX_RA4 is pin_A4 alias pin_CK_RA4 is pin_A4 alias pin_SDO_RA4 is pin_A4 alias pin_MDCIN2 is pin_A4 alias pin_OSC2 is pin_A4 alias pin_CLKOUT is pin_A4 alias pin_CLKR is pin_A4 -- procedure pin_A4'put(bit in x at LATA : 4) is pragma inline end procedure -- var volatile bit pin_A3 at PORTA : 3 alias pin_T1G_RA3 is pin_A3 alias pin_SS_RA3 is pin_A3 alias pin_MCLR is pin_A3 alias pin_VPP is pin_A3 -- 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_C1OUT is pin_A2 alias pin_SRQ is pin_A2 alias pin_T0CKI is pin_A2 alias pin_CCP1_RA2 is pin_A2 alias pin_P1A_RA2 is pin_A2 alias pin_FLT0 is pin_A2 alias pin_SDA is pin_A2 alias pin_SDI is pin_A2 alias pin_MDCIN1 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_VREF is pin_A1 alias pin_CPS1 is pin_A1 alias pin_C1IN0_NEG is pin_A1 alias pin_SRI is pin_A1 alias pin_RX_RA1 is pin_A1 alias pin_DT_RA1 is pin_A1 alias pin_SCL is pin_A1 alias pin_SCK is pin_A1 alias pin_MDMIN is pin_A1 alias pin_ICSPCLK is pin_A1 alias pin_ICDCLK 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_DACOUT is pin_A0 alias pin_CPS0 is pin_A0 alias pin_C1IN_POS is pin_A0 alias pin_P1B_RA0 is pin_A0 alias pin_TX_RA0 is pin_A0 alias pin_CK_RA0 is pin_A0 alias pin_SDO_RA0 is pin_A0 alias pin_SS_RA0 is pin_A0 alias pin_MDOUT is pin_A0 alias pin_ICSPDAT is pin_A0 alias pin_ICDDAT is pin_A0 -- procedure pin_A0'put(bit in x at LATA : 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_C1NCH0 at CM1CON1 : 0 -- ------------------------------------------------ var volatile byte CMOUT at 0x115 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_TSEN at FVRCON : 5 var volatile bit FVRCON_TSRNG at FVRCON : 4 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 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_SRSC1E at SRCON1 : 4 var volatile bit SRCON1_SRRPE at SRCON1 : 3 var volatile bit SRCON1_SRRCKE at SRCON1 : 2 var volatile bit SRCON1_SRRC1E at SRCON1 : 0 -- ------------------------------------------------ var volatile byte APFCON at 0x11D var volatile bit APFCON_RXDTSEL at APFCON : 7 var volatile bit APFCON_SDOSEL at APFCON : 6 var volatile bit APFCON_SSSEL at APFCON : 5 var volatile bit APFCON_T1GSEL at APFCON : 3 var volatile bit APFCON_TXCKSEL at APFCON : 2 var volatile bit APFCON_P1BSEL at APFCON : 1 var volatile bit APFCON_CCP1SEL at APFCON : 0 -- ------------------------------------------------ var volatile byte ANSELA at 0x18C var volatile bit JANSEL_ANS3 at ANSELA : 4 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 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 bit WPUA_WPUA4 at WPUA : 4 var volatile bit WPUA_WPUA3 at WPUA : 3 var volatile bit WPUA_WPUA2 at WPUA : 2 var volatile bit WPUA_WPUA1 at WPUA : 1 var volatile bit WPUA_WPUA0 at WPUA : 0 -- ------------------------------------------------ var volatile byte SSP1BUF at 0x211 alias SSPBUF is SSP1BUF var volatile bit*8 SSP1BUF_SSPBUF at SSP1BUF : 0 -- ------------------------------------------------ var volatile byte SSP1ADD at 0x212 alias SSPADD is SSP1ADD var volatile bit*8 SSP1ADD_SSPADD at SSP1ADD : 0 -- ------------------------------------------------ var volatile byte SSP1MSK at 0x213 alias SSPMSK is SSP1MSK var volatile bit*8 SSP1MSK_SSPMSK at SSP1MSK : 0 -- ------------------------------------------------ var volatile byte SSP1STAT at 0x214 alias SSPSTAT is SSP1STAT var volatile bit SSP1STAT_SMP at SSP1STAT : 7 alias SSPSTAT_SMP is SSP1STAT_SMP var volatile bit SSP1STAT_CKE at SSP1STAT : 6 alias SSPSTAT_CKE is SSP1STAT_CKE var volatile bit SSP1STAT_D at SSP1STAT : 5 var volatile bit SSP1STAT_NA at SSP1STAT : 5 alias SSPSTAT_D is SSP1STAT_D alias SSPSTAT_NA is SSP1STAT_NA var volatile bit SSP1STAT_P at SSP1STAT : 4 alias SSPSTAT_P is SSP1STAT_P var volatile bit SSP1STAT_S at SSP1STAT : 3 alias SSPSTAT_S is SSP1STAT_S var volatile bit SSP1STAT_R at SSP1STAT : 2 var volatile bit SSP1STAT_NW at SSP1STAT : 2 alias SSPSTAT_R is SSP1STAT_R alias SSPSTAT_NW is SSP1STAT_NW var volatile bit SSP1STAT_UA at SSP1STAT : 1 alias SSPSTAT_UA is SSP1STAT_UA var volatile bit SSP1STAT_BF at SSP1STAT : 0 alias SSPSTAT_BF is SSP1STAT_BF -- ------------------------------------------------ var volatile byte SSP1CON1 at 0x215 alias SSPCON is SSP1CON1 var volatile bit SSP1CON1_WCOL at SSP1CON1 : 7 alias SSPCON_WCOL is SSP1CON1_WCOL var volatile bit SSP1CON1_SSPOV at SSP1CON1 : 6 alias SSPCON_SSPOV is SSP1CON1_SSPOV var volatile bit SSP1CON1_SSPEN at SSP1CON1 : 5 alias SSPCON_SSPEN is SSP1CON1_SSPEN var volatile bit SSP1CON1_CKP at SSP1CON1 : 4 alias SSPCON_CKP is SSP1CON1_CKP var volatile bit*4 SSP1CON1_SSPM at SSP1CON1 : 0 alias SSPCON_SSPM is SSP1CON1_SSPM -- ------------------------------------------------ var volatile byte SSP1CON2 at 0x216 alias SSPCON2 is SSP1CON2 var volatile bit SSP1CON2_GCEN at SSP1CON2 : 7 alias SSPCON2_GCEN is SSP1CON2_GCEN var volatile bit SSP1CON2_ACKSTAT at SSP1CON2 : 6 alias SSPCON2_ACKSTAT is SSP1CON2_ACKSTAT var volatile bit SSP1CON2_ACKDT at SSP1CON2 : 5 alias SSPCON2_ACKDT is SSP1CON2_ACKDT var volatile bit SSP1CON2_ACKEN at SSP1CON2 : 4 alias SSPCON2_ACKEN is SSP1CON2_ACKEN var volatile bit SSP1CON2_RCEN at SSP1CON2 : 3 alias SSPCON2_RCEN is SSP1CON2_RCEN var volatile bit SSP1CON2_PEN at SSP1CON2 : 2 alias SSPCON2_PEN is SSP1CON2_PEN var volatile bit SSP1CON2_RSEN at SSP1CON2 : 1 alias SSPCON2_RSEN is SSP1CON2_RSEN var volatile bit SSP1CON2_SEN at SSP1CON2 : 0 alias SSPCON2_SEN is SSP1CON2_SEN -- ------------------------------------------------ var volatile byte SSP1CON3 at 0x217 alias SSPCON3 is SSP1CON3 var volatile bit SSP1CON3_ACKTIM at SSP1CON3 : 7 alias SSPCON3_ACKTIM is SSP1CON3_ACKTIM var volatile bit SSP1CON3_PCIE at SSP1CON3 : 6 alias SSPCON3_PCIE is SSP1CON3_PCIE var volatile bit SSP1CON3_SCIE at SSP1CON3 : 5 alias SSPCON3_SCIE is SSP1CON3_SCIE var volatile bit SSP1CON3_BOEN at SSP1CON3 : 4 alias SSPCON3_BOEN is SSP1CON3_BOEN var volatile bit SSP1CON3_SDAHT at SSP1CON3 : 3 alias SSPCON3_SDAHT is SSP1CON3_SDAHT var volatile bit SSP1CON3_SBCDE at SSP1CON3 : 2 alias SSPCON3_SBCDE is SSP1CON3_SBCDE var volatile bit SSP1CON3_AHEN at SSP1CON3 : 1 alias SSPCON3_AHEN is SSP1CON3_AHEN var volatile bit SSP1CON3_DHEN at SSP1CON3 : 0 alias SSPCON3_DHEN is SSP1CON3_DHEN -- ------------------------------------------------ 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 IOCAP at 0x391 var volatile bit IOCAP_IOCAP5 at IOCAP : 5 var volatile bit IOCAP_IOCAP4 at IOCAP : 4 var volatile bit IOCAP_IOCAP3 at IOCAP : 3 var volatile bit IOCAP_IOCAP2 at IOCAP : 2 var volatile bit IOCAP_IOCAP1 at IOCAP : 1 var volatile bit IOCAP_IOCAP0 at IOCAP : 0 -- ------------------------------------------------ var volatile byte IOCAN at 0x392 var volatile bit IOCAN_IOCAN5 at IOCAN : 5 var volatile bit IOCAN_IOCAN4 at IOCAN : 4 var volatile bit IOCAN_IOCAN3 at IOCAN : 3 var volatile bit IOCAN_IOCAN2 at IOCAN : 2 var volatile bit IOCAN_IOCAN1 at IOCAN : 1 var volatile bit IOCAN_IOCAN0 at IOCAN : 0 -- ------------------------------------------------ var volatile byte IOCAF at 0x393 var volatile bit IOCAF_IOCAF5 at IOCAF : 5 var volatile bit IOCAF_IOCAF4 at IOCAF : 4 var volatile bit IOCAF_IOCAF3 at IOCAF : 3 var volatile bit IOCAF_IOCAF2 at IOCAF : 2 var volatile bit IOCAF_IOCAF1 at IOCAF : 1 var volatile bit IOCAF_IOCAF0 at IOCAF : 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 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 = 4 const byte ADC_ADCS_BITCOUNT = 3 -- const PPS_GROUP = PPS_0 -- no Peripheral Pin Selection -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -- Change analog I/O pins into digital I/O pins. procedure analog_off() is pragma inline ANSELA = 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 CM1CON1 = 0b0000_0000 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 7ffh may be modified by eecon control R0000_03FF = 0x1 -- 000h to 3ffh write protected, 400h to 7ffh may be modified by eecon control R0000_07FF = 0x0 -- 000h to 7ffh write protected, no addresses may be modified by eecon control } pragma fuse_def VCAPEN:1 0x10 { -- vddcore visibility 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.9v V27 = 0x0 -- brown-out reset voltage (vbor) set to 2.7v } 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 } --