Making a Simple PIC Programmer.

In this tutorial we will make a simple serial port based programmer for PIC microcontrollers. I have tried several easy to make programmers and software, and here I a presenting the programmer that worked the best. The design is based on JDM. The software we will use is PICPgm by Christian Stadler. I liked the performance of the software, its fast and easy to use. The programmer will make uses the COM port of Computer for communication.

Components required.

Value/Part No
BC337-40 or BC337-25
Capacitor Electrolytic
100uF 16VDC
Zener Diode
5.1v 0.5Watt
Zener Diode
6.2v 0.5Watt
RED Colour
DB9 Female Connector with Cover
6 PIN Female Connector with Wire
Veroboard, Wires etc

Circuit Diagram

Now assemble the circuit as shown below in a piece of veroboard.

Simple Serial Port Based PIC Programmer

Fig. : Simple Serial Port Based PIC Programmer.

So our PIC programmer will have two interface

  1. A Serial Interface for Connecting it with PC
  2. A 6 PIN ICSP Connecter – This will be connected to our PIC which will sit in our project (say in a Breadboard).
serial port based icsp

Fig. : Simple Serial Port Based PIC Programmer.


The technique of programming we are using is ICSP i.e. In circuit Serial Programming. In this method our PIC will stay in the end application board while programming. There will be a simple 6 PIN header in our end application. We have to connect this programmer to the end application using this connecter. Now we can connect the programmer with PC and upload the HEX file to our PIC micro. The figure below illustrate the process.

Fig. : Using A ISCP Programmer.

Now our PIC Programmer is complete. In next tutorial I will show you how to write a "Hello World" application for PIC MCUs. After that you will have all the tools and basic skills to work with PIC related projects. Then we will move on an learn the PIC MCU step by step.

Important Note

This programmer works with a physical serial port only! It does NOT work with USB to Serial Converters.


Ok friends, bye for now, meet you in next tutorial.

By Avinash Gupta


Avinash Gupta is solely focused on free and high quality tutorial to make learning embedded system fun !

More Posts - Website

Follow Me:
FacebookLinkedInGoogle Plus

