This is one of my electronics projects. It is currently work in progress.

Cheap PIC Programmer


This is yet another parallel port PIC programmer for the Microchip 8-bit MPU series of microcontrollers. The only reason for doing yet another PIC programmer is because it allows me to bundle it together with some of my other projects that use PIC microcontrollers.


The goals are:

The non-goals are:


My projects usually go through multiple revisions. The following revisions are available:

Revision A
This revision was sent out to manufacture in mid-February of 1999. It has one significant flaw -- the emitter and collector of the power transistors are swapped.
Revision B
This revision has not been sent out to manufacture yet. However, it does fix the power transister bug from revision A.


I originally used an Open Source PIC programmer written by Brian C. Lane at http:/ The current link is or Another place to look for Linux PIC programming software is over at The section on device programmers is currently at although I would not be suprised if it gets reorganized. Please note that PicProg 2.2 does not work with versions of Linux 2.2 or greater. A patch is needed. Please read the page at to find out how to get the patch.

I subsequently wound up writing my own software to run the programmer. The software is divided into two pieces:

Parallel Server
The parallel server is a fairly simple program that sits listening on port 4243 waiting for connections. Since the parallel server needs to access /dev/port on Linux, it needs to be run as root. However, it only allows access to a single predesignated parallel port; so other non-root programs can safely connect to port 4243 and send programming commands.
µCL Programming Environment
The rest of the programmer is integrated in with the my PIC programming language.

Construction Instructions

One of these days I will type in some construction instructions. For now, you are on your own.

Programming Instructions

To program a chip, follow the directions below:

  1. Connect programmer to the parallel port of your PC.
  2. Plug your wall wart transformer into the wall.
  3. Plug your wall wart transformer into the programmer.
  4. Install the shorting plugs to route Vpp, Vdd, Vss, Clock, and Data to the correct pins of the ZIF socket. The table below shows what to do. There is a good chance that the table below has transcription errors. So it is always a good idea to verify the routing yourself. Remember, this programmer has no warantee!
    PIC Name Clock Pin Data Pin Vpp Pin Vdd Pin Vss Pin
    PIC12C508/508A/509/509A/518/519 38 39 4 1 40
    PIC12C671/672/673/674 38 39 4 1 40
    PIC14000 34 35 4 36 5
    PIC16C50x 38 39 4 1 40
    PIC16C55x 34 35 4 36 5
    PIC16C6x/7x/F87x/9xx (28-pin) 39 40 1 32 8,31
    PIC16C6x/7x/F87x/9xx (40-pin) 39 40 1 11,32 12,31
    PIC16C84/F8x 34 35 4 36 5
    PIC16F62x 34 35 4 36 5
    PIC12F629/675 38 39 4 1 40
    PIC16F630/676 38 39 4 1 40
  5. Turn on the programmer.
  6. Start the programmer software.
  7. Load the hex file into the software.
  8. Verify that the programmer Vpp and Vss LED's are off.
  9. Drop the chip into the ZIF socket such that pin 1 is in the upper left slot.
  10. Instruct the software to program the chip.
  11. Instruct the software to verify the chip.
  12. Exit the software.
  13. Turn off the programmer.
  14. Remove your chip.

Copyright (c) 1999, 2001 by Wayne Gramlich. All rights reserved.