Detecting Microsecond Pulse Duration

Why did you switch from digital to analog reads? If your input signal reliably rises to the logic high state of the device you're using, I'd go back to digital read. I may not be understanding the whole purpose of your code, but I'd try something like:

void setup() {
  unsigned long startTime = 0;
  unsigned long stopTime = 0;
}

void loop() {
  while (digitalRead(7)) {  //wait for low on pin 7
  }
  while (!digitalRead(7)) { //wait for high on pin 7
  }
  startTime = micros();     //high detected, set start time

  while (digitalRead(7)) {  //wait for low on pin 7
  }
  stopTime = micros();    //low detected, set stop time

  Serial.print(stopTime - startTime);
  delay(100); //or whatever
}

(Warning: untested and incomplete armchair code fragment. Worth what you paid for it...)
S.