DC Motor Speed Measurement using Rotary Encoder
Just a couple of remarks:


start should be volatile, but you can remove it and simply check
that time1 != 0.
there is no point in calling millis() twice inside the interrupt
service routine:


void speed(void) {
  unsigned long now = millis();
  time1 = now - time_11;
  time_11 = now;
}