[an error occurred while processing this directive]
Может сделать немного по другому?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Al Volovich 03 марта 2003 г. 07:30
В ответ на: Keil C AT89s8252, вопрос по применению указателей. отправлено Кр.Гена 28 февраля 2003 г. 19:55

Все равно, обращение к ЕЕПРОМ немного отличается от обращения к внешней ОЗУ.

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