Driving Comp Air Engine with Solenoids and Arduino

Exactly. An interrupt is like a telephone ringing. You mark your spot in the book you are reading, answer the phone, tell the caller to get lost, and resume reading, right where you left off.

The output from micros() rolls over every 71 minutes. If, as you point out, it takes less than that to make one revolution, you can forget about issues with micros rolling over, as long as you only subtract earlier values from "now".

No, setting prevTDCTime to 0 after enabling interrupts again is not needed and not correct.

That telephone ring is a great example. Thank you.
And yes it will never ever take 71 minutes to make one revolution, and I am always subtracting the new TDC from the previous TDC

Here is how my code looks now.

//-----------------------------------------------
 volatile unsigned int eventcount; 
 unsigned int revperiod; // Rotation Time
 unsigned long prevTDCtime; // Previous time Hall Sensor Picked up
 unsigned long TDCtime; // 
 const int So17Pin = 3; // Solenoids 1 and 7 assigned to Pin 3
 const int So35Pin = 4; // Solenoids 3 and 5 assigned to Pin 4
 const int So28Pin = 5; // Solenoids 2 and 8 assigned to Pin 5
 const int So46Pin = 6; // Solenoids 4 and 6 assigned to Pin 6
 const int buttonPin = 13; // Button For Switching "Valve Open Time" Percent
 const int button2Pin = 14; // Button For Start Mode Intake 1+7
 const int button3Pin = 15; // Button For Start Mode Intake 3+5
 int buttonPushCounter = 0;   // counter for the number of button presses--- used with button for "Valve Open Time" Percent
 int buttonState = 0;         // current state of the button
 int button2State = 0;        // current state of the button 2
 int button3State = 0;        // current state of  the button 3
 int lastButtonState = 0;     // previous state of the button
 int lastButton2State = 0;     // previous state of the button 2
 int lastButton3State = 0;     // previous state of the button 3

 void setup()
 {
   Serial.begin(9600); // Communicate to Serial Port
   pinMode (So17Pin, OUTPUT); // Solenoid 1+7 as Output
   pinMode (So35Pin, OUTPUT); // Solenoid 3+5 as Output
   pinMode (So28Pin, OUTPUT); // Solenoid 2+8 as Output
   pinMode (So46Pin, OUTPUT); // Solenoid 4+6 as Output
   pinMode(buttonPin, INPUT); // Button for "Valve Open Time" as Input
   pinMode(button2Pin, INPUT); // Button For Start Mode 1+7 Intake
   pinMode(button3Pin, INPUT); // Button For Start Mode 3+5 Intake
   attachInterrupt(0, event_count, RISING); // Interrupt 0 is Pin 2 Hall Effect Sensor


 }
 void event_count()
{
  detachInterrupt(0);  // disable interrupts while we handle the interrupt 
  prevTDCtime = TDCtime;  // save last TDC
  TDCtime = micros();  // save THIS TDC
  revPeriod = TDCtime - prevTDCtime;  // calculate revolution period
  attachInterrupt(0, event_count, RISING);  // re-enable the interrupt now that we are done
}
 
  void loop()
 {
   //-------------------------------------------------------------------------------------- START MODE

    if (revperiod == 0)  // If Device is not spinning then Enable the Button's 2 and 3. If it is spinning Disable the Button's 2 and 3
    { Serial.println("Device Immobile");
    if (button2State != lastButton2State) // Start Mode Button2 Pressed--- Intake 1 and 7 Exhaust 4 and 6
    {
        if (button2State == HIGH) {
     digitalWrite(So17Pin, HIGH); // Fire Intake 1 and 7
     digitalWrite(So46Pin, HIGH); // Fire Exhaust 4 and  6
     Serial.println("Start In 1+7"); // Display Via Serial "Start In 1+7"
       }
     }

    {
    if (button3State != lastButton3State) // Start Mode Button3 Pressed--- Intake 3 and 5 Exhaust 2 and 8
    {

    if (button3State == HIGH) {
     digitalWrite(So35Pin, HIGH); // Fire Intake 3 and 5
     digitalWrite(So28Pin, HIGH); // Fire Exhaust 2 and 8
     Serial.println("Start In 3+5"); // Display Via Serial "Start In 1+7"
       }
     }
    }
   //------------------------------------------------------------------------------------ RUN MODE
     {
   }
  // Open for 100% Stroke Intake (1 and 7) Exhaust (4 and 6)

  if () // If the piston is inbetween 1 to 179 degrees of revolution then...
  { 
     digitalWrite(So17Pin, HIGH); // Fire Solenoid 1 and 7 (Intake)
     digitalWrite(So46Pin, HIGH); // Fire Solenoid 4 and 6 (Exhaust)
     Serial.println("Intake (1,7) Exhaust (4,6) Fired 100%"); // Print Status and Percent of Valve Open
     }
  }
else {
  digitalWrite(So17Pin, LOW); // Don't Fire Solenoid 1 and 7 (Intake)
  digitalWrite(So46Pin, LOW); // Don't Fire Solenoid 4 and 6 (Exhaust)
  }
  // Open for 100% Stroke Intake (3 and 5) Exhaust (2 and 8)
  if () // If the piston is inbetween 181 to 359 degrees of revolution then...
  {
     digitalWrite(So35Pin, HIGH); // Fire Solenoid 3 and 5 (Intake)
     digitalWrite(So28Pin, HIGH); // Fire Solenoid 2 and 8 (Exhaust)
     Serial.println("Intake (3,5) Exhaust (2,8) Fired 100%"); // Print Status and Percent of Valve Open
  }
   }
else {
  digitalWrite(So35Pin, LOW); // Don't  Fire Solenoid 3 and 5 (Intake)
   digitalWrite(So28Pin, LOW); // Don't Fire Solenoid 2 and 8 (Exhaust)
}

}
}

//-----------------------------------------------

Since it would appear that all the timing issues cleared, I still have to get back to my misunderstanding of how to take the time and turn it into a number between 0001 and 0999.