Es asi como dices...
Si quieres guardar estados en la eeprom y son bits (short int) puedes hacerlo con estas funciones, incluidas en el CCS como una libreria llamada Internal_EEprom.c.
////////////////////////////////////////////////////////////////////////////////
//// Internal EEPROM Functions
////////////////////////////////////////////////////////////////////////////////
// Purpose: Write one bit to internal eeprom
// Inputs: 1) An eeprom address
// 2) The bit position (LSB == 0)
// 3) The bit to write
// Outputs: None
void write_int1_eeprom(INT_EEPROM_ADDRESS address, int8 bitPosition, int1 data)
{
int8 stored_data;
stored_data = read_eeprom(address);
if(data)
{
bit_set(stored_data, bitPosition);
}
else
{
bit_clear(stored_data, bitPosition);
}
write_eeprom(address, stored_data);
}
// Purpose: Read one bit from internal eeprom
// Inputs: 1) An eeprom address
// 2) The bit position (LSB == 0)
// Outputs: The bit read from internal eeprom
int1 read_int1_eeprom(INT_EEPROM_ADDRESS address, int8 bitPosition)
{
return bit_test(read_eeprom(address), bitPosition);
}
// Purpose: Write a 16 bit number to internal eeprom
// Inputs: 1) An eeprom address
// 2) The 16 bit number to write to internal eeprom
// Outputs: None
void write_int16_eeprom(INT_EEPROM_ADDRESS address, int16 data)
{
int8 i;
for(i = 0; i < 2; ++i)
{
write_eeprom(address + i, *(&data + i));
}
}
Espero te sirva!!