PIC16F1454 Flash Copying On The USB Value Line

The USB Part Without An ADC

The PIC16F1454 is the stripped member of the 145x USB family: 8,192 words of flash (0x0000-0x1FFF), 1,024 bytes of SRAM, eleven I/O lines on a 14-pin package, and – unlike most modern PIC16 parts – no ADC, no DAC, no comparators, no CWG. What it does carry is a full-speed USB 2.0 device module with clock recovery from the host (no crystal needed), two 10-bit PWM modules, an EUSART and an MSSP. Boards built on it are USB dongles, HID devices, bridging cables and chargers that report over USB.

Memory And Lock

– Program array: 0x0000-0x1FFF, with the top 128 words (0x1F80-0x1FFF) as 100K-cycle High-Endurance Flash. – CONFIG1 at 0x8007 with the single CP bit; ID at 0x8006. – No EEPROM on the family; the HEF window is the persistent region.

Locked arrays read 0x000; erased cells 0xFFFF; unmapped space above 0x1FFF also 0x000. The 14KB flash size means the sweep is still short, but the boundary matters when distinguishing the part from the 4K PIC16F1458.

Image Texture

A 1454 image is dominated by USB stack code: endpoint setup, control-transfer handling, descriptor tables in flash. Descriptor strings are human-readable in the raw dump – manufacturer and product names survive as ASCII – and they often identify the product faster than any documentation. The EUSART or MSSP blocks bridge USB to a UART or SPI device; PWM outputs drive indicators or charge control. Because there is no converter, recovered code contains none of the sampling loops seen on other families – a useful negative fingerprint.

The Session

Two-wire ICSP as production used; USB is not needed for the recovery itself. Identify via the ID word, read the configuration words, sweep the array including the HEF tail, verify decoding. The 1,024-byte SRAM gives the USB buffers real room – double-buffered endpoints are visible as paired buffer descriptors. Nothing is erased and the part returns to service.

Deliverables

HEX at word addresses, annotated disassembly with the USB stack, descriptor tables and HEF parameters labeled, configuration report, checksum. Clone parts can reproduce the original lock or ship unprotected. For the analog-equipped siblings, see the PIC16F1455 (14-pin, 5 ADC channels) and PIC16F1459 (20-pin, 9 channels).

Four Thousand Words, No Analog At All

The PIC16F1454 is the odd member of the 145x line: 4,096 words of flash, 512 bytes of SRAM, fourteen pins, a full-speed USB controller and the serial peripherals – but no ADC, no digital-to-analog converter, no comparators and no complementary waveform generator. It is a pure digital USB part, chosen where the analog work happens in another device.

What Its Emptiness Reveals

Without analog blocks the initialisation code collapses to a dozen register writes, and the image becomes almost entirely protocol logic. That makes the 1454 the fastest part in this batch to read end to end, and it makes the recovered image an unusually clean specification of the host protocol, since there is nothing else in the code to distract from it.

– Flash: 0x0000-0x0FFF (4K words), 0x3FFF erased, 0x0000 protected. – Configuration: 0x8007-0x8008, device ID 0x8006.

A Digital-Only Image

Fourteen pins with USB leaves few for anything else, so the design is a bridge: USB on one side, a serial or parallel interface on the other. The disassembly is a receive path, a transmit path and a small translation table, and the translation table is where the product’s actual behaviour lives – it maps host commands to device actions, and it is the block most worth annotating in full.

Handover Package

HEX at word addresses, annotated disassembly with the command translation table expanded, configuration report, checksum tied to the die. Protection left as found and the part returned serviceable.

To book a 1454 recovery, write to the services desk or the contact form – USB-family extractions are typically same-week work.