For some of my projects 8bit PIC midrange MCUs were more suitable than ATMEL AVR MCUs. Only problem was the programmer. PICkit is quite expensive, so I decided to build my own. There are many PIC programmer schematics on the web, but most of them are from rs232 era and required rs232 voltage levels which my laptop with usb to rs232 converter can't provide.
Fortunately I own popular arduino uno board and I could use it to “bitbang” the programming protocol to PIC MCU. This page describes my arduino uno shield which works as PIC programmer.
L1, Q2 and D1 create boost converter for 13 V (or 9 V depends on PIC) required to enter programming mode, Q2 switches with about 62 kHz frequency. Q4 is responsible for pulling down MCLR to reset PIC. I made mistake and forgot about another schottky diode between R3/R4 and Q4 drain, becouse of that MCLR pull-up from R11 and D5 didn't work as expected. In order to fix that pull up was achieved by disabling Q2 and Q4 while enabling Q1. That way D5, R11 and C3 are useless, but software must be robust in order to not make short.
R4 and R5 make voltage divider needed to divide boost converter output voltage to match AVR adc. This is for feedback loop to regulate boost converter, however it is not implemented in software yet.
1k resistors in series with data and clock lines are to prevent shorts.
Q3 controls Vdd supply to target board.