I'm currently using ICSP for SMT PIC 16F876.
I had a lot of problems trying to program PIC16f876A using ICSP and i had to switch to PIC16f876. I used jdm to program it. but is better to use a modifyed JDM circuit.
To program by ICSP you have to use a 5 pins connector. 2 pind for clock and data, one for gnd one to take mclr to 13V and the last for 5v power supply.
Ports RB6 and RB7 for data and clock have to be isolated from circuit during programming i also use to isolate 5v power supply to avoi other components dissipating power. Usually MCLR is connected directly to 5V and to gnd by electrolitic capacitor to absorbe spikes. i use to connect positive side of capacitor to mclr trough a diode for normal use and programming pin directly to mclr to avoid charging capacitor during program function.
as programing software i use ponyprog.
In JDM picture there is PIC 16C84 but ICSP schematic is the same for all pics.
Usually is better to use a powerd hardware to program pic. JDM is only powered by serial port.
I usually use switches to isolate Vcc, and RB6 and RB7 only if necessary(depending on application and load. If you have some capacitors on Rb6 and Rb7 you better isolate them. Mclr is usually isolated by a diode.
I have a curcuit witch work, wit PIC18F4431. Now I buy PIC16F877A, it is pin compatibel with 18F, but I can't programm it!!!
I can programm 18F, but 16F I can not programm? WHY? does eny bodey know?