; Orange programmer module v1.8 ; (c) 2010-2014 CnCLab ; CHIP=PIC18F1220,4K,P18F4xxx.HPL ; AREA=FLASH,4K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F1320,8K,P18F4xxx.HPL ; AREA=FLASH,8K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2220,4K,P18F4xxx.HPL ; AREA=FLASH,4K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2221,4K,P18F4xxx.HPL ; AREA=FLASH,4K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2320,8K,P18F4xxx.HPL ; AREA=FLASH,8K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2321,8K,P18F4xxx.HPL ; AREA=FLASH,8K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2420,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2423,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2455,24K,P18F4xxx.HPL ; AREA=FLASH,24K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2458,24K,P18F4xxx.HPL ; AREA=FLASH,24K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2480,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2520,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2523,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2525,48K,P18F4xxx.HPL ; AREA=FLASH,48K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2550,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2553,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2580,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2585,48K,P18F4xxx.HPL ; AREA=FLASH,48K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2620,64K,P18F4xxx.HPL ; AREA=FLASH,64K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2680,64K,P18F4xxx.HPL ; AREA=FLASH,64K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2682,80K,P18F4xxx.HPL ; AREA=FLASH,80K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F2685,96K,P18F4xxx.HPL ; AREA=FLASH,96K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4220,4K,P18F4xxx.HPL ; AREA=FLASH,4K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4221,4K,P18F4xxx.HPL ; AREA=FLASH,4K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4320,8K,P18F4xxx.HPL ; AREA=FLASH,8K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4321,8K,P18F4xxx.HPL ; AREA=FLASH,8K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4420,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4423,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4455,24K,P18F4xxx.HPL ; AREA=FLASH,24K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4458,24K,P18F4xxx.HPL ; AREA=FLASH,24K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4480,16K,P18F4xxx.HPL ; AREA=FLASH,16K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4520,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4523,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4525,48K,P18F4xxx.HPL ; AREA=FLASH,48K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4550,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4553,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4580,32K,P18F4xxx.HPL ; AREA=FLASH,32K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4585,48K,P18F4xxx.HPL ; AREA=FLASH,48K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4620,64K,P18F4xxx.HPL ; AREA=FLASH,64K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4680,64K,P18F4xxx.HPL ; AREA=FLASH,64K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4682,80K,P18F4xxx.HPL ; AREA=FLASH,80K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ; CHIP=PIC18F4685,96K,P18F4xxx.HPL ; AREA=FLASH,96K(8),0,m ; AREA=EEPROM,256,0F00000h ; AREA=ID,8(8),200000h,m ; AREA=CONFIG,14,300000h ;Äëÿ PIC18F14K50 VCC=3V, VPP=9V ;DS39622L for PIC18F: ;2221 2321 ;2420 2423 2455 2458 2480 ;2520 2523 2525 2550 2553 2580 2585 ;2620 2680 2682 2685 ;4221 ;4321 ;4420 4423 4455 4458 4480 ;4520 4523 4525 4550 4553 4580 4585, ;4620 4680 4682 4685 ; Use p18f4x1x.hpl for PICs w/o EEPROM ; ERASE algo not compatible with p18f258.hpl! ;Tested - PIC18F2520,PIC18F6527, PIC18F14K50 (Vcc=3V!) ;PIC18F1320 ds39592f ;PIC18F24K20 tested EEPROM read ID=20BB ;PIC18F4620 read ALLPINS=28 INFO="PIC Adapter" PING=SDA,1,28 ;RB7 PINO=CLK,0,27 ;RB6 PINO=MCLR,5,1 ;/MCLR PING=GND,255,8 ;Vss PINO=VCC,254,20 ;Vcc CDELAY=1 R1=CONFIG,H [_CMD] ; R0 - CMD ;P=1 LOOP=(0,3){SDA=R0[I],CLK=P} ;P=1 [_CMD0] SDA=0,CLK=P4 [_OUT] LOOP=(0,7){SDA=R0[I],CLK=P} [_OUTW] LOOP=(0,15){SDA=R0[I],CLK=P} ; R1 - Hi, R0 - Lo [_OUT2] R1=&0xFF,R1=<<8 R0=&0xFF,R0=|R1 _OUTW [_IN] SDA=1 R1=0 LOOP=(0,7){CLK=1,R1[I]=SDA,CLK=0} ; Special cmd with delay [_CMDNOP] SDA=0,CLK=P3 CLK=1,P=1100,CLK=0 P=200 _OUTW(0) [_INCADD] R8=ADR LOOP=(0,0xFFFF){ ;increment address to current value! R9?R8{BREAK} _CMD(6) ;INCADD R9=+1 } ;------------------------------------------------- ; Read all memory w/o EEPROM, return R1 ;R3 - full adr [_RDFL] ;PRINT=("%02X",R3) _CMD0,R1=0x0E,R0=R3,R0=>>16,_OUT2 _CMD0,_OUTW(0x6EF8) _CMD0,R1=0x0E,R0=R3,R0=>>8,_OUT2 _CMD0,_OUTW(0x6EF7) _CMD0,R1=0x0E,R0=R3,_OUT2 _CMD0,_OUTW(0x6EF6) _CMD(1001b),_OUT(0),P=1 _IN ; Read EEPROM, return R1 [_RDEE] ; Step 1: Direct access to data EEPROM _CMD0,_OUTW(0x9EA6) _CMD0,_OUTW(0x9CA6) ; Step 2: Set EEPROM address pointer _CMD0,R1=0x0E,R0=ADR,_OUT2 _CMD0,_OUTW(0x6EA9) _CMD0,R1=0x0E,R0=ADR,R0=/256,_OUT2 _CMD0,_OUTW(0x6EAA) ; Step 3: Initiate a memory read _CMD0,_OUTW(0x80A6) ; Step 4: Load data into the Serial Data Holding register _CMD0,_OUTW(0x50A8) _CMD0,_OUTW(0x6EF5) _CMD0,_OUTW(0x0000) ;need for PIC18F2xxx/4xxx (DS39622L) _CMD(0010b),_OUT(0),P=1 _IN [INIT] MCLR=0 CLK=0,SDA=0 $VERSION=/65536 $VERSION?3{P=100000} P=20000 MCLR=1,VPP=12500,P=25000 ;Programm/Verify Mode! SDA=1,P=100 R9=0 ;current address register ;Read ID for connect test R3=3FFFFEH,_RDFL,R9=R1 R3=3FFFFFH,_RDFL,R1=*256,R1=|R9 R1?0xFFFF{ PRINT=A("MCU not detected.\nContinue?") RA?0{EXIT} } ;------------------------------------------------- [READ] ;$AREA?0{_RDFL,RETURN} $AREA?1{_RDEE,DATA=R1,RETURN} ;$AREA?2{_RDFL,RETURN} ;$AREA?3{_RDFL,RETURN} R3=ADR,R3=+RC _RDFL DATA=R1 ; not for EEPROM, Only FLASH,ID,CFG - For speed++ [READBLOCK] R4=ADR,R4=+RC _CMD0,R1=0x0E,R0=R4,R0=>>16,_OUT2 _CMD0,_OUTW(0x6EF8) _CMD0,R1=0x0E,R0=R4,R0=>>8,_OUT2 _CMD0,_OUTW(0x6EF7) LOOP($BLOCKSIZE){ _CMD0,R1=0x0E,R0=R4,_OUT2 _CMD0,_OUTW(0x6EF6) ;only low address _CMD(1001b),_OUT(0),P=1 _IN DATA=R1 R4=+1 ;ADR++ ADR=+1 } ;Data EEPROM Programming [_WREE] _CMD0,_OUTW(0x9EA6) _CMD0,_OUTW(0x9CA6) _CMD0,R1=0x0E,R0=ADR,_OUT2 _CMD0,_OUTW(0x6EA9) _CMD0,R1=0x0E,R0=ADR,R0=/256,_OUT2 _CMD0,_OUTW(0x6EAA) _CMD0,R1=0x0E,R0=DATA,_OUT2 _CMD0,_OUTW(0x6EA8) _CMD0,_OUTW(0x84A6) _CMD0,_OUTW(0x0E55) ;pass _CMD0,_OUTW(0x6EA7) _CMD0,_OUTW(0x0EAA) _CMD0,_OUTW(0x6EA7) _CMD0,_OUTW(0x82A6) _CMD0,_OUTW(0x50A6) _CMD0,_OUTW(0x6EF5) _CMD(0010b),_OUT(0),SDA=1 _IN P=10000 ;todo _CMD0,_OUTW(0x94A6) [_WRCFG] ;Enabling the write protection of config bits (WRTC = 0 in CONFIG6H) ;will prevent further writing of config bits. ;Always write all the config bits before enabling the write protection for config bits ;Step 1: Direct access to config memory ;PRINT=L("WRF") _CMD0,_OUTW(0x8EA6) _CMD0,_OUTW(0x8CA6) ;Step 2: Position the program counter _CMD0,_OUTW(0xEF00) _CMD0,_OUTW(0xF800) ;Step 3(2): Set Table Pointer for config byte to be written. Write even/odd addresses R3=ADR,R3=+RC _CMD0,R1=0x0E,R0=R3,R0=>>16,_OUT2 _CMD0,_OUTW(0x6EF8) _CMD0,R1=0x0E,R0=R3,R0=>>8,_OUT2 _CMD0,_OUTW(0x6EF7) _CMD0,R1=0x0E,R0=R3,_OUT2 _CMD0,_OUTW(0x6EF6) _CMD(1111b) R0=DATA,_OUT ; one of byte ignored R0=DATA,_OUT ; _CMDNOP [WRITE] $AREA?1{_WREE,RETURN} $AREA?3{_WRCFG,RETURN} ; FLASH & ID [WRITEBLOCK] ;Step 1: Direct access to config memory ;PRINT=L("WRF") _CMD0,_OUTW(0x8EA6) _CMD0,_OUTW(0x8CA6) _CMD0,_OUTW(0x86A6) ;Step 2: Configure device for multi-panel writes. _CMD0,_OUTW(0x0E3C) _CMD0,_OUTW(0x6EF8) _CMD0,_OUTW(0x0E00) _CMD0,_OUTW(0x6EF7) _CMD0,_OUTW(0x0E06) _CMD0,_OUTW(0x6EF6) _CMD(1100b),_OUTW(0x0000) ;single panel writes ;Step 3: Direct access to code memory. _CMD0,_OUTW(0x8EA6) _CMD0,_OUTW(0x9CA6) ;Step 4: Load write buffer for Panel 1. R3=ADR,R3=+RC _CMD0,R1=0x0E,R0=R3,R0=>>16,_OUT2 _CMD0,_OUTW(0x6EF8) _CMD0,R1=0x0E,R0=R3,R0=>>8,_OUT2 _CMD0,_OUTW(0x6EF7) _CMD0,R1=0x0E,R0=R3,_OUT2 _CMD0,_OUTW(0x6EF6) LOOP(3){ _CMD(1101b) R0=DATA,_OUT,ADR=+1 R0=DATA,_OUT,ADR=+1 } _CMD(1111b) ;last panel!!! R0=DATA,_OUT,ADR=+1 R0=DATA,_OUT,ADR=+1 ; _CMDNOP [Erase] _CMD0,_OUTW(0x0E3C) _CMD0,_OUTW(0x6EF8) _CMD0,_OUTW(0x0E00) _CMD0,_OUTW(0x6EF7) _CMD0,_OUTW(0x0E05) ;! _CMD0,_OUTW(0x6EF6) _CMD(1100b),_OUTW(0x3F3F) ;! _CMD0,_OUTW(0x0E3C) _CMD0,_OUTW(0x6EF8) _CMD0,_OUTW(0x0E00) _CMD0,_OUTW(0x6EF7) _CMD0,_OUTW(0x0E04) ;! _CMD0,_OUTW(0x6EF6) _CMD(1100b),_OUTW(0x8F8F) ;! _CMD0,_OUTW(0x0000) _CMD0 P=50000 _OUTW(0x0000) P=50000 [END] MCLR=0 VPP=0 CLK=0,SDA=0 ["Read ID"] R3=3FFFFEH,_RDFL,R9=R1 R3=3FFFFFH,_RDFL,R1=*256,R1=|R9 R2=R1 R2=&0FFE0H ;id mask R2?0480H{PRINT=("ID=%04X - PIC18F242",R1),EXIT} R2?0400H{PRINT=("ID=%04X - PIC18F252",R1),EXIT} R2?04A0H{PRINT=("ID=%04X - PIC18F442",R1),EXIT} R2?0420H{PRINT=("ID=%04X - PIC18F452",R1),EXIT} R2?0500H{PRINT=("ID=%04X - PIC18F2320",R1),EXIT} R2?0520H{PRINT=("ID=%04X - PIC18F4320",R1),EXIT} R2?0580H{PRINT=("ID=%04X - PIC18F2220",R1),EXIT} R2?05A0H{PRINT=("ID=%04X - PIC18F4220",R1),EXIT} R2?07C0H{PRINT=("ID=%04X - PIC18F1320",R1),EXIT} R2?07E0H{PRINT=("ID=%04X - PIC18F1220",R1),EXIT} R2?0800H{PRINT=("ID=%04X - PIC18F248",R1),EXIT} R2?0840H{PRINT=("ID=%04X - PIC18F258",R1),EXIT} R2?0820H{PRINT=("ID=%04X - PIC18F448",R1),EXIT} R2?0860H{PRINT=("ID=%04X - PIC18F458",R1),EXIT} R2?0C00H{PRINT=("ID=%04X - PIC18F4620",R1),EXIT} R2?0C20H{PRINT=("ID=%04X - PIC18F4610",R1),EXIT} R2?0C40H{PRINT=("ID=%04X - PIC18F4525",R1),EXIT} R2?0C60H{PRINT=("ID=%04X - PIC18F4515",R1),EXIT} R2?0C80H{PRINT=("ID=%04X - PIC18F2620",R1),EXIT} R2?0CA0H{PRINT=("ID=%04X - PIC18F2610",R1),EXIT} R2?0CC0H{PRINT=("ID=%04X - PIC18F2525",R1),EXIT} R2?0CE0H{PRINT=("ID=%04X - PIC18F2515",R1),EXIT} R2?0EA0H{PRINT=("ID=%04X - PIC18F4585",R1),EXIT} R2?0EC0H{PRINT=("ID=%04X - PIC18F2680",R1),EXIT} R2?0EE0H{PRINT=("ID=%04X - PIC18F2585",R1),EXIT} R2?1080H{PRINT=("ID=%04X - PIC18F4520/23",R1),EXIT} R2?10A0H{PRINT=("ID=%04X - PIC18F4510",R1),EXIT} R2?10C0H{PRINT=("ID=%04X - PIC18F4420/23",R1),EXIT} R2?10E0H{PRINT=("ID=%04X - PIC18F4410",R1),EXIT} R2?1100H{PRINT=("ID=%04X - PIC18F2520/23",R1),EXIT} R2?1120H{PRINT=("ID=%04X - PIC18F2510",R1),EXIT} R2?1140H{PRINT=("ID=%04X - PIC18F2420/23",R1),EXIT} R2?1160H{PRINT=("ID=%04X - PIC18F2410",R1),EXIT} R2?1200H{PRINT=("ID=%04X - PIC18F4550",R1),EXIT} R2?1220H{PRINT=("ID=%04X - PIC18F4455",R1),EXIT} R2?1240H{PRINT=("ID=%04X - PIC18F2550",R1),EXIT} R2?1260H{PRINT=("ID=%04X - PIC18F2455",R1),EXIT} R2?1340H{PRINT=("ID=%04X - PIC18F6527",R1),EXIT} R2?1360H{PRINT=("ID=%04X - PIC18F8527",R1),EXIT} R2?1380H{PRINT=("ID=%04X - PIC18F6622",R1),EXIT} R2?13A0H{PRINT=("ID=%04X - PIC18F8622",R1),EXIT} R2?13C0H{PRINT=("ID=%04X - PIC18F6627",R1),EXIT} R2?13E0H{PRINT=("ID=%04X - PIC18F8627",R1),EXIT} R2?1400H{PRINT=("ID=%04X - PIC18F6722",R1),EXIT} R2?1A80H{PRINT=("ID=%04X - PIC18F4580",R1),EXIT} R2?1AA0H{PRINT=("ID=%04X - PIC18F4480",R1),EXIT} R2?1AC0H{PRINT=("ID=%04X - PIC18F2580",R1),EXIT} R2?1AE0H{PRINT=("ID=%04X - PIC18F2480",R1),EXIT} R2?2100H{PRINT=("ID=%04X - PIC18F4321",R1),EXIT} R2?2120H{PRINT=("ID=%04X - PIC18F2321",R1),EXIT} R2?2140H{PRINT=("ID=%04X - PIC18F4221",R1),EXIT} R2?2160H{PRINT=("ID=%04X - PIC18F2221",R1),EXIT} R2?2400H{PRINT=("ID=%04X - PIC18F4450",R1),EXIT} R2?2420H{PRINT=("ID=%04X - PIC18F2450",R1),EXIT} R2?2700H{PRINT=("ID=%04X - PIC18F2682",R1),EXIT} R2?2720H{PRINT=("ID=%04X - PIC18F2685",R1),EXIT} R2?2A00H{PRINT=("ID=%04X - PIC18F4553",R1),EXIT} R2?2A20H{PRINT=("ID=%04X - PIC18F4458",R1),EXIT} R2?2A40H{PRINT=("ID=%04X - PIC18F2553",R1),EXIT} R2?2A60H{PRINT=("ID=%04X - PIC18F2458",R1),EXIT} R2?4700H{PRINT=("ID=%04X - PIC18LF13K50",R1),EXIT} R2?4720H{PRINT=("ID=%04X - PIC18LF14K50",R1),EXIT} R2?4740H{PRINT=("ID=%04X - PIC18F13K50",R1),EXIT} R2?4760H{PRINT=("ID=%04X - PIC18F14K50",R1),EXIT} R2?49C0H{PRINT=("ID=%04X - PIC18F6628",R1),EXIT} R2?49E0H{PRINT=("ID=%04X - PIC18F8628",R1),EXIT} R2?4A20H{PRINT=("ID=%04X - PIC18F8723",R1),EXIT} PRINT=("ID = %04lX",R1)