EEPROM Library
EEPROM data memory is available with a number of 8051 family. The mikroPascal 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 address range.
Library Routines
EEPROM_Read
Prototype |
function EEPROM_Read(address: word): byte; |
---|---|
Returns |
Byte from the specified address. |
Description |
Reads data from specified Parameters :
|
Requires |
Nothing. |
Example |
var eeAddr : word; temp : byte; ... eeAddr := 2 temp := EEPROM_Read(eeAddr); |
EEPROM_Write
Prototype |
function EEPROM_Write(address: word; wrdata: byte): byte; |
---|---|
Returns |
|
Description |
Writes Parameters :
Note: Specified memory location will be erased before writing starts. |
Requires |
Nothing. |
Example |
var eeWrite : byte = 0x55; wrAddr : word = 0x732; ... eeWrite := 0x55; wrAddr := 0x732; EEPROM_Write(wrAddr, eeWrite); |
EEPROM_Write_Block
Prototype |
function EEPROM_Write_Block(address: word; var ptrdata: byte): byte; |
---|---|
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 |
var wrAddr : word; iArr : string[16]; ... wrAddr : 0x0100; iArr := 'mikroElektronika'; 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.
program EEPROM; var dat : array [32] of byte; // Data buffer, loop variable i : byte; begin P0 := 0; P1 := 0; P2 := 0; for ii := 31 downto dat[ii] do dat[i] := i; // 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,dat); // 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 to 31 do // Read 32 bytes block from address 0x100 begin P2 := EEPROM_Read(0x100+ii); // and display data on PORT2 Delay_ms(500); end; end.
What do you think about this topic ? Send us feedback!