EEPROM Library

EEPROM data memory is available with a number of PIC MCUs. mikroC PRO for PIC includes library for comfortable work with EEPROM.

Library Routines

EEPROM_Read

Prototype

// for PIC16
unsigned short EEPROM_Read(unsigned short address);

// for PIC18
unsigned short EEPROM_Read(unsigned int address);

Returns

Returns byte from specified address.

Description

Reads data from specified address. Parameter address is MCU dependent; for PIC16 family it is of short type, and for PIC18 family it is of integer type.

Requires

Requires EEPROM module.

Ensure minimum 20ms delay between successive use of routines EEPROM_Write and EEPROM_Read. Although PIC will write the correct value, EEPROM_Read might return an undefined result.

Example
unsigned short take;
...
take = EEPROM_Read(0x3F);

EEPROM_Write

Prototype

// for PIC16
void EEPROM_Write(unsigned short address, unsigned short data);

// for PIC18
void EEPROM_Write(unsigned int address, unsigned short data);

Returns

Nothing.

Description

Writes data to specified address. Parameter address is MCU dependent; for PIC16 family it is of short type, and for PIC18 family it is of integer type.

Be aware that all interrupts will be disabled during execution of EEPROM_Write routine (GIE bit of INTCON register will be cleared). Routine will restore previous state of this bit on exit.

Requires

Requires EEPROM module.

Ensure minimum 20ms delay between successive use of routines EEPROM_Write and EEPROM_Read. Although PIC will write the correct value, EEPROM_Read might return an undefined result.

Example
EEPROM_Write(0x32, 19);

Library Example

The example demonstrates use of EEPROM Library.

Copy Code To ClipboardCopy Code To Clipboard
char ii;                                 // loop variable

void main(){
  ANSEL =  0;                            // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                          // Disable comparators
  C2ON_bit = 0;

  PORTB = 0;
  PORTC = 0;
  PORTD = 0;

  TRISB = 0;
  TRISC = 0;
  TRISD = 0;
   
  for(ii = 0; ii < 32; ii++)             // Fill data buffer
    EEPROM_Write(0x80+ii, ii);           // Write data to address 0x80+ii

  EEPROM_Write(0x02,0xAA);               // Write some data at address 2
  EEPROM_Write(0x50,0x55);               // Write some data at address 0150

  Delay_ms(1000);                        // Blink PORTB and PORTC LEDs
  PORTB = 0xFF;                          //   to indicate reading start
  PORTC = 0xFF;
  Delay_ms(1000);
  PORTB = 0x00;
  PORTC = 0x00;
  Delay_ms(1000);

  PORTB = EEPROM_Read(0x02);             // Read data from address 2 and display it on PORTB
  PORTC = EEPROM_Read(0x50);             // Read data from address 0x50 and display it on PORTC

  Delay_ms(1000);

  for(ii = 0; ii < 32; ii++) {           // Read 32 bytes block from address 0x80
    PORTD = EEPROM_Read(0x80+ii);        //   and display data on PORTD
    Delay_ms(250);
    }
}
Copyright (c) 2002-2012 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
Want more examples and libraries? 
Find them on LibStock - A place for the code