1. An apparatus for in-circuit programming of an integrated circuit, comprising: a single non-volatile memory device comprising non-volatile memory cells on the integrated circuit that store instructions for execution by a microprocessor, the single non-volatile memory device containing in-circuit programming code for programming the single non-volatile memory device and user code for facilitating communication with an external device; a microprocessor configured to input instruction addresses to the single non-volatile memory device and to receive instructions from the single non-volatile memory device; and a delegable memory controller operatively coupled between the microprocessor and the single non-volatile memory device, the delegable memory controller being configured to receive an in-circuit program update command and to perform an in-circuit programming update function on non-volatile memory cells of the single non-volatile memory device, whereby the microprocessor is relieved of performing the in-circuit programming update function.