合泰单片机 C语言读写片内EEPROM怎么不行呢?求高手指点!!! 10
unsignedchareeprom_rd(unsignedchara){unsignedchardata;_eea=a;_eec=0x02;_eec=_eec|0x01...
unsigned char eeprom_rd(unsigned char a)
{
unsigned char data;
_eea = a;
_eec = 0x02;
_eec =_eec|0x01; //_eec = 0x03; //
// NOP();
while(_eec & 0x01);
_eec=0x00;
data = _eed;
return (data);
}
void eeprom_wd(unsigned char a , unsigned char d)
{
_emi = 0;
_eea = a;
_eed = d;
_eec = 0x08;
_eec =_eec|0x04; //_eec = 0x0c; //
// NOP();
while(_eec & 0x04); //_wr
_eec=0x00;
_emi = 1;
} 展开
{
unsigned char data;
_eea = a;
_eec = 0x02;
_eec =_eec|0x01; //_eec = 0x03; //
// NOP();
while(_eec & 0x01);
_eec=0x00;
data = _eed;
return (data);
}
void eeprom_wd(unsigned char a , unsigned char d)
{
_emi = 0;
_eea = a;
_eed = d;
_eec = 0x08;
_eec =_eec|0x04; //_eec = 0x0c; //
// NOP();
while(_eec & 0x04); //_wr
_eec=0x00;
_emi = 1;
} 展开
展开全部
控制EEPROM存取的EEC寄存器是位于bank1地址的40H处,所以必须做bank的切换并搭配MP1的间接寻址才能正确地进行位状态的设置。
程序参考:
unsigned short Read()
{
unsinged short Backup;
_mp1=0x40;
Backup=_bp; bp=1;
RDEN=1; RD=1;
while(RD);
_iar1=0;
_bp=Backup;
return _edd;
}
void Write(unsinged short a)
{
unsinged short Backup;
_eed=a;
_mp1=0x40;
Backup=_bp; bp=1;
WREN=1; WR=1;
while(WR);
_iar1=0;
_bp=Backup;
}
程序参考:
unsigned short Read()
{
unsinged short Backup;
_mp1=0x40;
Backup=_bp; bp=1;
RDEN=1; RD=1;
while(RD);
_iar1=0;
_bp=Backup;
return _edd;
}
void Write(unsinged short a)
{
unsinged short Backup;
_eed=a;
_mp1=0x40;
Backup=_bp; bp=1;
WREN=1; WR=1;
while(WR);
_iar1=0;
_bp=Backup;
}
2016-06-02
展开全部
STC的网站有例子程序,你可以直接使用的./STC90/89系列内部EEPROM放数据(C语言)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
兄弟,怎么解决的我用的也出现这样子情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要注意时序
追问
多谢!已经解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询