Small Package, USB And A Little Analog
The PIC16F1455 adds analog to the 14-pin USB package: five channels of ten-bit ADC, an eight-bit DAC, two comparators and the CWG, alongside the family constants – 8,192 words of flash (0x0000-0x1FFF), 1,024 bytes of SRAM, full-speed USB 2.0 with host clock recovery, two PWM modules, EUSART, MSSP, and a 128-byte High-Endurance Flash window at 0x1F80-0x1FFF instead of EEPROM. It is the natural part for USB sensors and smart chargers, and a common recovery subject when those products’ sources disappear.
Lock And Sweep
CONFIG1 at 0x8007 with the single CP bit; ID at 0x8006; no EEPROM. The sweep rules:
– 0x0000-0x1FFF: array, 0x000 under CP, 0xFFFF when erased. – 0x1F80-0x1FFF: the HEF window, inside the array sweep. – Above 0x1FFF: unmapped, 0x000.
Distinguishing erased from protected cells only works before the lock engages, so the configuration word read at the start of the session is the authoritative record of the lock state. Compared with the ADC-less PIC16F1454, the 1455’s image gains a small sampling section: one or two channels scanned against the DAC trip level, results compared in software.
Image Anatomy
USB stack code still dominates – endpoint descriptors, control transfers, HID or vendor-class handlers. The descriptors carry ASCII product strings that identify the application in minutes. Beyond the stack, the image shows the ADC scan loop, comparator interrupts as hardware trip wires, and the EUSART bridging USB to a UART in cable products. The 1 KB SRAM holds double-buffered USB endpoints plus the ADC averaging accumulators.
The Session
Identify, read configuration, sweep 0x0000-0x1FFF over two-wire ICSP, verify decoding, deliver. No decapsulation, no erasure; the part returns to the board serviceable. The HEF tail gets separate annotation because parameter updates – charge limits, calibration – concentrate there over the product’s life, and clone firmware must reproduce those values for the board to behave identically.
Deliverables
HEX file at word addresses, annotated disassembly with USB, analog and HEF regions labeled, configuration report, checksum tied to the die. Family cross-references: PIC16F1458 for the 4K 20-pin member, PIC16F1459 for the 8K 20-pin part with nine ADC channels.
Eight Thousand Words, Twelve Pins
The PIC16F1455 carries 8,192 words of flash, 1,024 bytes of SRAM, twelve I/O pins, twelve ADC channels, a full-speed USB controller, two ECCP, a complementary waveform generator, one EUSART and two MSSP. It has no data EEPROM; a 128-byte high-endurance block at the top of the array holds whatever the design needs to keep.
Dense Pins, Dense Function
Twelve pins carrying USB plus twelve analog channels means the design multiplexes aggressively, and the firmware shows it: a phase where the USB pins are active and a phase where the analog inputs are sampled, with a port reconfiguration between them. That alternation is the defining pattern of a 1455 image, and locating it is the first task in any review.
– Flash: 0x0000-0x1FFF (8K words), 0x3FFF erased, 0x0000 protected. – HEF: 128 bytes at the top of the array. – Configuration: 0x8007-0x8008, device ID 0x8006.
The USB Side
The stack is trimmed to fit: one configuration, interrupt endpoints, and a descriptor set small enough to sit in the first few hundred words. Because the part is often used as a data acquisition front end, the endpoint handlers tend to be a direct copy of the ADC results into the endpoint buffer, which is easy to identify and easy to verify against a known input.
Handover Package
HEX at word addresses, the HEF block separately, annotated disassembly with the phase alternation and the endpoint handlers labelled, configuration report, checksum tied to the die. Protection as found.
To submit a locked 1455, use the services desk or the contact form with the part marking and what the board connects to.