117 thoughts on “Making a Simple PIC Programmer.

  • By MGA - Reply

    Thank you so much for the instructions…

  • By RonyDC - Reply

    Can u please publish the schematics and source code for USB ISP programmer for 89s chips?

    • By rex - Reply

      dude its avial free n net. jst search for usb asp. which can program both almost all atmel controllers. which includes at89 and atmega. simple circuit. use atmega8 as firmwire

  • By Avinash - Reply

    Hello RonyRC,

    I can publish them but to make It you need a microcontroller with proper firmware. So to make it you need to make a programmer to burn that MCU first. Thats the problem!

  • By Sunil Maligi - Reply

    I am working on PIC12f683
    Instead of buying the programmer how can i make it??
    Pic programmer alone is some 2000rs
    So can you please tell which circuit i hav to use.

    • By rex - Reply

      dude, making it cost less thn 400. go for the usb pic programmer. only the firmwire ic 18f2550 cost 250. rest s nothing. its te best. simple to make. betta mak t n a pcb rather than hardwiring it. otherwise you can go for serial programmer which can program multiple pin controllers with selector button. beware programmers best work with windows xp. not with windows 7. dont rush and buy some crap

  • By Sunil Maligi - Reply

    hope u got my point

  • By Avinash - Reply


    Just read the above article. Its about making the same !!!

  • Pingback: Hello World Project With PIC Microcontroller - Part I | eXtreme Electronics

  • By shailesh - Reply

    that is so usefull circuit. i want to make morse code reader but i dont know how to start with ,though i have code and programm for it but i dont know anything about microcontroller . i hope this simple circuit will help me. thanks for the cir.

  • By Sunil Maligi - Reply

    I am really in trouble
    My project demands PIC12f683
    I am write nw using mikroc software a trial and version
    I am finding it difficult what to read and what not
    can you please help it out

  • By Sunil Maligi - Reply

    I want to learn this PIc programming and i have less time.
    First I need is what are things i hav to study

  • By manikandan - Reply

    i want to buy a 89s52 copier, I dont know were i will get it.
    I want to copy 89s52 to another 89s52. please help me.

  • By Rakesh - Reply

    can ypu please give me the pinouts of the ICSP header in the above schematic?

  • By Avinash - Reply


    click on the schematic to enlarge. Their u will get the pin out.

  • By utkarsh - Reply

    AVinash actually i am a beginner for the microcontrollers . i want to use them to make them for the robotics project. an you tell me where can i get the knowledge about the programmers . can you tell me the procedure of uploading the hex file into the microcontroller by the programmer by the software.

  • By peter guglielmo - Reply

    dear avinash, i recently sent you a paypal payment for your usb pic programmer. i have been trying to get from you a confirmation that you received it. plz respond and let me know. thank you. pg

  • By Rajendra Raj - Reply

    Dear Sir,
    I am Education Trainer Board manufacturer of Jharkhand and Bihar zone, I will be Required some electronic kits during manufacturing. i want to your shop address.
    Rajendra Raj
    Dhanbad Jharkhand

  • By Donald - Reply

    Dear Avinash, I built a development board similar to the Olimex using the PIC18F4550 and it seems to work fine. I now built your simple pic programmer but it doesn’t reconise my pic using the PICPgm software. It brings up a message “No pic”. I have checked and double checked everything and all connections look ok. I did use equilavent transistors, PN3642 instead of the BC337, is this ok? One other question whats the purpose of the 6.2V zener, and how critical is this voltage. Can it be slightly lower or higher?

    • By Avinash - Reply


      Are u using a USB to serial adaptor ???

  • By sandeep - Reply

    Is this programmer able to program PIC16f72 devices

  • By muralidaran - Reply

    where is the target board schematics sir

  • By christian - Reply

    Make sure that the PGM pin of the PIC18F4550 is tied to ground if you are using a high voltage programmer like the Olimex.
    Also check that Vpp (programming voltage) is between 7V and 12.5V. This is required according to the programming specification of the PIC18F4550.

    Further things to be checked can be found here:


  • By jitesh jha - Reply

    Can u please publish the schematics and source code for USB ISP programmer for 89s chips?
    a friend of friend has the same so i can get the firmware i think.
    pls help

    • By Avinash - Reply

      @If we publish them for free how will we get funds to run this site ???

  • By Rex John - Reply

    sir, can the same circuitary works for all pic comtrollers?? mainly am using pic16f877a and pic18f452. please reply to my mail,

  • By Rex John - Reply

    sir, can we use the same programmer for pic 16f877a and pic18f452??. both are 40 pin controllers

  • By pratik - Reply

    your iscp circuit is good…. bt i want to know about software used for dat……

  • By -md-tt- - Reply

    i used it on my pic18f1320 and it worked perfectly.
    ty a lot

  • By Wajid Ali - Reply

    Hi! i tried this circuit on my PIC16F84A it work great,,,
    but this programmer is not working with PIC18F452…
    i need help for that….
    it have some sort of verification error…

    please help…

    • By Xavier - Reply

      Hi!! please i am a new student I the field of microcontroller. I am working on a project which involved programming of PIC16F84A .I would like to know how to connect the pins of the progammer to pins of PIC16F84A.
      Thanks very much in Advance

  • By clifford rodrigues - Reply

    hi , i used this circuit to burn my pic16f877a it worked fine the first day , i had used winpic800 , but next day the pic was not getting detected in winpic800,it was saying device unknown , then i just interchanged the signals connected to pin 4 and pin 8 ( ie. the dtr and cts ) of the rs-232 connecter , now my pic gets detected , and gets successfully programmed ,,,thanx for the circuit

  • By Hill - Reply

    Why dont you mention in your URL which PICs these burner supports? It will help avoid guesswork and help many.

    My calculate guess is since it works with Christian Stadler’s program it would support all devices mentioned in his URL:

    Still my Question to you is Does this burner support PIC18F1220 ?

    Thanks for your confirmation and Cheers!

  • Pingback: Firefox Bookmarks « Rabiul's

  • By Arun K Raveendran - Reply

    Iwas searching for a programmer for the last few months…
    I dont know this will work or not .. But i will try to build this programmer.
    I like to know that will it support to over write old hex files in the PIC.??

  • By Arun K Raveendran - Reply

    how can i know the oin details of A 6 PIN ICSP Connecter please help me

  • By Mat - Reply

    it works perfectly for me

  • By venkatesh - Reply

    very useful circuit
    thanks a lot mr.avinash for ur awesome info…
    can you just mention what are the supporting pics for the above hardware and software i can use for it…..
    thank u

  • By suzi - Reply

    Hi all,
    Many thankxxx, But Can I program pic16f877A by using this picprogrammer?

  • By vinay - Reply

    Hi Avinash,

    How can I use this programmer on LINUX (I use UBUNTU 11.04)?? which software should I use for burning code into the Microcontroller??
    Also I have PIC16F877 & PIC18F4520 ?? Can this programmer program these devices??

  • By mido - Reply

    I made this programmer and used it with PIC16F877A and it works great.
    Thank you very much.

  • By audut - Reply

    which used software for program store?, pl. sent software on my mail

  • By mark nabil - Reply

    thx alot for this circuit but i have a question these 6 pins will be connected to which pic pins ( 16f84a) .

  • By INGIT - Reply

    This is nice…..& it works very well….

  • By New - Reply

    Does this work with a pic16f690?

  • By ManCloud - Reply

    Hey there.

    I use a FT232RL USB-Serial bridge.

    How is the circuit for that?

    i can’t find any pic programmer using a ft232rl…

    do you know how to build one?


  • Pingback: Trying to get a Proper doccumentation for making a PIC programmer

  • By Sanjay - Reply

    will it work for PIC18F4550……???????

    • By rex - Reply

      yupp bro… serial programmer gonna work for every piece of mc. the same for pic18f4550.

  • By Godwin - Reply

    please, i know how to program in java and a little in C , i also understand electronics but i dont know how to go about programming ICs. I will be glad if any one could help. my email is Thanks.

    • By rex - Reply

      betta u go for any course on embedded sys before starting.

  • By kartik - Reply

    great informatiom

  • By kartik - Reply

    wow it work with winpicpgm
    but but it is not working with icprog or any other

  • By Saad - Reply

    How can i get the complete schematic and a code for this, because without code the schematic is of no use? Reply Plz

  • By Godwin - Reply

    thanks to you all for your support on programming micro chips, may 29 2012 i just successfully program pic16f877a to blink led with the simple pic programmer but i tested this circuit the next day…. the problem now is that when i tried reprogramming with some other compiled hex file, i got verification error which i don’t understand (even with the same blink a led hex), my data seems to have been erased and my led isn’t flashing, am using picpgm… pls i need assistance

  • By Godwin - Reply

    i also have tried reading the voltage of mclr while programming and it read 9.3v using vdd from isp and 11.2v using external power but removing in order to avoid different voltage….some say it’s low programming voltage/high programming voltage problem, if that’s it, what should i do?

  • By Xavier - Reply

    Hi!! please i am a new student I the field of microcontroller. I am working on a project which involved programming of PIC16F84A .I would like to know how to connect the pins of the progammer to pins of PIC16F84A.
    Thanks very much in Advance

  • By Anantha - Reply

    i made a pcb for this but it does not detect the pic

  • By Godwin - Reply

    Please avinash, i need help on dis simple programmer, can d length of my serial data cord be d problem? Its about a yards long… Thanks in advance

  • By Karan - Reply

    Can the 6.2v zener get replaced with 5.6v zener.

    • By Avinash - Reply


      Only if you want to invite some bad luck to your life.

  • By Srabon - Reply

    Will it work on PIC 12F629 or 12F675

  • By Srabon - Reply

    will it work in PIC 12f629 OR 12F675

  • By pratyush - Reply

    will it work for pic16f877a?
    plz reply…
    it’s urgent.

  • By nataraj - Reply

    hi sir
    i have tried this circuit and i connected rs232 cable to programmer,then i opened picpgm programmer,it is showing JDM programmer detected(auto detect) with com1,then i inserted pic16f877a or pic18f4552 onto IC socket,but it is showing No pic is connected.i dont know what is problem is this..can you please give me brief explanation about it as soon as possible..

  • Pingback: problem in JDM based PIC progarmer

  • By Arun Sharma - Reply

    It’s Working fine for me…
    Tested PIC16F877A with this..

    • By Arun Sharma - Reply

      Thanks Avinash

    • By Avinash - Reply


    • By Amgaa - Reply

      Can i connect it to pic16f877a directly? Or else pls give me a schema.

    • By ANOOP GEORGE - Reply

      does it work with windows 7?

  • By Karl Mozey - Reply

    Dear sir thanks for all your help am realy learning alot from you web site.I am a second year student doing electronics and i wanted you to please help me on how i can connect that simple programmer on a microchip coz i dont wanna mess out thing,they are 5 wires out and dont know which is which,please help me out.

  • By chintan pathak - Reply

    Hey Avinash,

    Great article.

    I am a newbie in the electronics world, and learning my way through.

    I have a few questions…

    1. In your image of the programmer, you show a board with holes spaced equally, in both directions. What is such a board called? Is it available ready-made or needs to made from the solid PCB ?

    2. I have to program a PIC16F877A, which pins of the PIC do I need to connect to the programmer to load the program ?

    • By gaurav - Reply

      1. It is called Vero board.Yes it is available ready made.
      2. You have to connect ICSP pins to the programmer. There are two pins dedicated for ICSP, called PGD/PGC.
      Thank you.

      • By chintan pathak -

        Connections in this Vero board will have to be made with separate wires, while in a PCB, the copper tracks do the job, so the PCB work is more compact, i guess.

        ICSP means, I dont need to take the PIC out of my board, just connect the PGD/PGC pins to the programmer output – which seems like pin 39 and 40 for PIC16F877A,

        Thanks for the help,

        Can u share the layout for etching the PCB ?

    • By gaurav - Reply

      Yes Chintan, you can go and make the PCB. For that you have to design the PCB layout in some eCAD software like EAGLE.

      Thank you.

  • By kartik - Reply

    i have used zener diode of 6.8 volt instead of 6.2……will it matter……..and My PC is also not detecting PIC…..but it detects JDm programmer………

    • By Avinash - Reply


      WTF !? Are you crazy or what ? Why you are using 6.8 volts instead of 6.2 ?

  • By kartik - Reply

    Do i need to connect external power supply……and how to connect JDM programmer to PIC it …

  • By PIC16F877 - Reply

    Hi, i have tested this circuit, but PICPgm, cant auto detect my PIC16F84A, i am using USB to RS232 converter ????

  • By Mihok Eduard - Reply

    I made the circuit and it’s working perfectly. I programmed a PIC16F628A for a POV.

    • By bexel.o.j - Reply

      could you please give me some information

      1. pins of ICSP connected to which pins of PIC

      2.whether we need to power the pic, with crystal oscillator.

  • By Yvan - Reply

    may i ask. will it work if i use usb to serial converter?

  • By PIC16F877 - Reply

    Hi Yvan; no its not gonna work with USB to serial converter, this is a high voltage PIC programmer, the feed need to be taken from the COM Port of the computer .

    and avoid using the netbooks, which can not provide the sufficient voltage for programing

    • By Weazel - Reply

      im gessing its only power supply thats why u cant use usb
      if u make a psu to boost the voltage then the usb mite work depends
      or could use a seperate psu

  • By umar adeel - Reply

    plz help me. will this circuit work for PIC18F452??
    i need urgent answer.

    • By Avinash - Reply

      @Umar Adeel,

      If you need urgent answer first repost the comment with the spelling of “Please” corrected !

      • By ramesh -

        avinash sir, will this programmer work for pic18f series?

  • By Paul - Reply

    how should i connect my pic886 to ICSP?
    please reply.Can it be programmed using picaxe programming editor.i bought my pic from hobby2go and they said it is pre-programmed with bootstrap loader program.

  • By hemant - Reply

    This was a great tutorial.
    But I have problem ,I want to connect it to my laptop and it does not have a DB9 port so I bought a usb to DB9 converter .
    Is there any way I can work with the same schema and converter with the help of an extra module or schema.
    Thank you

  • By Shehzad - Reply


    I am an amateur in electronics.
    Will this programmer program PIC10F200 and PIC12F629?
    Thank you.

  • By Shehzad - Reply

    I have made the circuit.
    Tried programming PIC12F629. It doesnt detect only.
    For PIC10F200 it doesnt detect but, it erases and when I click on load code and click program it programs and then says Programming Finished Verify Errors.
    Made 3 different circuits. Totally frustrated.

  • By hemant - Reply

    What if I use a male db9 connector then will there be some changes to be done.

    • By Shehzad Shaikh - Reply

      Thats pretty easy Hemant.

      You need only Pin 3,4,5,7 & 8.

      So Take a multimeter and check for your pins with it and note down the colour or mark the wires to the corresponding pins, then cut the unnecessary ones off. And Solder the male DB9 Connector wires accordingly to the circuit.
      I did the same. It worked but its only erasing the PIC not writing PIC10F200 & PIC12F629. And made the circuit thrice to ensure, still same problem. You are better off buying a USB Pic programmer. Because now a days getting 12Volts out of DB9 Port of computer us also rare. Mine was 8.5volts and cannot program through that. Check your voltage before building the circuit!
      Best of Luck

      • By Weazel -

        make a voltage boost circuit im sure theres enuf current to run alot of stuff off the port if not run psu or batterys

  • By Starlight - Reply

    I make it and it works perfectly. Check ALL connections (and elements: diodes, transistors etc) if circuit doesn’t work. I spend about 4 hours before found all bugs.

  • By Mathi - Reply

    I done this programmer, If i connect it to my serial port, the picpgm detects jdm programmer but it can’t detect my pic. I am using pic16f887a. What may be the problem. Can anybody help me.

    • By hemant - Reply

      One suggestion in the circuit connect the 6th pin of ICSP to PGM pin no 36 in pic16f877a.

      • By Mathi -

        Thanks bro for ur reply, but it’s working fine now.

  • By Irshad - Reply

    I made the circuit.please help me to configure the programming software

    • By Irshad - Reply

      I found it

  • By Irshad - Reply

    detecting both programmer and pic.but,when i am programming verify error is occuring .if the hex file is empty,then the programming is successfull.

  • By Irshad - Reply

    detecting both programmer and pic.but,when i am programming verify error is occuring .if the hex file is empty,then the programming is successful.

  • By MARK - Reply

    where to connect the j2? i use 16f84a. what pins should i used? i really need your help.

  • By mantaj singh - Reply

    I had make two circuit of this programmer both are initialize by pc with win 32 but cannot burn my pic 16f870 and LED on circuit is also not glowing please help me. and which programming software i has to use..

    • By mantaj singh - Reply

      and i am also using pci to sereal adapter on windo 7.

  • By Hardik Patel - Reply

    Is this programmer work on win7/win8??

  • By Edward - Reply

    Dear Avinash,
    Does it work for pic16cxx family?

  • By Jackson Mashabela - Reply

    Hello im facing a serious problem of buying a pic programmer because in my country there is no such things, so i need to build my own.
    How can i do that? i will apriciate a lot.

  • By John - Reply

    Sorry if my question is stupid,but is this gonna work with a PIC16F628? controller?

  • By Ravi - Reply

    Dear Sir,

    Here we have a doubt. The PC’s serial port and its corresponding DB-9 connector’s 5th pin is ground and this is connected to 2 pin of ICSP header which is the VCC/VDD of the target micro controller. I would like to know how to rectify this or is it correct? If a short happens then it will create problem with PC’s serial port and micro controller as well. I am expecting a quick reply.

    Thanking you.

  • Pingback: BASIC Stamp 2 Programmer

  • By Colin Mitchell - Reply

    Using A ISCP Programmer

    it is ICSP Programmer not ISCP

  • By electro guy - Reply



  • By Alexs - Reply

    Dear Avinash! Could you explain why you can not use USB-COM adapter? My PC has only USB. What should I do to use an adapter? Thanks for the answer.

Leave a Reply

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

eight × = 64

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>