各位大哥,小弟自学51单片机不久,碰到个问题,请大家帮忙解惑,小弟先行谢过。问题是这样的:
单片机为AT89C52,有段程序为:
void savepar()
{
uchar idata *dis;
uchar idata i,d;
if(setv[0]>99999.0) setv[0] =99999.0;
if(setv[1]>99999.0) setv[1] =99999.0;
if(setv[2]>99999.0) setv[2] =99999.0;
if(setv[7]>99999.0) setv[7] =99999.0;
if((setv[3]>11.00)||(setv[3]<9.00)) setv[3] =10.00;
if((setv[4]>16.00)||(setv[4]<14.00)) setv[4] =15.00;
if((setv[5]>6.00)||(setv[5]<4.00)) setv[5]=5.0;
if((setv[6]>2000.0)||(setv[6]<200.0)) setv[6] =1000.0;
for(i=0;i<8;i++)
{
dis=ftostr(setv[i]); //将浮点数存入到一个dis数组中,返回数组的首地址
XBYTE[0xf000+i*6]=dis[0];
for(d=0;d<200;d++) d=d;
XBYTE[0xf000+i*6+1]=dis[1];
for(d=0;d<200;d++) d=d;
XBYTE[0xf000+i*6+2]=dis[2];
for(d=0;d<200;d++) d=d;
XBYTE[0xf000+i*6+3]=dis[3];
for(d=0;d<200;d++) d=d;
XBYTE[0xf000+i*6+4]=dis[4];
for(d=0;d<200;d++) d=d;
XBYTE[0xf000+i*6+5]=dis[8];
for(d=0;d<200;d++) d=d;
}
}
这段程序的意思应该是将修改后的setv[8]数组的8个元素保存到外部数据储存器中,以便使仪表重新加电时载入修改后的参数。但是小弟不解的是在仪表中没有类似于eeprom的器件,而且AT89C52本身也没有eeprom,仪表板子上的外围器件只有8279,x25045等器件。那如何能保证参数修改后掉电能保存呢? |