[Device] Pins=40 Ports=5 ADCPins=13 ADCBits=10 ADCType=13 MaxClock=48000000 PrescalerBits=3 ClockDivider=4 TimerOverflow=256 ConfigAddress=0x300000 ConfigCount=14 PWMCount=2 UARTCount=1 EepromSize=256 HasAltPWM=2 Pwm2IsD4=0 ChipName=18F4455 ConfigOverride=1 ClockOverrideValue=48000000 ProgrammerOverride=tools/ECIOprog/ECIOprog.exe ProgSwitchesOverride=-nogui "%f.hex" ExtraLinkerParams=-rb 0x800 FlowcodeProduct=PIC DefaultPackageType=0 [ICD] ClockPort=2 ClockPin=4 DataPort=4 DataPin=2 [Config] 0=0x20 1=0x0E 2=0x3E 3=0x1E 4=0x00 5=0x81 6=0x81 7=0x00 8=0x0F 9=0x80 10=0x0F 11=0xA0 12=0x0F 13=0x00 [Pins] Pin1 = "VDD_OUT" Pin2 = "GND" Pin3 = "MCLR" Pin4 = "RA0/AN0" Pin5 = "RA1/AN1" Pin6 = "RA2/AN2/VREF-/CVREF" Pin7 = "RA3/AN3/VREF+" Pin8 = "RA4/T0CKI/C1OUT/RCV" Pin9 = "RA5/AN4/SS/HLVDIN/C2OUT" Pin10 = "N/C" Pin11 = "N/C" Pin12 = "N/C" Pin13 = "RD0/SPP0" Pin14 = "RD1/SPP1" Pin15 = "RD2/SPP2" Pin16 = "RD3/SPP3" Pin17 = "RD4/SPP4" Pin18 = "RD5/SPP5/P1B" Pin19 = "RD6/SPP6/P1C" Pin20 = "RD7/SPP7/P1D" Pin21 = "N/C" Pin22 = "N/C" Pin23 = "RE0/AN5/CK1SPP" Pin24 = "RE1/AN6/CK2SPP" Pin25 = "RE2/AN7/OESPP" Pin26 = "GND" Pin27 = "RC0/T1OSO" Pin28 = "RC1/T1OSI/CCP2B" Pin29 = "RC2/CCP1/P1A" Pin30 = "RC6/TX/CK" Pin31 = "RC7/RX/DT/SDO" Pin32 = "RB0/AN12/INT0/FLT0/SDI/SDA" Pin33 = "RB1/AN10/INT1/SCK/SCL" Pin34 = "RB2/AN8/INT2/VMO" Pin35 = "RB3/AN9/CCP2/VPO" Pin36 = "RB4/AN11/KBI0/CSSPP" Pin37 = "RB5/KBI1/PGM" Pin38 = "RB6/KBI2/PGC" Pin39 = "RB7/KBI3/PGD" Pin40 = "VDD_IN" [Ports] PortPin4=0x0000 PortPin5=0x0001 PortPin6=0x0002 PortPin7=0x0003 PortPin8=0x0004 PortPin9=0x0005 PortPin13=0x0300 PortPin14=0x0301 PortPin15=0x0302 PortPin16=0x0303 PortPin17=0x0304 PortPin18=0x0305 PortPin19=0x0306 PortPin20=0x0307 PortPin23=0x0400 PortPin24=0x0401 PortPin25=0x0402 PortPin27=0x0200 PortPin28=0x0201 PortPin29=0x0202 PortPin30=0x0206 PortPin31=0x0207 PortPin32=0x0100 PortPin33=0x0101 PortPin34=0x0102 PortPin35=0x0103 PortPin36=0x0104 PortPin37=0x0105 PortPin38=0x0106 PortPin39=0x0107 [PortMasks] PortMask0=0x3F PortMask1=0xFF PortMask2=0xF7 PortMask3=0xFF PortMask4=0x0F [ADCPins] ADC0=2 ADC1=3 ADC2=4 ADC3=5 ADC4=7 ADC5=8 ADC6=9 ADC7=10 ADC8=35 ADC9=36 ADC10=34 ADC11=37 ADC12=33 [Code] ;Substitute macros ;%c Clock Speed ;%o Operand ;%s Prescaler ;%p PortID ;%m MaskBits ;%i Inverse Mask ;%a ADC channel ;%a Config Address ;%v Config Value ;%r Interrupt Flag Register ;%b Interrupt Flag Bit ;%n Interrupt Macro Name Directives="#include \n#pragma CLOCK_FREQ %c\n" MainStart="void main()\n{\n" MainEnd="\tmainendloop: goto mainendloop;\n}\n\n" IntStart="void interrupt(void)\n{\n" IntEnd="}\n\n" Initialise="adcon1 = 0x0F;\n\tucfg = 0x08;\n" IntInit="\n\n" InputCmdFull="tris%p = tris%p | %m;\n%o = port%p;\n" InputCmdOneBit="tris%p = tris%p | %m;\n%o = ((port%p & %m) == %m);\n" InputCmdMask="tris%p = tris%p | %m;\n%o = port%p & %m;\n" OutputCmdFull="tris%p = 0x00;\nport%p = %o;\n" OutputCmdOneBit="tris%p = tris%p & %i;\nif (%o)\n\tport%p = (port%p & %i) | %m;\nelse\n\tport%p = port%p & %i;\n" OutputCmdMask="tris%p = tris%p & %i;\nport%p = (port%p & %i) | (%o & %m);\n" DelayCmdS="delay_s(%o);\n" DelayCmdMs="delay_ms(%o);\n" DelayCmdUs="delay_us(%o);\n" WdtDelayCmdS="Wdt_Delay_S(%o);\n" WdtDelayCmdMs="Wdt_Delay_Ms(%o);\n" InitialPortLetter="a" ConfigData="#pragma DATA %a, %v\n" IntHandler="if (%r & (1 << %b))\n{\n\tFCM_%n();\n\tclear_bit(%r, %b);\n}\n" [Defines] Define1=#define P18F4455 Define2=#define MX_EE Define3=#define MX_EE_TYPE3 Define4=#define MX_EE_SIZE 256 Define5=#define MX_SPI Define6=#define MX_SPI_BCB Define7=#define MX_SPI_SDI 0 Define8=#define MX_SPI_SDO 7 Define9=#define MX_SPI_SCK 1 Define10=#define MX_UART Define11=#define MX_UART_C Define12=#define MX_UART_TX 6 Define13=#define MX_UART_RX 7 Define14=#define MX_I2C Define15=#define MX_MI2C Define16=#define MX_I2C_B Define17=#define MX_I2C_SDA 0 Define18=#define MX_I2C_SCL 1 Define19=#define MX_PWM Define20=#define MX_PWM_CNT 2 Define21=#define MX_PWM_TRIS1 trisc Define22=#define MX_PWM_1 2 Define23=#define MX_PWM_TRIS2 trisc Define24=#define MX_PWM_2 1 Define25=#define MX_PWM_TRIS2a trisb Define26=#define MX_PWM_2a 3 Define27=#define MX_USB_TYPE1 [Interrupts] ;first 3 should always be 1=TMR0, 2=RB0INT, 3=PORTB ;any other interrupts need to also have this set: "intcon.PEIE=1;\n" GeneralInit="intcon.GIE=1;\n" Count=9 1=TMR0 2=RB0INT 3=PORTB 4=TMR1 5=RB1INT 6=RB2INT 7=USBINT 8=RXINT 9=TMR2 [TMR0] Name="TMR0" FlagReg=intcon FlagBit=TMR0IF HandlerCode="if ((intcon & (1 << TMR0IF)) && (intcon & (1 << TMR0IE)))\n{\n\tFCM_%n();\n\tclear_bit(intcon, TMR0IF);\n}\n" UseExplicitHandlerCode=1 EnReg=intcon EnBit=TMR0IE OptCnt=3 PrescaleOpt=3 MaxTimerOverflow=256 Opt1="Clock Source Select" Opt1Cnt=2 Opt1_1="Transition on T0CKI pin" Opt1_1Val="t0con.T0CS=1;\n" Opt1_2="Internal clock (CLKO)" Opt1_2Val="t0con.T0CS=0;\n" Opt2="Source Edge Select" Opt2Cnt=2 Opt2_1="high-to-low transition on T0CKI" Opt2_1Val="t0con.T0SE=1;\n" Opt2_2="low-to-high transition on T0CKI" Opt2_2Val="t0con.T0SE=0;\n" Opt3="Prescaler Rate" Opt3Cnt=9 Opt3_1="1:1" Opt3_1Val="t0con = (t0con & 0xF0) | 0x08;\n" Opt3_2="1:2" Opt3_2Val="t0con = (t0con & 0xF0) | 0x00;\n" Opt3_3="1:4" Opt3_3Val="t0con = (t0con & 0xF0) | 0x01;\n" Opt3_4="1:8" Opt3_4Val="t0con = (t0con & 0xF0) | 0x02;\n" Opt3_5="1:16" Opt3_5Val="t0con = (t0con & 0xF0) | 0x03;\n" Opt3_6="1:32" Opt3_6Val="t0con = (t0con & 0xF0) | 0x04;\n" Opt3_7="1:64" Opt3_7Val="t0con = (t0con & 0xF0) | 0x05;\n" Opt3_8="1:128" Opt3_8Val="t0con = (t0con & 0xF0) | 0x06;\n" Opt3_9="1:256" Opt3_9Val="t0con = (t0con & 0xF0) | 0x07;\n" [RB0INT] Name="RB0/INT0" FlagReg=intcon FlagBit=INT0IF HandlerCode="if ((intcon & (1 << INT0IF)) && (intcon & (1 << INT0IE)))\n{\n\tFCM_%n();\n\tclear_bit(intcon, INT0IF);\n}\n" UseExplicitHandlerCode=1 EnReg=intcon EnBit=INT0IE OptCnt=1 TmrOpt=0 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of RB0/INT0" Opt1_1Val="intcon2.INTEDG0=1;\n" Opt1_2="falling edge of RB0/INT0" Opt1_2Val="intcon2.INTEDG0=0;\n" [PORTB] Name="PORT" FlagReg=intcon FlagBit=RBIF HandlerCode="if ((intcon & (1 << RBIF)) && (intcon & (1 << RBIE)))\n{\n\tFCM_%n();\n\tclear_bit(intcon, RBIF);\n}\n" UseExplicitHandlerCode=1 EnReg=intcon EnBit=RBIE OptCnt=0 TmrOpt=0 [TMR1] Name="TMR1" FlagReg=pir1 FlagBit=TMR1IF HandlerCode="if ((pir1 & (1 << TMR1IF)) && (pie1 & (1 << TMR1IE)))\n{\n\tFCM_%n();\n\tclear_bit(pir1, TMR1IF);\n}\n" UseExplicitHandlerCode=1 EnReg=pie1 EnBit=TMR1IE OptCnt=2 PrescaleOpt=2 MaxTimerOverflow=65536 Opt1="Clock Source Select" Opt1Cnt=2 Opt1_1="Transition on T1CKI pin" Opt1_1Val="intcon.PEIE=1;\nt1con.T1OSCEN=1;\nt1con.TMR1ON=1;\nt1con.TMR1CS=1;\n" Opt1_2="Internal clock (Fosc/4)" Opt1_2Val="intcon.PEIE=1;\nt1con.T1OSCEN=1;\nt1con.TMR1ON=1;\nt1con.TMR1CS=0;\n" Opt2="Prescaler Rate" Opt2Cnt=4 Opt2_1="1:1" Opt2_1Val="t1con = t1con & 0x0F;\n" Opt2_2="1:2" Opt2_2Val="t1con = (t1con & 0x0F) | 0x10;\n" Opt2_3="1:4" Opt2_3Val="t1con = (t1con & 0x0F) | 0x20;\n" Opt2_4="1:8" Opt2_4Val="t1con = (t1con & 0x0F) | 0x30;\n" [RB1INT] Name="RB1/INT1" FlagReg=intcon3 FlagBit=INT1IF HandlerCode="if ((intcon3 & (1 << INT1IF)) && (intcon3 & (1 << INT1IE)))\n{\n\tFCM_%n();\n\tclear_bit(intcon3, INT1IF);\n}\n" UseExplicitHandlerCode=1 EnReg=intcon3 EnBit=INT1IE OptCnt=1 TmrOpt=0 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of RB1/INT1" Opt1_1Val="intcon2.INTEDG1=1;\n" Opt1_2="falling edge of RB1/INT1" Opt1_2Val="intcon2.INTEDG1=0;\n" [RB2INT] Name="RB2/INT2" FlagReg=intcon3 FlagBit=INT2IF HandlerCode="if ((intcon3 & (1 << INT2IF)) && (intcon3 & (1 << INT2IE)))\n{\n\tFCM_%n();\n\tclear_bit(intcon3, INT2IF);\n}\n" UseExplicitHandlerCode=1 EnReg=intcon3 EnBit=INT2IE OptCnt=1 TmrOpt=0 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of RB2/INT2" Opt1_1Val="intcon2.INTEDG2=1;\n" Opt1_2="falling edge of RB2/INT2" Opt1_2Val="intcon2.INTEDG2=0;\n" [USBINT] Name="USBINT" FlagReg=pir2 FlagBit=USBIF HandlerCode="if ((pir2 & (1 << USBIF)) && (pie2 & (1 << USBIE)))\n{\n\tFCM_%n();\n\tclear_bit(pir2, USBIF);\n}\n" UseExplicitHandlerCode=1 EnReg=pie2 EnBit=USBIE OptCnt=0 TmrOpt=0 [RXINT] Name="RXINT" FlagReg=pir1 FlagBit=RCIF HandlerCode="if ((pir1 & (1 << RCIF)) && (pie1 & (1 << RCIE)))\n{\n\tFCM_%n();\n\tclear_bit(pir1, RCIF);\n}\n" UseExplicitHandlerCode=1 EnReg=pie1 EnBit=RCIE OptCnt=0 TmrOpt=0 [TMR2] Name="TMR2" FlagReg=pir1 FlagBit=TMR2IF HandlerCode="if ((pir1 & (1 << TMR2IF)) && (pie1 & (1 << TMR2IE)))\n{\n\tFCM_%n();\n\tclear_bit(pir1, TMR2IF);\n}\n" UseExplicitHandlerCode=1 EnReg=pie1 EnBit=TMR2IE OptCnt=3 PrescaleOpt=1 PostScaleOpt=2 RolloverOpt=3 MaxTimerOverflow=256 Opt1="Prescaler Rate" Opt1Cnt=3 Opt1_1="1:1" Opt1_1Val="intcon.PEIE=1;\nt2con.T2CKPS0=0;\nt2con.T2CKPS1=0;\nt2con.TMR2ON=1;\n" Opt1_2="1:4" Opt1_2Val="intcon.PEIE=1;\nt2con.T2CKPS0=1;\nt2con.T2CKPS1=0;\nt2con.TMR2ON=1;\n" Opt1_3="1:16" Opt1_3Val="intcon.PEIE=1;\nt2con.T2CKPS0=0;\nt2con.T2CKPS1=1;\nt2con.TMR2ON=1;\n" Opt2="Postscaler Rate" Opt2Cnt=16 Opt2_1="1:1" Opt2_1Val="t2con = t2con & 0x07;\n" Opt2_2="1:2" Opt2_2Val="t2con = (t2con & 0x07) | 0x08;\n" Opt2_3="1:3" Opt2_3Val="t2con = (t2con & 0x07) | 0x10;\n" Opt2_4="1:4" Opt2_4Val="t2con = (t2con & 0x07) | 0x18;\n" Opt2_5="1:5" Opt2_5Val="t2con = (t2con & 0x07) | 0x20;\n" Opt2_6="1:6" Opt2_6Val="t2con = (t2con & 0x07) | 0x28;\n" Opt2_7="1:7" Opt2_7Val="t2con = (t2con & 0x07) | 0x30;\n" Opt2_8="1:8" Opt2_8Val="t2con = (t2con & 0x07) | 0x38;\n" Opt2_9="1:9" Opt2_9Val="t2con = (t2con & 0x07) | 0x40;\n" Opt2_10="1:10" Opt2_10Val="t2con = (t2con & 0x07) | 0x48;\n" Opt2_11="1:11" Opt2_11Val="t2con = (t2con & 0x07) | 0x50;\n" Opt2_12="1:12" Opt2_12Val="t2con = (t2con & 0x07) | 0x58;\n" Opt2_13="1:13" Opt2_13Val="t2con = (t2con & 0x07) | 0x60;\n" Opt2_14="1:14" Opt2_14Val="t2con = (t2con & 0x07) | 0x68;\n" Opt2_15="1:15" Opt2_15Val="t2con = (t2con & 0x07) | 0x70;\n" Opt2_16="1:16" Opt2_16Val="t2con = (t2con & 0x07) | 0x78;\n" Opt3="Rollover Value" Opt3Cnt=5 Opt3_1="256" Opt3_1Val="pr2=%d-1;\n" Opt3_2="128" Opt3_2Val="NOTE: only Opt3_1Val is needed here" Opt3_3="64" Opt3_3Val="NOTE: only Opt3_1Val is needed here" Opt3_4="32" Opt3_4Val="NOTE: only Opt3_1Val is needed here" Opt3_5="16" Opt3_5Val="NOTE: only Opt3_1Val is needed here"