[an error occurred while processing this directive]
|
Все равно, обращение к ЕЕПРОМ немного отличается от обращения к внешней ОЗУ.
WriteEEBuf(uword addr, ubyte data *buf, ubyte cnt)
//записывает cnt байт из буфера buf по адресу addr EEPROM
{
WMCON |= EEMEN_|EEMWE_; //включаем EEPROM и разрешаем запись
while(cnt>0){
cnt--;
XBYTE[addr] = *buf;
addr++;
buf++;
while((WMCON&EERDY_) == 0); //ждем окончания записи
}
WMCON &= (EEMEN_|EEMWE_)^0xFF;
}
WriteEEByte(uword addr, ubyte buf)
//записывает байт buf по адресу addr EEPROM
{
WMCON |= EEMEN_|EEMWE_; //включаем EEPROM и разрешаем запись
XBYTE[addr] = buf;
while((WMCON&EERDY_) == 0); //ждем окончания записи
WMCON &= (EEMEN_|EEMWE_)^0xFF;
}
ReadEEBuf(uword addr, ubyte data *buf, ubyte cnt)
//считывает cnt байт из буфера buf по адресу addr EEPROM
{
WMCON |= EEMEN_; //включаем EEPROM
while(cnt>0){
cnt--;
*buf = XBYTE[addr];
addr++;
buf++;
}
WMCON &= EEMEN_^0xFF;
}
ubyte ReadEEByte(uword addr)
//считывает байт по адресу addr EEPROM и возвращает его
{
ubyte uuu;
WMCON |= EEMEN_; //включаем EEPROM
uuu = XBYTE[addr];
WMCON &= EEMEN_^0xFF;
return uuu;
}
ubyte и uword - соответственно unsigned char и unsigned int
E-mail: info@telesys.ru