Main page Castellano  Deutsch  English 

PIC-16Fxxx-Programmer 2.4

The software programs ('burns') midrange Flash-ROM-Controller PIC 12Fxxx/16Fxxx from Microchip using the serial port of the PC. Furthermore, it offers a simple debugger and the ability to tune the oscillator.
The package also includes board layouts for an inexpensive programmer module and three test modules.

Software and boards are intended for educational purpose and home users. Commercial use is restricted to the field of Research and Development.

Requires: Windows 98 or better, 15 MByte disk space, serial port.
(Since the program does only use Windows standard functions it seems to work with 'WinE' under Linux, too.)

To install with a different language you may execute: "picpr246.exe /L=XX", where 'XX' is either 'DE', 'EN' or 'ES'.

Comments and error reports to:   contact

Supported devices:

8-pin:  12F609*, 12HV609*, 12F615*, 12HV615*, 12F629, 12F635, 12F675, 12F683
14-pin:  16F610*, 16HV610*, 16F616*, 16HV616*, 16F630, 16F636, 16F676, 16F684, 16F688
18-pin:  16F627, 16F628, 16F627A, 16F628A, 16F648A,
16F818, 16F819,
16C84, 16F83, 16F84, 16F84A,
16F87, 16F88
20-pin:  16F631, 16F639, 16F677, 16F685, 16F687, 16F689, 16F690,
16F785, 16HV785
28-pin:  16F72, 16F73, 16F76,
16F737, 16F767,
16F870, 16F872, 16F873, 16F876, 16F873A, 16F876A,
16F882, 16F883, 16F886,
16F913, 16F916
40-pin:  16F74, 16F77,
16F747, 16F777,
16F871, 16F874, 16F877, 16F874A, 16F877A,
16F884, 16F887,
16F914, 16F917

* = not tested!

Debugger works with: 16F7x7, 16F818/819, 16F87x, 16F87xA, 16F87/88, 16F88x, 16F91x.

Data sheets of the devices can be downloaded directly from Microchip.

User interface

The user interface is hold simple and allows the direct access to all important parameters and functions. Beside controller type and serial port one can choose, which memory area shall be programmed, verified or read.

[Main window][Info...]

Within the submenu View one can choose the language of the user interface and set options.
When connected with the special programmer module, for example, it can be adjusted in detail at which voltage level each operation should run. This is particularly important, if one likes to program or read the PIC directly within the application circuit.

[View menu][Options window]


Some PIC 16Fxxx have an internal Debugger Circuit. To use the debugger an special software – the debug executive – has to be stored into the PIC in addition to the user program.
When using the debugger, besides of the last 144 or 160 program memory locations, other resources are not available for general use: one stack level, four registers and the connections /MCLR, RB6 and RB7, which serve for the communication with the programmer module.
In contrast to Microchip's ICD, the Watchdog Timer may be enabled.

Main differences to ICD2, ICD3:
 'PicProm'ICD2, ICD3
Supported devices:  some 16Fxxx  whole range
Program memory words used:144 or 160256
User registers used:412
WDT usable:yesno
Debug entry time: up to 70ms -
Read time for one register:1500 Tosc*7000 Tosc*
Read time for 16
successive registers:
24000 Tosc*22000 Tosc*
* oscillator clock cycles of the PIC

[Debugger window]

The debugger executive works with the actual oscillator of the PIC in test.
'PicProm' adapts within a range from 15kHz to 60MHz to the oscillator frequency by measuring the target period on every debug entry (via break point or single step). Thus, the debug communication always runs with the maximal possible velocity.

After activating of the debugger the PIC always executes the first instruction and then halts.
Now one can:


The editor shows the loaded HEX file in assembler syntax. When reading the file, it is analysed extensively. Especially, 'PicProm' tries to find the currently active register bank for each instruction to be able to show the correct register name.

[Editor window]

Oscillator tuning

'PicProm' offers the possibility to measure the frequency of the internal or an external RC oscillator. During measurement the value will be updated four times per second. The precision is about 0.01% over the entire measuring range from 15kHz to 60MHz.
Using an precision trimmer in the external RC oscillator allows free adjusting of the clock frequency.

[Oscillator tuning window]

Modern PIC have an internal oscillator, which can be tuned within certain range by writing to the OSCTUNE register. 'PicProm' can determine this OSCTUNE value for a given frequency and store it automatically into the opened HEX file.

It should be taken into consideration that the value is only valid for the measured device and in addition depends on temperature and voltage.

Series programmer

For education purposes it can be necessary to equip several experimental boards quickly with identically programmed PICs. Therefore, to keep handling simple a series programmer has been implemented.
'PicProm' recognizes when a PIC is inserted into the programmer socket, and the programming cycle automatically starts after a chosen delay time.

Interface module

The level adaptation between serial port and the microcontroller is done by a more or less expensive interface module.

The simple variant supported by 'PicProm' has little parts, but allows only reading and programming the PIC and absolutely needs a desktop PC with a "powerful" port. For a faultless programming the port must have an stable High level of at least +11V at a current of 5mA.


To exhaust all possibilities of 'PicProm' one needs the programmer module suited to it. The heart of the module is a PIC 16F628(A). It receives commands from a serial port of the PC and processes them autonomous.

[Programmer module]

When developing the circuits, much importance have been attached to hold the power consumption of the programmer module as low as possible. The current consumption is below 3mA in Stand-By and of about 9mA while programming. In connection with a powerful serial port of a desktop PC the module can program a PIC without the need for an additional power supply.

Main features of the module are:

The following schemes show how to connect the programming signals to the PIC.

[Connection schemes]

Some typical programming times for entire memory (includes verify):

Controller  SizeSpecial module    Simple module
    Vdd = 5V    Vdd = 3.3V
12F629 1024 7s - 14s*
16F818 1024 3s 4s 8s*
16F84 1024 20s - 24s*
12F683 2048 6s - 13s*
16F716 2048 5s - 11s*
16HV7852048 - 7s 13s*
16F648A4096 34s - 50s*
16F690 4096 11s 14s 23s*
16F737 4096 9s - 23s*
16F873 4096 26s 45s 42s*
16F913 4096 11s 14s 23s*
16F876A8192 13s 22s 35s*
16F886 8192 15s 21s 36s*

* Depends on PC configuration.

back to the main page