Page 137
PRELIMINARY
C8051F020/1/2/3
15.
FLASH MEMORY
The C8051F020/1/2/3 family includes 64k + 128 bytes of on-chip, reprogrammable FLASH memory for program
code and non-volatile data storage. The FLASH memory can be programmed in-system, a single byte at a time,
through the JTAG interface or by software. Once cleared to logic 0, a FLASH bit must be erased to set it back to
logic 1. The bytes would typically be erased (set to 0xFF) before being reprogrammed. FLASH write and erase oper-
ations are automatically timed by hardware for proper execution; data polling to determine the end of the write/erase
operation is not required. Refer to Table 15.1 for the electrical characteristics of the FLASH memory.
15.1.
Programming The FLASH Memory
The simplest means of programming the FLASH memory is through the JTAG interface using programming tools
provided by Cygnal or a third party vendor. This is the only means for programming a non-initialized device. For
details on the JTAG commands to program FLASH memory, see
Section “24.2. Flash Programming Commands”
on page 264
.
The FLASH memory can be programmed by software using a MOVX write instruction, with the address and data
byte to be programmed provided as normal operands. Before writing to FLASH memory using a MOVX write,
FLASH write operations must be enabled by setting the PSWE Program Store Write Enable bit (PSCTL.0) to logic 1.
This directs the MOVX writes to FLASH memory instead of XRAM. The PSWE bit remains set until cleared by soft-
ware. To avoid errant FLASH writes, it is recommended that interrupts be disabled while the PSWE bit is logic 1.
FLASH memory is read using the MOVC read instruction. MOVX reads are always directed to XRAM, regardless of
the state of PSWE.
A write to FLASH memory can clear bits but cannot set them; only an erase operation can set bits in FLASH. There-
fore, the byte location to be programmed must be erased before a new value can be written. The 64k byte FLASH
memory is organized in 512-byte pages. The erase operation applies to an entire page (setting all bytes in the page to
0xFF). The following steps illustrate the algorithm for programming FLASH by user software.
Step 1. Disable interrupts.
Step 2. Set FLWE (FLSCL.0) to enable FLASH writes/erases via user software.
Step 3. Set PSEE (PSCTL.1) to enable FLASH erases.
Step 4. Set PSWE (PSCTL.0) to redirect MOVX commands to write to FLASH.
Step 5. Use the MOVX command to write a data byte to any location within the 512-byte page to be erased.
Step 6. Clear PSEE to disable FLASH erases
Step 7. Use the MOVX command to write a data byte to the desired byte location within the erased 512-byte
page. Repeat this step until all desired bytes are written (within the target page).
Step 8. Clear the PSWE bit to redirect MOVX commands to the XRAM data space.
Step 9. Re-enable interrupts.
Write/Erase timing is automatically controlled by hardware. Note that code execution in the 8051 is stalled while the
FLASH is being programmed or erased.
Table 15.1. FLASH Electrical Characteristics
CONDITIONS
PARAMETER
Endurance
Erase Cycle Time
Write Cycle Time
MIN
20k
10
40
TYP
100k
12
50
MAX
UNITS
Erase/Write
ms
μs
14
60