I need to detect if a switch has been pressed for longer than a set time, without using any Timer registers in my embedded code. 

I am using software debouncing in the following manner to detect a normal switch press.

    int buttonPress(void) 	{
    static int downCount= 0; // static = value isn't lost between calls.

    int currentButton = ((IO0PIN & 0x00000200) == 0x00000200); 

      if (currentButton ) { // button is down
		
        if (downCount == 5) { // button has been down for 5 counts
          downCount++;      // increase the count so we don't trigger next time
          return 1;
      } else {              // some count other than 5
        if (downCount < 5)  // increase if it's less than 5
           downCount++;
        }
      } else   {    // button is up
        downCount = 0; 
      	}
      return 0;
    }	

However, I would like to detect whether this button has been pressed for 5 seconds or longer. The problem I am facing is that I cannot seem to be able to count up to 300,000 and if this is not reached, fall back on the original `downCount` of 5 to mark as a normal button press.


(Since the clock speed for my micro-controller is at 60 MHz, then it will take 5 seconds to reach 300,000.)

I have played around with some logic as follows, however in the case shown below,due to the introduction of the `while` statement, I am counting up to 300,000 irrespectively of how long the button has been pressed.

    if (currentButton ) { 	// button is down
	
      if (downCount == 5) { // button has been down for 5 counts
          downCount++;      // increase the count so we don't trigger next time
			    while (downCount > 5) {	
				    debounce++;
					  if (debounce == 300000) {
						flag_5SEC = 1;
					 }
					else if (debounce < 300000) {
						debounce++;
					}
				}
          return 1;
        } else {              // some count other than 5
          if (downCount < 5)  // increase if it's less than 5
             downCount++;
        }
      }

Any tips or suggestions on how to go about this task?

**Note**: I want to detect for a longer switch press explicitly in the debouncing code above, since doing anything else may have adverse side-affects on the rest of the code, which someone else had previously wrote.