[an error occurred while processing this directive]
|
Могут быть еще проблемы с баноками. Тогда из функции возвращается шняга.
bit WriteEEPROM(unsigned int adr,char dat)
{
unsigned int busy_counter = EEPROM_TIME;
unsigned char xdata EE[2048];WMCON |= EEMEN_; // Включим доступ к EEPROM
while(!(WMCON & EERDY_)) //Ждем завершения
{
if(busy_counter) busy_counter--;
else
{
WMCON &= ~(EEMWE_ | EEMEN_);
eeprom_error = 1; //Неисправна память
return 0;
}
}WMCON |= EEMWE_; //Включим запись
EE[adr] = dat; //Пишем
WMCON &= ~(EEMWE_ | EEMEN_); //Отключим EEPROM
return 1; //Все нормально
}
unsigned char ReadEEPROM(unsigned int adr)
{
unsigned int busy_counter = EEPROM_TIME;
unsigned char xdata EE[2048];
unsigned char result;WMCON |= EEMEN_; // Включим доступ к EEPROM
while(!(WMCON & EERDY_)) //Ждем завершения
{
if(busy_counter) busy_counter--;
else
{
WMCON &= ~EEMEN_;
eeprom_error = 1; //Неисправна память
return 0;
}
}
result = EE[adr];
WMCON &= ~EEMEN_;
return result; //Читаем
}