当前位置: 代码迷 >> 单片机 >> STC12单片机 EEPROM的使用,该如何解决
  详细解决方案

STC12单片机 EEPROM的使用,该如何解决

热度:206   发布时间:2016-04-28 14:48:50.0
STC12单片机 EEPROM的使用
最近我在玩stc12c5a60s2单片机,很想尝试用用它的内部EEPROM,于是就像看看Datasheet上的范例,可是有的地方看不明白,恳请大神指点~~~(问题在程序注释里)
void main()
{
uint i;
P1=0xfe;//这个是什么意思?难道P1口可以选择EEPROM的地址??????
Delay10us();
IapEraseSector(IAP_ADDRESS);
for(i=0;i<512;i++)
{
if(IapReadByte(IAP_ADDRESS+i)!=0xff)
goto Error;
}
P1=0xfc;//问题同上
Delay10us();
for(i=0;i<512;i++)
{
IapProgramByte(IAP_ADDRESS+i,(uchar)i);
}
P1=0xf8;//问题同上
Delay10us();
for(i=0;i<512;i++)
{
if(IapReadByte(IAP_ADDRESS+i)!=(uchar)i)
{
goto Error;
}
}
P1=0xf0;//问题同上
while(1);
Error:
P1=P1&0x7f;
while(1);
}

//===============ISP/IAP进入待机模式===============
void IapIdle()
{
IAP_CONTR=0;
IAP_CMD=0;  
IAP_TRIG=0;
IAP_ADDRH=0x80;//这是什么意思?????????
IAP_ADDRL=0x00;
}
------解决思路----------------------
P1=0xfe;//这个是什么意思?难道P1口可以选择EEPROM的地址??????

这个只是端口操作,跟eeprom没有关系.
IAP_CONTR=0;
IAP_CMD=0;  
IAP_TRIG=0;
IAP_ADDRH=0x80;//这是什么意思?????????
IAP_ADDRL=0x00;

这些都是寄存器操作,可以看头文件和说明书.