我有一个存储在 EEPROM 中的数组
从 {0,0,0,0,1,1,1...} 开始,地址 '0'-address'53' 最多 54 个元素,我已经交叉检查了该值,一切都很好。
但是当我使用“搜索功能”并且当它从第 0 个地址搜索时,我已将“0”作为参数传递。
无符号字符搜索(char current_time)
{
unsigned int loopcnt = 0;
unsigned int add ;
unsigned char addr = 0; //We will store start address of 1's here
unsigned char lastAddr =current_time;
unsigned int x;
add = 0;
//If lastAddr is already overflowing, reset it
if(lastAddr >= 53)
{
lastAddr = 0;
addr=53;
return(addr);
}
for(loopcnt = lastAddr; loopcnt < 54; loopcnt++)
{
addr = loopcnt;
x=eeread(add);
//This is start location of our scanning
while(x!= 0)
{
x=eeread(add);
loopcnt++;
add++;
//Count the 1's we got!
if(loopcnt==53)
{
addr=53;
break;
}
}
}
return (addr);
}
但它必须返回 '4' 作为值,因为在 '4'th 元素之后非零。
但它总是返回 53。
为什么会这样?
我正在使用 c18 编译器..如果逻辑上有任何错误,请纠正我。
问候