Easy-Downloader V3.0 for 89C51/89C52/89C55WD

Wichit Sirichote, kswichit@kmitl.ac.th

Build this new version of Easy programmer. The programmer board was specially designed for 89C55WD.

I decided to redesign the Easy programmer V2.0 for 89C55WD. Since the programming algorithm and hardware setup of the 89C55WD quite differ from 89C51/52. Below is summary of the differences. HARDWARE

Figure 1 shows the schematic of the new version, Easy programmer V3.0. We see that it needs more i/o pin, so I add the 8-bit latch, 74LS373 to provide A0-A7. The ALE control signal is software controlled using P1.7. Port 0 of the master chip ties to Port 0 of the target with 10k pullup. A8-A14 still uses Port 2. Look at the A14, the 89C55WD uses P3.4 for A14. The programming mode selcection is made by using P3.2-P3.7. The prog pulse still uses P2.7 the same as Easy V2.0. When programming, P3.0 of the target chip was used to be RDY/BSY line. The master chip read this status through P1.6. However for 89C51 and 89C52, instead the P3.4 of target chip is the status line which is tied to P2.6. The firmware will switch P2.6 to be the output bit (A14) for 89C55WD and to be input bit when monitor the status line for 89C51/52. P1.5 of the master chip controls the output of U7, if it set the output will be +5V and if it clear, it will be +6.5V. Q3, the PNP transistor controls the output of U7 to supply to the target chip VCC. The signal that control Q3 was tied to P1.2 of the master chip.

FIGURE 1: Schematic of Easy-Downloader V3.0


The main program is a simple forever loop, reading the character received through SBUF and execute the command.


Details for each function can study from the source code EZ56.C.

Here is a sample of using command under Hyperterminal with 9600, 8n1 setting.

When press ENTER, we get,

Easy-Downloader V3.0 for ATMEL 89C51/52/55WD

Suppose the 89C55WD was programmed and inserted on ZIF socket, press command s200 and command 'r', we get the 200 bytes internal code.


Now use command 'g'. We see that the chip 89C55 was found.
 found 89C55-12V
 nonblank 3744 bytes
 bytes counter 200

Let try with command 'b' to read lock bit 1,2,3.
 lock bit 1,2,3 = 000

000 means the lock bit 1,2,3 are not programmed.

Try lock the code by programming the lock bit 1,2,3 with command 'l'.

Then read again the lock bit with command 'b'.
 lock bit 1,2,3 = 111

Now the lock bit 1,2,3 are programmed. Try command 'r' to see internal code again.

We see that all codes are FF.

Note: the command shown above can be executed under communication program, say Hyperterminal with 9600 8n1 and no flow control setting.

When programming the chip the PC software EZ3.1 or EZ4 will help send the hex code to the board.


The 74LS373 is placed on the left hand. The right most is U7, 7805 with nearby two silicon diodes. Above the ZIF socket is 2n2907, Q3. For those who built the board like me (using universal PCB) can then modify it easily. However, the layout is now under preparation. I will post it when available soon.

FIGURE 2: My prototype adapted from Easy V2.0

Hardware and Firmware modifications

I added the 8MHz Xtal to the pin 18,and 19 of ZIF socket. And cut the oscillator signal from master chip.

New firmware  EZ57.HEXand EZ57.C


In case of the chip was locked and the window program cannot erase the chip caused by signature byte is not correct. Try using communication program, XTALK or Hyperterminal with 9600 8n1 no flow control, and perform the following step;

1. enter command 'e',
2. power the board power down and up,
3. enter command 'e' again,
4. power the board down and up again,

Check lock bit by command 'b'.