Algunos chips utilizan voltajes fuera de los parámetros de funcionamiento normales para la programación, ya sea porque el circuito de programación necesita voltajes más altos que el funcionamiento normal, o porque tal diseño evitará la posibilidad de que una parte ingrese accidentalmente al modo de programación durante la operación. Tal diseño puede dificultar la programación en circuito.
Algunos chips requieren el uso de muchos pines para la programación. Para programar un PIC 16C54 de 18 clavijas, por ejemplo, se requiere el uso de VDD y VSS (obviamente), MCLR para activar el modo de programación (conducir a 12 voltios), las 12 clavijas de E / S para ingresar datos, la clavija RTCC para actuar como un estroboscopio de lectura / escritura, la entrada del reloj para avanzar direcciones. El único pin que no se usa para la programación es la salida del reloj. La programación de un dispositivo de este tipo en el circuito generalmente requeriría desconectar tantos de sus pines de otras funciones que generalmente no valdría la pena el esfuerzo.
Como mínimo, tener un dispositivo compatible con la programación en circuito generalmente requiere, como mínimo, que incluya alguna forma de aislar cualquier memoria programable interna de cualquier circuito que normalmente intentaría usarla. Esto no necesita ser demasiado complicado, pero puede ser difícil en dispositivos que intentan ser lo más rápido posible durante el funcionamiento normal. En algo como el PICC 16C54, el almacén de códigos no necesitaba ningún circuito de direccionamiento especial para la programación; en cambio, cuando MCLR se elevó a 12 voltios, eso obligó al procesador a ejecutar las instrucciones de NOP, por lo que su contador de programa podría usarse para suministrar direcciones. Era necesario agregar una ruta bidireccional conmutable entre los pines de E / S y los cables de datos del almacén de código, pero eso no tendría que deshabilitar las rutas normales tomadas por esas señales (ya que los pines de E / S están predeterminados en flotante, y El comportamiento de "forzar NOP" (también utilizado por las instrucciones de omisión) significaba que cualquier código que llegara al enclavamiento de instrucciones sería ignorado. Permitir la programación en el circuito requeriría que el modo de programación afecte la funcionalidad de más circuitos.