TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: marcoscab1166 en 14 de Julio de 2016, 19:54:29

Título: Guardar caracteres en la eeprom
Publicado por: marcoscab1166 en 14 de Julio de 2016, 19:54:29
Hola, una pregunta, se puede guardar caracteres en la eeprom? Si pueden ponerme un ejemplo mejor, ademas de como leerlos. Gracias.
Título: Re:Guardar caracteres en la eeprom
Publicado por: planeta9999 en 14 de Julio de 2016, 20:21:01
//*****************************************
//********** Programa principal ***************
//*****************************************
main
{
  char from_eeprom1 = ' ';
  char save_me = ' ';

   save_me = 'A';
   ee_write_byte(0x00, &save_me); // Escritura
   ee_read_byte(0x00, &from_eeprom1); // Lectura
}
//***********************************************
//***** Funcion  escritura en eeprom  *****************
//***********************************************
void ee_write_byte(unsigned char address, unsigned char *_data)
{
    EEDATA = *_data;
    EEADR = address;
    // start write sequence as described in datasheet, page 91
    EECON1bits.EEPGD = 0;
    EECON1bits.CFGS = 0;
    EECON1bits.WREN = 1; // enable writes to data EEPROM
    INTCONbits.GIE = 0;  // disable interrupts
    EECON2 = 0x55;
    EECON2 = 0x0AA;
    EECON1bits.WR = 1;   // start writing
    while(EECON1bits.WR){ _asm nop _endasm; }
   // if(EECON1bits.WRERR){printf("ERROR: writing to EEPROM failed!n");}
    EECON1bits.WREN = 0;
    INTCONbits.GIE = 1;  // enable interrupts
}
//***********************************************
//***** Funcion  lectura en eeprom  *******************
//***********************************************
void ee_read_byte(unsigned char address, unsigned char *_data)
{
    EEADR = address;
    EECON1bits.CFGS = 0;
    EECON1bits.EEPGD = 0;
    EECON1bits.RD = 1;
    *_data = EEDATA;
}
//***********************************************
Título: Re:Guardar caracteres en la eeprom
Publicado por: marcoscab1166 en 14 de Julio de 2016, 22:31:56
//*****************************************
//********** Programa principal ***************
//*****************************************
main
{
  char from_eeprom1 = ' ';
  char save_me = ' ';

   save_me = 'A';
   ee_write_byte(0x00, &save_me); // Escritura
   ee_read_byte(0x00, &from_eeprom1); // Lectura
}
//***********************************************
//***** Funcion  escritura en eeprom  *****************
//***********************************************
void ee_write_byte(unsigned char address, unsigned char *_data)
{
    EEDATA = *_data;
    EEADR = address;
    // start write sequence as described in datasheet, page 91
    EECON1bits.EEPGD = 0;
    EECON1bits.CFGS = 0;
    EECON1bits.WREN = 1; // enable writes to data EEPROM
    INTCONbits.GIE = 0;  // disable interrupts
    EECON2 = 0x55;
    EECON2 = 0x0AA;
    EECON1bits.WR = 1;   // start writing
    while(EECON1bits.WR){ _asm nop _endasm; }
   // if(EECON1bits.WRERR){printf("ERROR: writing to EEPROM failed!n");}
    EECON1bits.WREN = 0;
    INTCONbits.GIE = 1;  // enable interrupts
}
//***********************************************
//***** Funcion  lectura en eeprom  *******************
//***********************************************
void ee_read_byte(unsigned char address, unsigned char *_data)
{
    EEADR = address;
    EECON1bits.CFGS = 0;
    EECON1bits.EEPGD = 0;
    EECON1bits.RD = 1;
    *_data = EEDATA;
}
//***********************************************

Gracias, y los valores de el caracter address los puedo expresar como siempre no? o sea 0,1,2,3, etc