Проблема в следующем. Есть переменная типа integer .Например unsigned int current_position=50000. По ходу программы она меняется и при выключении устройства надо сохранить эту переменную во внутреннем EEPROM. Но так как ячейки байтовые , то как я понимаю эту переменную надо разделить на 2 по 8 бит и записать по двум адресам.
С этим вот проблем вроде нет.Делаю так:
#define LOW(int) (unsigned char)(*((char*)&(int)+0)) //returns lowbyte #define HIGH(int) (unsigned char)(*((char*)&(int)+1)) //returns highbyte
unsigned int current_position=50000; unsigned char current_position_msb; //highbyte unsigned char current_position_lsb; //lowbyte
current_position_msb=HIGH(current_position); // возвращает 195 current_position_lsb=LOW(currentr_position); // возвращает 80 И эти значения пишу в EEPROM.
При включении надо восстановить эту переменную. Читаю current_position_msb и current_position_lsb,но как соеденить их в Integer,чтобы получилось current_position=50000, не знаю. Или может есть решение по проще?
|