Choosing a PIC Programmer

If you are a beginner in the world of PIC microcontrollers then you will probably have this question in your mind: Which programmer should I buy? This is an obvious question because there are tons of PIC programmers available from various vendors and if you search on the various online technical discussion forums for their reviews, everybody has his own opinion. This will confuse you more, and you will be ended up with nothing. I would suggest, just buy one that you can afford and that fulfills your need.

Having said that, I won’t recommend to buy one that requires a parallel or serial port. I also don’t recommend to try building the free PIC programmer circuits available on the internet. Most of them are based on either serial or parallel port which are disappearing from the modern desktops and laptops. Even if you do have those in your computer they may not work because those circuits rely on specific voltage and current requirements from the computer ports. At the end, you will be frustrated.

iCP01 USB PIC Programmer from iCircuit Technologies

My suggestion would be to buy a USB PIC programmer that has in-circuit serial programming (ICSP) capability. With ICSP, you can program a PIC microcontroller while it is in the application circuit. You don’t have to take it out every time you need to reprogram it. This offers tremendous flexibility in programming and reduce the project development time. ICSP requires altogether 5 connections between the programmer and the PIC microcontroller. They are supply voltage (Vcc), supply ground (Gnd), programming voltage (Vpp), data (ICSPDAT or PGD) and clock (ICSPCLK or PGC). Read ICSP Guide from Microchip for more detail.

These days USB programmers are not expensive. You can get one for less than 20 bucks. I have recently got a new PIC USB programmer (iCP01) from iCircuit Technologies. It is a ICSP programmer that costs just $16.50 and it works great. They ship it from Malaysia, and I got mine in 10 business days which is not bad (I live in USA). It supports quite a bit of flash PIC devices ranging from 8- to 40-pins. The complete list of supported devices is found here. I like this programmer because it is very small and easy to carry. The good thing is that it is compatible with Microchip’s PICkit and MPLAB IDE softwares. I am using PICkit software to program PIC microcontrollers with iCP01 programmer. I have got another USB PIC programmer that I bought a couple of years ago from MCUmall electronics. But the iCP01 programmer programs much faster than that. And it automatically detects the target microcontroller connected to it. Here’s the picture of my iCP01 programmer.

As I said, it has got an ICSP header pins to program a PIC microcontroller in the target circuit. The five pins in the header are sequentially Vpp, +5V, Gnd, ICSPDAT, and ICSPCLK. The Vpp pin can be identified with the red color wire in the ribbon.

You can also use iCP01 as a stand alone programmer by buying an additional adapter from the same vendor. It has a 40-pin ZIF socket to hold a wide range of PIC microcontrollers. The iCP01 programmer with the additional adapter will look like this.

I tested the programmer by loading a test program (flashing an LED) into  a PIC16F688 microcontroller. Here’s my test circuit.

If you want to try this, here is the HEX file for it. The user’s manual for iCP01 can be downloaded from here.

Next, I am going to test the programmer with other PIC microcontrollers, and see how it works. I will definitely share my results here.

