Practical PIC Projects



ICSP Programming Adapter for 8/14/16/18/20 Pin DIP PIC12F/16F


  • Overview

  • Schematic

  • PCB Artwork

  • Description

  • Which PICkit programmer

  • Operation





This is a simple programming adapter for use with the PICkit2/3 programmers.  It can be built using the PCB provided, on stripboard or a breadboard and allows the popular 8 to 20 pin PICs to be programmed.

If you regularly work with larger PICs this adapter may be of limited use.  I generally work with the smaller PICs so a 20-pin adapter is practical for my needs day-to-day. 



For ICSP (In-Circuit Serial Programming) the PIC requires only 5 connections between the PICkit2/3 programmer and the PIC. Since all pins on the PIC are set to either digital or analogue input at reset the programming signals and power can be applied to multiple pins without damaging anything or affecting programming.  The Vpp signal which is raised to around +12.5volts during programming is applied to only one common pin so this doesn't present any issues. (This adapter doesn't work with the 10Fxxx PICs as they have a completely different pin out for the ICSP connections)

LED1 / R1 are just to give visual indication of power to the circuit and are not required for programming.

The output connector on the PICkit2/3 is a 6 pin socket.  Be sure to connect the 5 pin ICSP plug to the socket starting from pin 1 (see below)

You can use a standard 20 pin DIP socket or a ZIF (Zero Insertion Force) socket for SKT1. 

PCB Artwork



For those who don't have the facilities to make their own PCB you can build the programming adapter on a small stripboard as shown below


Cut tracks at the points marked in red



For ICSP (In-Circuit Serial Programming) the PIC requires only 5 connections between the PICkit2/3 programmer and the PIC.

Connections for some common PICs are shown below.

ICSP Programming info


  • Microchip do not support the 16F84 with the PICkit2/3 programmers.  The PICkit2 does support the 16F84A.

  • The PICkit2 can program the 16F84 using a modified data file.  More information can be found in this thread on the Microchip forum site.

  • PIC Microcontrollers with more than 20 pins use the same five ICSP signals.  While they won't fit on this adapter, if you need to program a bigger PIC all you need to do is identify the pins from the datasheet for the specific device and connect them to the PICkit programmer.

  • This adapter doesn't work with the 10Fxxx PICs as they have a completely different pin out for the ICSP connections. To program these devices you will need to make a modified adapter

PICkit 6-pin connector

The PICkit 2/3 programmers use a 6 pin socket.  The PICkit programmer can program a range of EEPROM memory devices as well as PIC microcontrollers. 

  • The memory devices use pin 6 ( Auxiliary pin).

  • PIC microcontrollers use a 5 pin ICSP header - they do not use pin 6

Pin 1 of the PICkit programmer is indicated by a triangular shaped mark.  Connect pins 1-5 of the PICkit programmer to the corresponding pins of the ICSP header plug. Do not connect pin 6.

For more information read the PICkit User Guide available as a PDF download from the Microchip website

Which PICkit Programmer

PICkit2:  Microchip part number   PG164120
PICkit3:  Microchip part number   PG164130

These are available from Farnell 

  • PICkit2 order code: 9847170
  • PICkit3 order code: 1771323

The PICKit programmer is a small device that connects to a PC via a USB interface.  There are two versions now available; the PICkit2 and PICkit3. Either version will work with the programming adapter as they have the same ICSP pinout.

The PICkit2 is still a good choice, lower cost and supports all the PICs listed above.  It is available as a basic programmer-only option or packaged with development boards.  Unless you specifically want the development board you should buy the basic programmer.  Microchip part number for this is  PG164120, it includes a USB cable and software on CD (the latest software is available to download free from the Microchip website)

Be aware that the development boards are not general purpose programming sockets. You will still need to make a programming socket adapter of some kind to program PICs other than that supplied with the development board.

Follow this link for more information on other suppliers of PICkit programmers


You will need a PICkit2/3 programmer and the free software that comes with the programmer.  The latest versions of MPLAB and PICkit2 standalone application can be downloaded from the Microchip website

Connect the adapter to the PICkit programmer using the 5-pin header plug. Make sure to align it so pin 1 connects to the end of the PICkit socket marked by the white triangle.

Insert the PIC into the adapter socket.  For PICs with less than 20-pins make sure they are inserted at the top of the socket (see overlay)


  • To program the PIC using ICSP the PIC does not require any external power supply connections; the programmer will supply power.

  • During programming the PIC is operating in a different mode to normal operation.  Therefore no external crystal or timing components are required, even if the PIC will use these in the final application.



Contact us: