我把参数设置完毕后保存到eeprom中了其中有一个参数总是有问题。我先检查是不是写进去了,检查后是写进去了(写过之后我立即读出来)。eeprom读函数
void ReadEeprom(void)
{
uchar i;
decNum = IapReadByte(0x8000); //读出小数位信息
/* if(2 == decNum)//通过测试发现在写入的情况下这里读到小数信息
{
while(1)
{
LoadDat(0x60,0x82);
DispOn();
}
}*/
divNum = IapReadByte(0x8200); //读出显示分度值
traNum = IapReadByte(0x8400); //读出零点跟踪值
delNum = IapReadByte(0x8600); //读出清零开关值
for( i = 0;i < 5; i++) //读出限重值
{
capInit[i] = IapReadByte(0x8800 + i);
}
for(i = 0; i < 6; i++) //读出各个通道开启或关闭的信息.
{
OnOff[i] = IapReadByte(0x8a00 + i);
}
for(i = 0; i < 5; i++) //读出通道1的系数
{
factorOne[i] = IapReadByte(0x8c00 + i);
}
for(i = 0; i < 5; i++) //读出通道2的系数
{
factorTwo[i] = IapReadByte(0x8e00 + i);
}
for(i = 0; i < 5; i++) //读出通道3的系数
{
factorThi[i] = IapReadByte(0x9000 + i);
}
for(i = 0; i < 5; i++) //读出通道4的系数
{
factorFou[i] = IapReadByte(0x9200 + i);
}
}
在这个函数中我在读一遍任然能读出来。但是我在主函数中这样写
void main()
{
Init();
EA = 1;
ReadEeprom();
if(2 == decNum)//通过测试发现在写入的情况下这里任然没有读到小数信息
{
while(1)
{
LoadDat(0x60,0x82);
DispOn();
}
}
while(1)
{
XXXX....
}
}
就是上面的decNum参数,为什么在主函数中经过ReadEeprom(void)
之后decNum就不对了?他本身是个全局变量,其他的参数我也是这么做的,都能检测到,位什么唯独他不能? |