Algorithm for finding next data in eeprom
You need to find consecutive 1s and stop once you find it. In your current code, You are reading entire EEPROM even if you find required condition.

Basic Algorithm would be:

1.Start from last address.

2.Read EEPROM. Increment a counter if you find 1 and reset that if you find 0.

3.During this read, if your counter is ever goes more than 2, store that location as "last address" and stop search.

Unoptimized code would be:

unsigned char Eepromscan(void)
{
    unsigned char loopcnt = 0;
    unsigned char onecount = 0;
    unsigned char addr = 0; //We will store start address of 1's here
    static unsigned char lastAddr = 0;

    //If lastAddr is already overflowing, reset it
    if(lastAddr &gt;= 0xFF)
      {
         lastAddr = 0;
      }
    for(loopcnt = lastAddr; loopcnt &lt; 0xFF; loopcnt++)
      {
           addr = loopcnt; //This is start location of our scanning
          while(eepromread(loopcnt++) != 0)
            {
                onecount++;  //Count the 1's we got!
            }

            if(onecount &gt; 1)
             {
                 //There are multiple 1s... WooHoo!
                 // And These 1s start at "addr" and end at current location "loopcnt"

                 lastAddr = loopcnt; //Next time,We will start scanning from here.
                 break;
             }
      }

     return addr;
}


This is rough code. There are lot of places to improvement, plus you should handle conditions like what if there wasn't any consecutive 1s in entire EEPROM. or What if you want to start scanning from start when you reach 0xFF without finding any consecutive 1s.

P.S. This code has bugs and we expect you to find those conditions and handle.