У меня есть массив, хранящийся в EEPROM
Начиная с {0,0,0,0,1,1,1...} до 54 элементов с адреса '0'-адрес '53', и я перепроверил значение, и все в порядке.
но когда я использую «функцию поиска» и передал «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-го элемента» не ноль.
Но он всегда возвращает 53.
Почему это так?
Я использую компилятор c18. Если есть какая-то ошибка в логике, поправьте меня.
С уважением