<root>

<build>

    <compiler exe="$(appdir)compilers\pic\bin\xc8.exe" 
	params="--chip=$(chipalt) &quot;$(target).c&quot; --MSGDISABLE=359,1273,1388"
	/>

    <programmer exe="$(appdir)tools\uCXpress\xpressprog.bat" 
	params="&quot;$(target).hex&quot;"
	/>
</build>

<device name='Microchip MPLABXpress' namealt='16F18855' product='PIC' family='16F' bits='8' >
    <clock max_speed='32000000' master_divider='4' fixed='32000000' />
    <memory >
        <flash bytes='14336' />
        <ram bytes='1024' />
    </memory>
    <pins sides='2' smd='0' >
        <pin name='RE3/MCLR' />
        <pin name='RA0/AN0' port='0' bit='0' adc='0' rpreg='RA0PPS' rpnum='0' />
        <pin name='RA1/AN1' port='0' bit='1' adc='1' rpreg='RA1PPS' rpnum='1' />
        <pin name='RA2/AN2' port='0' bit='2' adc='2' rpreg='RA2PPS' rpnum='2' />
        <pin name='RA3/AN3' port='0' bit='3' adc='3' rpreg='RA3PPS' rpnum='3' />
        <pin name='RA4/AN4' port='0' bit='4' adc='4' rpreg='RA4PPS' rpnum='4' />
        <pin name='RA5/AN5' port='0' bit='5' adc='5' rpreg='RA5PPS' rpnum='5' />
        <pin name='VSS' />
        <pin name='RA7/AN7' port='0' bit='7' adc='7' rpreg='RA7PPS' rpnum='7' />
        <pin name='RA6/AN6' port='0' bit='6' adc='6' rpreg='RA6PPS' rpnum='6' />
        <pin name='RC0/AN16' port='2' bit='0' adc='16' rpreg='RC0PPS' rpnum='16' />
        <pin name='RC1/AN17' port='2' bit='1' adc='17' rpreg='RC1PPS' rpnum='17' />
        <pin name='RC2/AN18' port='2' bit='2' adc='18' rpreg='RC2PPS' rpnum='18' />
        <pin name='RC3/AN19' port='2' bit='3' adc='19' rpreg='RC3PPS' rpnum='19' />
        <pin name='RC4/AN20' port='2' bit='4' adc='20' rpreg='RC4PPS' rpnum='20' />
        <pin name='RC5/AN21' port='2' bit='5' adc='21' rpreg='RC5PPS' rpnum='21' />
        <pin name='RC6/AN22' port='2' bit='6' adc='22' rpreg='RC6PPS' rpnum='22' />
        <pin name='RC7/AN23' port='2' bit='7' adc='23' rpreg='RC7PPS' rpnum='23' />
        <pin name='VSS' />
        <pin name='VDD' />
        <pin name='RB0/AN8' port='1' bit='0' adc='8' rpreg='RB0PPS' rpnum='8' />
        <pin name='RB1/AN9' port='1' bit='1' adc='9' rpreg='RB1PPS' rpnum='9' />
        <pin name='RB2/AN10' port='1' bit='2' adc='10' rpreg='RB2PPS' rpnum='10' />
        <pin name='RB3/AN11' port='1' bit='3' adc='11' rpreg='RB3PPS' rpnum='11' />
        <pin name='RB4/AN12' port='1' bit='4' adc='12' rpreg='RB4PPS' rpnum='12' />
        <pin name='RB5/AN13' port='1' bit='5' adc='13' rpreg='RB5PPS' rpnum='13' />
        <pin name='RB6/AN14' port='1' bit='6' adc='14' rpreg='RB6PPS' rpnum='14' />
        <pin name='RB7/AN15' port='1' bit='7' adc='15' rpreg='RB7PPS' rpnum='15' />
    </pins>
    <adc type='34' bits='10' >
        <speed >
            <option name='Fosc / 128' value='63' />
            <option name='Fosc / 126' value='62' />
            <option name='Fosc / 124' value='61' />
            <option name='Fosc / 122' value='60' />
            <option name='Fosc / 120' value='59' />
            <option name='Fosc / 118' value='58' />
            <option name='Fosc / 116' value='57' />
            <option name='Fosc / 114' value='56' />
            <option name='Fosc / 112' value='55' />
            <option name='Fosc / 110' value='54' />
            <option name='Fosc / 108' value='53' />
            <option name='Fosc / 106' value='52' />
            <option name='Fosc / 104' value='51' />
            <option name='Fosc / 102' value='50' />
            <option name='Fosc / 100' value='49' />
            <option name='Fosc / 98' value='48' />
            <option name='Fosc / 96' value='47' />
            <option name='Fosc / 94' value='46' />
            <option name='Fosc / 92' value='45' />
            <option name='Fosc / 90' value='44' />
            <option name='Fosc / 88' value='43' />
            <option name='Fosc / 86' value='42' />
            <option name='Fosc / 84' value='41' />
            <option name='Fosc / 82' value='40' />
            <option name='Fosc / 80' value='39' />
            <option name='Fosc / 78' value='38' />
            <option name='Fosc / 76' value='37' />
            <option name='Fosc / 74' value='36' />
            <option name='Fosc / 72' value='35' />
            <option name='Fosc / 70' value='34' />
            <option name='Fosc / 68' value='33' />
            <option name='Fosc / 66' value='32' />
            <option name='Fosc / 64' value='31' />
            <option name='Fosc / 62' value='30' />
            <option name='Fosc / 60' value='29' />
            <option name='Fosc / 58' value='28' />
            <option name='Fosc / 56' value='27' />
            <option name='Fosc / 54' value='26' />
            <option name='Fosc / 52' value='25' />
            <option name='Fosc / 50' value='24' />
            <option name='Fosc / 48' value='23' />
            <option name='Fosc / 46' value='22' />
            <option name='Fosc / 44' value='21' />
            <option name='Fosc / 42' value='20' />
            <option name='Fosc / 40' value='19' />
            <option name='Fosc / 38' value='18' />
            <option name='Fosc / 36' value='17' />
            <option name='Fosc / 34' value='16' />
            <option name='Fosc / 32' value='15' />
            <option name='Fosc / 30' value='14' />
            <option name='Fosc / 28' value='13' />
            <option name='Fosc / 26' value='12' />
            <option name='Fosc / 24' value='11' />
            <option name='Fosc / 22' value='10' />
            <option name='Fosc / 20' value='9' />
            <option name='Fosc / 18' value='8' />
            <option name='Fosc / 16' value='7' />
            <option name='Fosc / 14' value='6' />
            <option name='Fosc / 12' value='5' />
            <option name='Fosc / 10' value='4' />
            <option name='Fosc / 8' value='3' />
            <option name='Fosc / 6' value='2' />
            <option name='Fosc / 4' value='1' />
            <option name='Fosc / 2' value='0' />
        </speed>
        <vref>
            <option name='VDD' value='0' />
            <option name='Vref+' value='2' />
            <option name='FVR' value='3' />
        </vref>
    </adc>
    <dac type='1' bits='5' >
        <vref>
            <option name='VDD' value='0' />
            <option name='Vref+' value='1' />
            <option name='FVR' value='2' />
        </vref>
        <out port='0' pin='2' />
    </dac>
    <eeprom type='4' bytes='256' />
    <spi remappable='1' >
        <miso rpreg='SSP1DATPPS' />
        <mosi rpnum='21' />
        <clk rpnum='20' />
    </spi>
    <spi remappable='1' >
        <miso rpreg='SSP2DATPPS' />
        <mosi rpnum='23' />
        <clk rpnum='22' />
    </spi>
    <uart remappable='1' >
        <tx rpnum='16' />
        <rx rpreg='RXPPS' />
    </uart>
    <pwm remappable='1' >
    	<timer>
    	    <option name='Timer2' value='2' />
    	</timer>
        <prescaler >
            <option name='1' value='1' />
            <option name='4' value='4' />
            <option name='16' value='16' />
            <option name='64' value='64' />
        </prescaler>
        <out rpnum='9' />
        <out rpnum='10' />
        <out rpnum='11' />
        <out rpnum='12' />
        <out rpnum='13' />
    </pwm>
    <interrupts >
        <interrupt ident='TMR0' regl='TMR0L' regh='TMR0H' type='timer16' name='Timer 0' handler='#ifndef MX_INTHANDLER_INTCON_TMR0IF\n#define MX_INTHANDLER_INTCON_TMR0IF\nif (ts_bit(PIR0, TMR0IF) &amp;&amp; ts_bit(PIE0, TMR0IE))\n{\n\tFCM_%n();\n\tcr_bit(PIR0, TMR0IF);\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='st_bit(PIE0, TMR0IE);\n' disable='cr_bit(PIE0, TMR0IE);\nT0CON0 = 0;\n' >
            <timer overflow='65536' extrange='0' />
            <options >
                <option name='Clock Source Select' >
                    <entry name='Internal clock (CLKO)' clkdiv='4' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0x40;\n' />
                    <entry name='Transition on T0CKI pin' clkdiv='0' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0x00;\n' />
                    <entry name='Transition on T0CKI pin (Inverted)' clkdiv='0' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0x20;\n' />
                    <entry name='HFINTOSC' clkdiv='4' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0x60;\n' />
                    <entry name='LFINTOSC' clkdiv='4' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0x80;\n' />
                    <entry name='Secondary Oscillator (SOSC)' clkdiv='4' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0xC0;\n' />
                    <entry name='Configurable Logic Cell (CLC1)' clkdiv='4' value='T0CON1 = (T0CON1 &amp; 0x1F) | 0xE0;\n' />
                </option>
                <option name='Input Asynchronization' >
                    <entry name='TMR0 Input synchronised with FOSC/4' value='st_bit(T0CON1,T0ASYNC);\n' />
                    <entry name='TMR0 not synchronised to system clocks' value='cr_bit(T0CON1,T0ASYNC);\n' />
                </option>
                <prescale name='Prescaler Rate' >
                    <entry name='1:1' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x00;\n' />
                    <entry name='1:2' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x01;\n' />
                    <entry name='1:4' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x02;\n' />
                    <entry name='1:8' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x03;\n' />
                    <entry name='1:16' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x04;\n' />
                    <entry name='1:32' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x05;\n' />
                    <entry name='1:64' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x06;\n' />
                    <entry name='1:128' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x07;\n' />
                    <entry name='1:256' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x08;\n' />
                    <entry name='1:512' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x09;\n' />
                    <entry name='1:1024' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0A;\n' />
                    <entry name='1:2048' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0B;\n' />
                    <entry name='1:4096' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0C;\n' />
                    <entry name='1:8192' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0D;\n' />
                    <entry name='1:16384' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0E;\n' />
                    <entry name='1:32768' value='T0CON1 = (T0CON1 &amp; 0xF0) | 0x0F;\n' />
                </prescale>
                <postscale name='Postscaler Rate' >
                    <entry name='1:1' value='T0CON0 = 0x90;\n' />
                    <entry name='1:2' value='T0CON0 = 0x91;\n' />
                    <entry name='1:3' value='T0CON0 = 0x92;\n' />
                    <entry name='1:4' value='T0CON0 = 0x93;\n' />
                    <entry name='1:5' value='T0CON0 = 0x94;\n' />
                    <entry name='1:6' value='T0CON0 = 0x95;\n' />
                    <entry name='1:7' value='T0CON0 = 0x96;\n' />
                    <entry name='1:8' value='T0CON0 = 0x97;\n' />
                    <entry name='1:9' value='T0CON0 = 0x98;\n' />
                    <entry name='1:10' value='T0CON0 = 0x99;\n' />
                    <entry name='1:11' value='T0CON0 = 0x9A;\n' />
                    <entry name='1:12' value='T0CON0 = 0x9B;\n' />
                    <entry name='1:13' value='T0CON0 = 0x9C;\n' />
                    <entry name='1:14' value='T0CON0 = 0x9D;\n' />
                    <entry name='1:15' value='T0CON0 = 0x9E;\n' />
                    <entry name='1:16' value='T0CON0 = 0x9F;\n' />
                </postscale>
            </options>
        </interrupt>
        <interrupt ident='INT0' type='pin' name='INT0 Pin' handler='#ifndef MX_INTHANDLER_INTCON_INTF\n#define MX_INTHANDLER_INTCON_INTF\nif (ts_bit(PIR0, INTF) &amp;&amp; ts_bit(PIE0, INTE))\n{\n\tFCM_%n();\n\tcr_bit(PIR0, INTF);\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='st_bit(PIE0, INTE);\n' disable='cr_bit(PIE0, INTE);\n' >
            <ioc config='3' >
                <rising port='0' mask='4' />
                <falling port='0' mask='4' />
            </ioc>
            <options >
                <edge name='Interrupt Edge Select' >
                    <entry name='Rising edge of INT' value='st_bit(INTCON,INTEDG);\n' />
                    <entry name='Falling edge of INT' value='cr_bit(INTCON,INTEDG);\n' />
                </edge>
            </options>
        </interrupt>
        <interrupt ident='IOC0' type='multipin' name='IOC PORTAC' handler='#ifndef MX_INTHANDLER_INTCON_IOCIF\n#define MX_INTHANDLER_INTCON_IOCIF\nchar mxtmp;\nif (ts_bit(PIR0, IOCIF) &amp;&amp; ts_bit(PIE0, IOCIE))\n{\n\tFCM_%n();\n\tmxtmp=PORTA;\n\tmxtmp=PORTC;\n\tcr_bit(PIR0, IOCIF);\n\tIOCAF=0;\n\tIOCCF=0;\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='IOCAP=%pA0h;\nIOCAN=%pA0l;\nIOCCP=%pC0h;\nIOCCN=%pC0l;\nst_bit(PIE0, IOCIE);\n' disable='cr_bit(PIE0, IOCIE);\n' >
            <ioc config='0x0F' >
                <rising port='0' mask='0x3F' />
                <rising port='2' mask='0x3F' />
                <falling port='0' mask='0x3F' />
                <falling port='2' mask='0x3F' />
            </ioc>
        </interrupt>
        <interrupt ident='RXINT0' type='comms' name='UART RXINT0' handler='#ifndef MX_INTHANDLER_PIR1_RCIF\n#define MX_INTHANDLER_PIR1_RCIF\nif (ts_bit(PIR1, RCIF) &amp;&amp; ts_bit(PIE1, RCIE))\n{\n\tFCM_%n();\n\tcr_bit(PIR1, RCIF);\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='st_bit(PIE1, RCIE);\nst_bit(INTCON, PEIE);\n' disable='cr_bit(PIE1, RCIE);\n' />
        <interrupt ident='TMR2' regl='TMR2' regh='' type='timer8' name='Timer 2' handler='#ifndef MX_INTHANDLER_PIR1_TMR2IF\n#define MX_INTHANDLER_PIR1_TMR2IF\nif (ts_bit(PIR1, TMR2IF) &amp;&amp; ts_bit(PIE1, TMR2IE))\n{\n\tFCM_%n();\n\tcr_bit(PIR1, TMR2IF);\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='st_bit(PIE1, TMR2IE);\n' disable='cr_bit(PIE1, TMR2IE);\n' >
            <timer overflow='256' extrange='0' />
            <options >
                <prescale name='Prescaler Rate' >
                    <entry name='1:1' value='st_bit(INTCON,PEIE);\ncr_bit(T2CON,T2CKPS0);\ncr_bit(T2CON,T2CKPS1);\nst_bit(T2CON,TMR2ON);\n' />
                    <entry name='1:4' value='st_bit(INTCON,PEIE);\nst_bit(T2CON,T2CKPS0);\ncr_bit(T2CON,T2CKPS1);\nst_bit(T2CON,TMR2ON);\n' />
                    <entry name='1:16' value='st_bit(INTCON,PEIE);\ncr_bit(T2CON,T2CKPS0);\nst_bit(T2CON,T2CKPS1);\nst_bit(T2CON,TMR2ON);\n' />
                </prescale>
                <postscale name='Postscaler Rate' >
                    <entry name='1:1' value='T2CON = T2CON &amp; 0x07;\n' />
                    <entry name='1:2' value='T2CON = (T2CON &amp; 0x07) | 0x08;\n' />
                    <entry name='1:3' value='T2CON = (T2CON &amp; 0x07) | 0x10;\n' />
                    <entry name='1:4' value='T2CON = (T2CON &amp; 0x07) | 0x18;\n' />
                    <entry name='1:5' value='T2CON = (T2CON &amp; 0x07) | 0x20;\n' />
                    <entry name='1:6' value='T2CON = (T2CON &amp; 0x07) | 0x28;\n' />
                    <entry name='1:7' value='T2CON = (T2CON &amp; 0x07) | 0x30;\n' />
                    <entry name='1:8' value='T2CON = (T2CON &amp; 0x07) | 0x38;\n' />
                    <entry name='1:9' value='T2CON = (T2CON &amp; 0x07) | 0x40;\n' />
                    <entry name='1:10' value='T2CON = (T2CON &amp; 0x07) | 0x48;\n' />
                    <entry name='1:11' value='T2CON = (T2CON &amp; 0x07) | 0x50;\n' />
                    <entry name='1:12' value='T2CON = (T2CON &amp; 0x07) | 0x58;\n' />
                    <entry name='1:13' value='T2CON = (T2CON &amp; 0x07) | 0x60;\n' />
                    <entry name='1:14' value='T2CON = (T2CON &amp; 0x07) | 0x68;\n' />
                    <entry name='1:15' value='T2CON = (T2CON &amp; 0x07) | 0x70;\n' />
                    <entry name='1:16' value='T2CON = (T2CON &amp; 0x07) | 0x78;\n' />
                </postscale>
                <rollover name='Rollover Value' >
                    <entry name='256' min='1' max='256' value='PR2=%d-1;\n' />
                </rollover>
            </options>
        </interrupt>
        <interrupt ident='TMR1' regl='TMR1L' regh='TMR1H' type='timer16' name='Timer 1' handler='#ifndef MX_INTHANDLER_PIR1_TMR1IF\n#define MX_INTHANDLER_PIR1_TMR1IF\nif (ts_bit(PIR1, TMR1IF) &amp;&amp; ts_bit(PIE1, TMR1IE))\n{\n\tFCM_%n();\n\tcr_bit(PIR1, TMR1IF);\n}\n#else\n#warning &quot;This interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.&quot;\n#endif\n' enable='st_bit(PIE1, TMR1IE);\n' disable='cr_bit(PIE1, TMR1IE);\n' >
            <timer overflow='65536' extrange='0' />
            <options >
                <option name='Clock Source Select' >
                    <entry name='Transition on T1CKI pin' clkdiv='0' value='st_bit(INTCON,PEIE);\ncr_bit(T1CON,T1OSCEN);\nst_bit(T1CON,TMR1ON);\nst_bit(T1CON,TMR1CS1);\n' />
                    <entry name='Internal clock (Fosc/4)' clkdiv='4' value='st_bit(INTCON,PEIE);\ncr_bit(T1CON,T1OSCEN);\nst_bit(T1CON,TMR1ON);\ncr_bit(T1CON,TMR1CS1);\n' />
                    <entry name='32.768KHz XTAL T1CKI/T1CKO' clkdiv='0' value='st_bit(INTCON,PEIE);\nst_bit(T1CON,T1OSCEN);\nst_bit(T1CON,TMR1ON);\nst_bit(T1CON,TMR1CS1);\n' />
                </option>
                <prescale name='Prescaler Rate' >
                    <entry name='1:1' value='T1CON = T1CON &amp; 0x0F;\n' />
                    <entry name='1:2' value='T1CON = (T1CON &amp; 0x0F) | 0x10;\n' />
                    <entry name='1:4' value='T1CON = (T1CON &amp; 0x0F) | 0x20;\n' />
                    <entry name='1:8' value='T1CON = (T1CON &amp; 0x0F) | 0x30;\n' />
                </prescale>
            </options>
        </interrupt>
    </interrupts>
</device>
<inline >
    <defines code="__PROG_CONFIG(0x1, 0x3F8C);\n__PROG_CONFIG(0x2, 0x37FD);\n__PROG_CONFIG(0x3, 0x3D8D);\n__PROG_CONFIG(0x4, 0x1FFF);\n__PROG_CONFIG(0x5, 0x3FFF);\n\n" />
    <directives code="#include <xc.h>\n#include <math.h>\n\n" />
    <main >
        <start code='\nvoid main()\n{\n' />
        <end code='\tmainendloop: goto mainendloop;\n}\n\n' />
        <init code='ANSELA = 0x00;\nANSELC = 0x00;\n' />
    </main>
    <interrupt >
        <enable code='st_bit(INTCON,GIE);\n' />
        <start code='void MX_INTERRUPT_MACRO(void)\n{\n' />
        <end code='}\n\n' />
        <init code='' />
    </interrupt>
    <config >
	<start code='//Chip Configuration Settings\n' />
        <body code='' /> 
    </config>
</inline>
<test >
    <icd >
        <clock port='0' pin='1' />
        <data port='0' pin='0' />
    </icd>
</test>
</root>
