[an error occurred while processing this directive] [an error occurred while processing this directive]
не верх изящества, но работает (пишем/ читаем слово 16 бит DATAWH, DATAWL по адресу ad со смещением tabl_off)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Тумблер 28 ноября 2001 г. 12:53
В ответ на: Пожалуйста поделитесь примером работы АТ89S8252 (или любого MCS51) с Atmel Dataflash отправлено Ruslan 27 ноября 2001 г. 17:06

#if CPU_TIPE leq AT89S8252

data byte *pxdata;

/*-------------------------------------*/

void make_pxdata (word toff)

begin
pxdata = (byte *) (0x010000 or ((ad shl 1) + (toff shl 1)));
endbeg

/*-------------------------------------*/
/* читаем внутреннийй EEPROM 8252 */

void read_flash_ (word tabl_off)

begin

make_pxdata (tabl_off);

DI
WMCON or= 1 << EEMEN;
EI

DATAWH = *pxdata++;
DATAWL = *pxdata;

DI
WMCON and= ~(1 << EEMEN);
EI

endbeg

/*-------------------------------------*/

void eeprom_rdy (void)

begin

for (;;)
{
if ((WMCON and (1 << EERDY)) lne 0) return;
}

endbeg

/*-------------------------------------*/
/* пишем внутренний EEPROM 8252 */

void write_flash_ (word tabl_off)

{

make_pxdata (tabl_off);

DI
WMCON or= (1 << EEMEN) or (1 << EEMWE);
EI

eeprom_rdy ();
*pxdata++ = DATAWH;
eeprom_rdy ();
*pxdata = DATAWL;
eeprom_rdy ();

DI
WMCON and= ~((1 << EEMEN) or (1 << EEMWE));
EI

}

/*-------------------------------------*/
#endif


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru