Wichit Sirichote, email@example.com
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.
- The signature byte is located at 0x100, not 0x31!
- It needs +6.5V to supply the device when erase and lock bit programming!
- Chip erasing needs sequence of power the device up and down!
- The lock bit programming requires 100us!
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.
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
ERASING PROBLEM with LOCK BIT programmed
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'.
- Schematic: Easy3.pdf
- PCB file: ....
- BOM: ....
- Firmware (not recommended): EZ56.HEX, EZ56.C
- Firmware updated 29 Sep 2002: EZ57.HEX and EZ57.C