> Does the CLKIN pin really have to be taken to 0 volts during ISP > programming? Or can it just be left attached to the crystal? If the CPU is allowed to execute any instructions between /MClr's rise to "+5" and its rise to "+13.5" [or more accurately, between 4v and 8v] then programming will start not at zero, but at the instruction after the last one executed. This will usually corrupt programming (often causing the system to behave quite wierdly). There are three ways to avoid this problem: [1] Keep CLKIN frozen while prog- ramming is started. If CLKIN isn't running, the chip won't execute any instructions. [2] Use circuitry which can pull /MClr *quickly* from VSS to VPP (too fast for the CPU to start executing anything). If you're using RC clock mode, I wouldn't count on this latter method working, but if you're using a crystal the "oscillator start timer" should help you out. [3] If you're using RC mode on a 16x84, you could enter programming mode, burn the config fuse for another oscillator type, then reset, program the part, and finally reburn the config for RC. Note that a pre-burned 12C5xx may not have an oscillator input, nor a /MClr reset. On these chips it's necessary to ensure that /MClr's rise happens very soon after application of VDD.