Prog84 - PIC 16c84/16f84/24c16 programmer for Linux (& DOS)

  1. Introduction
  2. Prog84.exe - old DOS version of 2.2b10
  3. Prog84 - source code
  4. Installing and usíng prog84
  5. Related links (incl. parts & kits)
  6. Simple serial port adapter - (ludpipo,UniprogIV,BR870)
  7. BR875 programmer for serial port
  8. Connections of PIC and eeprom in combined cards

1.  Programs 16c84/16f84, 16C6x/7x/923/924, 16f87x, 12c5xx and 24c16 (and maybe 24c65/24c08?)

It is possible to program PIC's and eeproms with linux. There exists a several programs for parallel and serial port programmers. One of these is prog84 originally by Wim Lewis.

I have improved prog84 to work better with Intel hex files and added the ability to read the PIC and dump the contents in an 8 or 16-bit intel hex file.

prog84-2.x can read and write 24c16 eeproms. Similar eeproms like 24c65 and 24c08 should also work, but I haven't tested this.

The program works with most ludpipo-style programmers (uniprogIV/BR870/BR875 and equivalent serial programmers). As the pins of the DB25/DB9 connector are defined in a config file, it should be possible to adapt the program for many of the serial programers available.
prog84 version >= 2.2b10 again works with parallel port pic-programmers.

2.  Prog84.exe - old DOS version of 2.2b10.

I have compiled a DOS version of prog84. It should work in real DOS (MSDOS 6.xx, OpenDos7/DRDOS/...) and in a windows 9x dosbox.

3.  Prog84 - source:

Development is mostly for Linux (should work for freebsd, but not tested). Only source code, no binaries.

4.  Installing prog84:

  1. unpack in some appropriate directory: tar zxvf prog84-2.x.tar.gz
  2. make all
  3. move the binaries to ~/bin or /usr/local/bin
  4. create ~/.lp_cfg with data according to your serial or parallel-port pic-programmer.

For users of windows/DOS, there exists several programs that kan program PIC and eeprom's : pip02, pix, miniprog, picprog06 (or here), ntpicprog (or here), multi5, etc. To my knowledge none of these can do thru-pic programming on ludpipo style programmers, but they can be used to program the PIC-part.

5.  Some related links:

Products (parts+kits) and software for PIC/USB:

6.  simple serial port adapter - (ludpipo,UniprogIV,BR870)

The UniprogIV, BR870 and ludpipo uses a circuit resembling the one shown here. There are additional switches used to select eeprom on MM2 cards, or select RB6/RB7 cards (these switches are not shown).

To use for "write-thru", it is necessary to run a program on the pic16x84. To be able to run this program, the pic16x84 needs +5V on /MCLR, so an additional switch is added ("run" switch). "thru02b.asm" is a pic16x84 program that when run, writes data to the eeprom in conjuntion with "thru84" on the PC. Thru84 generates the clocks necessary for the OSC1 pin on the pic16x84.

Ludpipo, UniprogIV, and BR870 without switches

Old UniprogIV manual

An old manual I found for uniprog IV In danish & swedish. In word-doc and wordperfect 7/8 format.

7.  BR875 (from http://www.brinck.dk/ )

The BR875 is different from BR870. The programming voltage for PIC's is better than ludpipo style programmers, with BR875 often 12.5-13V. The specifications say 12-14V. Ludpipo-style (and BR870) often only have 9-11V, which is below specifications (but often works!). The voltage depends on the quality of the serial port in use.
Prog84/dump84 works with pic16x84 as usual. Galaxy cards with C4/C8 connected requires a minor change in prog84/dump84 (fixed in version 2.2b9).

The information supplied with BR875 states that it should be possible to run PIC-programs (and write-thru). This is NOT true. The voltage on the MCLR pin of the PIC is either Vpp (13V) or GND (0V), it must be +5V if it should be possible to run programs on the PIC. The extra J3 and R5 are not needed, and have no function at all.

The solution is to ignore J3, and short D6 (8V2 zenerdiode) when running PIC programs (write/read-thru mode). A nice fix is to remove R5 (1k5), cut the GND from J3, and connect J3 on one side to Vdd (+5V) found on pin3/IC1 socket, and the other side (the R5 side) to D6+ (the side connected to + on zener and C1 / 100uF). With jumper-J3 shorted, run-mode is possible, and without jumper J3, br875 works as usual.


8.  Connections of PIC and eeprom in combined cards

These ISO cards have a 16x84 chip and an 24c16 eeprom built in. Whith appropriate software running on the PIC, the eeprom may be written or read. An modified ludpipo programmer may be used with thru84 and thru02b.hex to read and write the eeprom.

            16x84 pic
           +---------+        24c16 eeprom
           |         |        +-------+
           |         |  data  |       |
   C2 MCLR-+mclr  rb4+--------+sda    |
   C7 DATA-+rb7      |        |       |
   C3 CLK--+osc1  rb5+--------+scl    |
           |         |  clk   |       |
           |         |        +-------+
           +---------+
   C1=Vcc +5V  
   C5=Gnd  0V
The connections between the Pic and the eeprom are:
PIC 16x84   24x16
pin 10 (Rb4) --> pin 5 (SDA)
pin 11 (Rb5) --> pin 6 (SCL)
pin 1,2,3,4,7 of the eeprom should be grounded.
pin 8 of the eeprom requires 5v.

If using multimac cards that have pin 4 & 8 on the ISO-card connected to the eeprom, remember to add tape over pin 4 & 8 !. But in this case why bother use "write-thru" :)


my picasm page back to my homepage e-mail: frda(a)post3.tele.dk counter