Related Posts


  • Great Job Sir…..Thanx alot….

    Im new to PIC micro-controllers…so i hv a little doubt.

    i wnt to knw that can we compile a code in MPLAB which was already written in MikroC…


  • Hi mate,

    Awesome website and posts you publish here.
    They help me a lot with learning embedded system.

  • Dear Sir,
    I am very interested with microcontroller. can i get the circuit diagram and hex file of iCP01 pic usb programmer? It will be very helpfull for me because i have no ability to buy this programmer with $.

  • Dear Trev,
    Thanks for the comment!
    Based on our records, so far we did not received any complaints on our iCP01 that ‘will destroys the PICs and also itself and also its faulty ZIF socket adaptor’.

    iCP01 is built in with the overvoltage and overcurrent protection to ensure the stability of the product and also the target device and should not cause the problems that you had mentioned.

    Following with thousands of our customers’ feedbacks on our products:

    iCP01 is a simple and low cost version of PICkit2 with no Vdd control feature. Normally we are not using the ‘Vpp first or Vdd control feature’ for the PIC programming and we only received one feedback on this issue. The customer is using the PIC16F628A and T1OSCEN is enabled which will block the ICSP programming. This problem can be solved by simple programming steps or the user can add in the Vdd control circuit. (Please contact us for the details)

    For the low Vpp error, normally is caused by customers wrong wiring connection on the Vpp pin and it will back to normal with the correct wiring connection. For any defective product, we will make a replacement or refund if the product is still under warranty period.

    We welcome any suggestions for enhancing our products and services. Since quality products & services and customer satisfaction is our main objective to achieve!


  • From the Microchip Forum thread “Reasons NOT to buy a …!”

    iCP01 (PICkit 2 ‘clone’) – a yellow heatshrink wrapped usb stick that destroys PICs and also itself and also its faulty ZIF socket adaptor. It appears to have NO Vdd control circuit (5V always on!) and therefore cannot reprogram chips that need the Vpp first method. Also low Vpp is reported.

    — not a glowing endorsement!

  • I bought ICP01-V1.1 programmer at Ebay last December/2011 until now still
    didn’t work. I program with MikroC pro with a simple program Blinking_LED
    check with simulator is OK. When I load the HEX file to programmer (ICP01-
    V1.1) it’s say successful and the screen changes with some Data but when I
    push “write” button get error ( EEPROM ERROR AT 0x0010 ) How do i fix this
    problem? My OS system is Windows 7. Your help is greatly appreciated.

  • Very nice info. I also will review about this programmer.


  • Thanks for reminding us of this! Secure Sockets Layer (SSL) is now supported on! Our customer’s private information will be more safe and secure when visiting our website..

  • I started to order parts from piccircuit and would like to, but the registration is not encrypted. I wouldn’t suggest for anyone to use this site or any site that does not supply a secure connection for sensitive user information.

  • is it possible to generate hex file through MikroC PRO and use PICkit or other programmer to program target chip.?

  • Hello!
    I like your tutorial. I have tried some programming from here, anyway some steps seems to be omitted.
    I have iCP01, installed mikroC Pro (version 5.20) Everything ok, but process of programming itself isn’t described. I have used PICkit 2 Programmer to put .hex file into my PIC uC. My question is:
    Is there any way to “marry” iCP01 with mikroC PRO to avoid jumping between mikroC and PICkit Programmer windows? If so, could you do small instruction, please?

  • can this programmer be used to boot-load the pic?

  • Could anybody suggest a low cost good programmer with in circuit debugging? i.e I need to observe the register values while it is running.

  • Not only is the iCP01 programmer really good value (i.e. cheap) it is incredibly fast! I’d used other usb-based programmers but they use FTDi chips to convert usb to serial. A full sized 32Kb hex file can take up to 4 mins to burn using these. Exactly the same file takes about 20 seconds with the iCP01. If you’re undecided, this is one of the best PIC programmers I’ve tried (and I’ve tried about eight to date!)

  • hello can you please advise me which PIC programmer below is better.
    These are locally available here in the market.

    1. eICD2
    PIC In-Circuit Debugger and Programmer (ICD2 Clone):
    Program and debug in-circuit virtually any 5V PIC Microcontrollers. Using eICD2, you can examine your program as it run inside an actual PIC microcontroller. You can check the program variables, symbols, and even read and write directly to the PICs internal registers, all via the MPLAB application.
    • In circuit debugger and programmer in one.
    • Works with any Flash PIC microcontroller

    2. ePIC-KIT2 ISP Programmer & Debugger:
    A clone of the immensely popular Microchip PicKit2 hardware development kit. It is programmer and debugger rolled into one. Supports in-circuit programming and debugging of almost any PIC16F and PIC18F microcontroller variants. Connects to a PC via USB a port where power to the circuits is also drawn from*, eliminating the need for an external power source.
    * Power from the USB port should be used solely for the ePIC-KIT2 only. Do not tap power to the user circuit from the ePIC-KIT2 port. Failure to do so may result in erratic and unexpected operations. Damage to the PC may also occur.

    Thanks a lot. I find this site excellent in teaching about PIC microcontroller, I can understand better here than other site. But unfortunately I haven’t absorb yet technicalities in “program design explanation”. Anyway I’m not into program designing.
    Thanks for the great contributors of this site. Keep up the good works!

  • There’s a 0.1 uF decoupling capacitor connected between Vcc and Gnd, and it is shown in the circuit diagram too.

  • hamza mohamed ansari

    gud job…..

    well you use capacitor in ur breadboard…which u missed in circuit diagram…..wats tat value and explain it plz mail me

  • hi!This was a really quality post!
    I come from itlay, I was fortunate to find your topic in wordpress
    Also I learn much in your topic really thank your very much i will come daily

Leave a Reply

Your email address will not be published. Required fields are marked *