Изобретено не мной, но проверено и работает, и отображается.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено XPA 15 апреля 2004 г. 14:14
В ответ на: Keil7.01 + AT89S8252 +EEPROM... отправлено Birdie 15 апреля 2004 г. 13:53

/*
* This file contains the frame-work for the EEPROM at89c8252
*/

#include
#include

#define EEPROM_W WMCON|=EEMEN_|EEMWE_
#define EEPROM_R WMCON|=EEMEN_
#define EEPROM_endW WMCON&=(EEMEN_|EEMWE_)^0xff
#define EEPROM_endR WMCON&=EEMEN_^0xff
#define EEPROM_wait while(!(WMCON&EERDY_))


void WriteEEBuf(unsigned int addr,unsigned char data *buf,unsigned char cnt){ //write cnt bytes from buf->adr
EEPROM_W;
while(cnt>0){
cnt--;
XBYTE[addr]=*buf;
addr++;
buf++;
EEPROM_wait;
}
EEPROM_endW;
}
void WriteEEByte(unsigned int addr,unsigned char buf){ //one byte buf->addr
EEPROM_W;
XBYTE[addr]=buf;
EEPROM_wait;
EEPROM_endW;
}

void ReadEEBuf(unsigned int addr,unsigned char data *buf,unsigned char cnt){ //read cnt EEPROM->buf
EEPROM_R;
while(cnt>0){
cnt--;
*buf=XBYTE[addr];
addr++;
buf++;
}
EEPROM_endR;
}
unsigned char ReadEEByte(unsigned int addr){ //read one byte of EEPROM
unsigned char b;
EEPROM_R;
b=XBYTE[addr];
EEPROM_endR;
return b;
}

data char buf[]={1,2,3,4,5,6,7,8,9,0,0,0,0,0};
data char a;

void main(void){ //test
WriteEEBuf(0,buf,9);
WriteEEByte(10,0xf5);
ReadEEBuf(0,buf,12);
a=ReadEEByte(10);

}

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

Ответы



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

E-mail: info@telesys.ru