|
data byte *pxdata;
/*-------------------------------------*/
void make_pxdata (word toff, word ad)
{
pxdata = (byte *) (0x010000 or ((ad shl 1) + (toff shl 1)));
}
/*-------------------------------------*/
/* читаем внутреннийй EEPROM 8252 словами 16 бит */
word read_flash_ (word tabl_off, word ad)
{
make_pxdata (tabl_off, ad);
DI
WMCON or= 1 shl EEMEN;
EI
DATAWH = *pxdata++;
DATAWL = *pxdata;
DI
WMCON and= ~(1 shl EEMEN);
EI
return DATAW;
}
/*-------------------------------------*/
void eeprom_rdy (void)
{
for (;;)
{
if ((WMCON and (1 shl EERDY)) lne 0) return;
}
}
/*-------------------------------------*/
/* пишем внутренний EEPROM 8252 словами 16 бит */
void write_flash_ (word tabl_off, word ad, word dat)
{
DATAW = dat;
make_pxdata (tabl_off, ad);
DI
WMCON or= (1 shl EEMEN) or (1 shl EEMWE);
EI
eeprom_rdy ();
*pxdata++ = DATAWH;
eeprom_rdy ();
*pxdata = DATAWL;
eeprom_rdy ();
DI
WMCON and= ~((1 shl EEMEN) or (1 shl EEMWE));
EI
}
/*-------------------------------------*/
E-mail: info@telesys.ru