           PIC16C84 Programmer using PC Parallel Port

                         David Tait                 
                         
                 Electrical Engineering Dept
                    Manchester University   
                     Manchester  M13 9PL
                       United Kingdom

                 E-mail: david.tait@man.ac.uk

                      15th March 1994


If you have an IBM PC with a parallel printer port, then you can program
PIC16C84 microcontrollers by building this simple circuit.  

The PIC16C84 is a relatively recent addition to Microchip Technology 
Incorporated's range of microcontrollers (for which they coined the 
name Peripheral Interface Controllers or PICs).  The 16C84 is particularly 
interesting because its program memory is implemented in EEPROM technology.  
This gives the 16C84 a marked advantage over EPROM microcontrollers (even 
other PICs) during the prototyping stages of a project simply because it can 
be reprogrammed instantly (or nearly so - it takes about 20 seconds).

The 16C84 can be programmed in a serial mode which requires very few 
connections between the chip and programmer.  This is the approach
adopted for this project (despite being connected to the PC via a
parallel port, the PIC is actually programmed in serial mode).  
Together with this text you should have received the file pp.asc, 
which is the schematic for the programmer.  Although this circuit will
do the job, you might like to modify it in various ways.  For example:
I find it useful to use LEDs to show when VDD and Vpp are applied to
the 16C84;  the two unused sections of the 4066 can be used to isolate
RB6 and RB7; the 4066 can be replaced by two transistors and a few
resistors.  Provided your circuit is compatible with the one shown
in pp.asc, then the software provided should still work.  The
schematic specifies 13.8V for the programming voltage - I use a
CB power supply - however, 12V should be fine, and in many PCs this 
can be obtained from a spare floppy-disk power lead.  The hardware 
can be attached to any available parallel port provided it is at one
of the standard port addresses.

The file, pp.c, is Turbo-C source for some no-frills software to control 
the programmer hardware.  As an alternative I have also included a Qbasic 
program, pp.bas, which is basically a hand translation of the C source.  
Read the comments in the programs for some instructions on their use.  
The file pp.exe, if it has been included with this distribution, is an 
executable version of pp.c; although this has been checked for viruses, 
you must remember that you run this at your own risk - if you can, compile
the program again or use Qbasic.  The C source makes use of a few
functions that might only be available in Turbo-C - they are delay(),
peek() and getch(); if you need to modify the source for your compiler,
please let me know.  In any case, if you decide to build the programmer, 
please let me know how you get on.  

Thanks to Charles Manning and Adrian Godwin for advice on previous
versions of the hardware.
