ARM Technical Support Knowledge Articles


Applies to: C51 C Compiler


Information in this article applies to:


I am using the example of writing to and reading from the 2K EEPROM space for the ATMEL WM T89C51RD2 and for the ATMEL WM T89C51CC01. Why does this program not read and write properly for the ATMEL WM T89C51CC01 internal 2K EEPROM?


The architecture for the internal EEPROM for the ATMEL WM T89C51CC01 is different than for the ATMEL WM T89C51RD2 or thePhilips P89C51RD2. Therefore, the Keil example project for the ATMEL WM T89C51RD2 located at KeilC51EXAMPLESFarMemoryE2PROM for the 80C51RD2 will not work properly for the ATMEL WM T89C51CC01.

The 2k byte on-chip EEPROM memory block for the ATMEL WM T89C51CC01 is located at addresses 0000h to 07FFh of the XRAM memory space and is selected by setting control bits in the EECON register.

A read in the EEPROM memory is done with a MOVX instruction.

A physical write in the EEPROM memory is done in two steps: write data in the column latches and transfer of all data latches into an EEPROM memory row (programming). The number of data written on the page may vary from 1 to 128 bytes (the page size).

When programming, only the data written in the column latch is programmed and a ninth bit is used to obtain this feature. This provides the capability to program the whole memory by bytes, by page or by a number of bytes in a page. Indeed, each ninth bit is set when the writing the corresponding byte in a row and all these ninth bits are reset after the writing of the complete EEPROM row.

1) Write Data in the column latches:

Data is written by byte to the column latches as if to an external RAM memory. Out of the 11 address bits of the data pointer, the 4 MSBs are used for page selection (row) and 7 are used for byte selection. Between two EEPROM programming sessions, all the addresses in the column latches must stay on the same page, meaning that the 4 MSB must not be changed.

The following procedure writes to the column latches:

2) Programming

The EEPROM programming includes the following actions:

3) Reading Data from the EEPROM

The following procedure reads the data stored in the EEPROM memory:



Article last edited on: 2004-04-16 15:12:50

Rate this article

Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential