EEPROM Library
EEPROM data memory is available with a number of 8051 family. The mikroC PRO for 8051 includes a library for comfortable work with MCU's internal EEPROM.
Note: EEPROM Library functions implementation is MCU dependent, consult the appropriate MCU datasheet for details about available EEPROM size and constrains.
Library Routines
EEPROM_Read
Prototype |
unsigned short EEPROM_Read(unsigned int address); |
---|---|
Returns |
Byte from the specified address. |
Description |
Reads data from specified Parameters :
|
Requires |
Nothing. |
Example |
unsigned int eeAddr = 2; unsigned short temp; ... temp = EEPROM_Read(eeAddr); |
EEPROM_Write
Prototype |
unsigned short EEPROM_Write(unsigned int address, unsigned short wrdata); |
---|---|
Returns |
|
Description |
Writes Parameters :
Note: Specified memory location will be erased before writing starts. |
Requires |
Nothing. |
Example |
unsigned short eeWrite = 0x55; unsigned int wrAddr = 0x732; ... EEPROM_Write(wrAddr, eeWrite); |
EEPROM_Write_Block
Prototype |
unsigned short EEPROM_Write_Block(unsigned int address, unsigned short *ptrdata); |
---|---|
Returns |
|
Description |
Writes one EEPROM row (32 bytes block) of data. Parameters :
Note: Specified memory block will be erased before writing starts. |
Requires |
EEPROM module must support block write operations. It is the user's responsibility to maintain proper address alignment. In this case, address has to be a multiply of 32, which is the size (in bytes) of one row of MCU's EEPROM memory. |
Example |
unsigned int wrAddr = 0x0100; unsigned short iArr[32] = {'m', 'i', 'k', 'r', 'o', 'E', 'l', 'e', 'k', 't', 'r', 'o', 'n', 'i', 'k', 'a', 0}; ... EEPROM_Write_Block(wrAddr, iArr); |
Library Example
This example demonstrates using the EEPROM Library with AT89S8253 MCU.
First, some data is written to EEPROM in byte and block mode; then the data is read from the same locations and displayed on P0, P1 and P2.
char buffer[32], ii; // Data buffer, loop variable void main(){ P0 = 0; P1 = 0; P2 = 0; for(ii = 31; buffer[ii] = ii; ii--) // Fill data buffer ; EEPROM_Write(2, 0xAA); // Write some data at address 2 EEPROM_Write(0x732,0x55); // Write some data at address 0x732 EEPROM_Write_Block(0x100, buffer); // Write 32 bytes block at address 0x100 Delay_ms(1000); // Blink P0 and P1 diodes P0 = 0xFF; // to indicate reading start P1 = 0xFF; Delay_ms(1000); P0 = 0x00; P1 = 0x00; Delay_ms(1000); P0 = EEPROM_Read(2); // Read data from address 2 and display it on PORT0 P1 = EEPROM_Read(0x732); // Read data from address 0x732 and display it on PORT1 Delay_ms(1000); for(ii = 0; ii < 32; ii++) { // Read 32 bytes block from address 0x100 P2 = EEPROM_Read(0x100+ii); // and display data on PORT2 Delay_ms(250); } }
What do you think about this topic ? Send us feedback!