14
2487D–MICRO–6/08
AT89S51
14. Program Memory Lock Bits
The AT89S51 has three lock bits that can be left unprogrammed (U) or can be programmed (P)
to obtain the additional features listed in Table 14-1.
When lock bit 1 is programmed, the logic level at the EA
pin is sampled and latched during reset.
If the device is powered up without a reset, the latch initializes to a random value and holds that
value until reset is activated. The latched value of EA
must agree with the current logic level at
that pin in order for the device to function properly.
15. Programming the Flash – Parallel Mode
The AT89S51 is shipped with the on-chip Flash memory array ready to be programmed. The
programming interface needs a high-voltage (12-volt) program enable signal and is compatible
with conventional third-party Flash or EPROM programmers.
The AT89S51 code memory array is programmed byte-by-byte.
Programming Algorithm: Before programming the AT89S51, the address, data, and control
signals should be set up according to the Flash Programming Modes table (Table 17-1) and Fig-
ure 17-1 and Figure 17-2. To program the AT89S51, take the following steps:
1. Input the desired memory location on the address lines.
2. Input the appropriate data byte on the data lines.
3. Activate the correct combination of control signals.
4. Raise EA
/V
PP
to 12V.
5. Pulse ALE/PROG
once to program a byte in the Flash array or the lock bits. The byte-
write cycle is self-timed and typically takes no more than 50 µs. Repeat steps 1
through 5, changing the address and data for the entire array or until the end of the
object file is reached.
Data
Polling: The AT89S51 features Data Polling to indicate the end of a byte write cycle. Dur-
ing a write cycle, an attempted read of the last byte written will result in the complement of the
written data on P0.7. Once the write cycle has been completed, true data is valid on all outputs,
and the next cycle may begin. Data
Polling may begin any time after a write cycle has been
initiated.
Ready/Busy
: The progress of byte programming can also be monitored by the RDY/BSY output
signal. P3.0 is pulled low after ALE goes high during programming to indicate BUSY
. P3.0 is
pulled high again when programming is done to indicate READY.
Table 14-1. Lock Bit Protection Modes
Program Lock Bits
LB1 LB2 LB3 Protection Type
1 U U U No program lock features
2PUU
MOVC instructions executed from external program memory
are disabled from fetching code bytes from internal memory,
EA
is sampled and latched on reset, and further programming
of the Flash memory is disabled
3 P P U Same as mode 2, but verify is also disabled
4 P P P Same as mode 3, but external execution is also disabled