At least, then, you have to change that 'if' statement so that it only influences the count, not the display update.
Something like:
void loop()
{
if (digitalRead(machine) == HIGH)
{
// 1. Load number 1
int digit_value_1 = seconds % 10;
int digit_value_2 = (seconds / 10) % 10;
// 2. Load number 2
int digit_value_3 = (minutes) % 10;
int digit_value_4 = (minutes / 10) % 10;
}
//3. Update number to display
pickDigit(0);//Light up 7-segment display d1
pickNumber(digit_value_1);// get the value of thousand
delay(del);//delay 5ms
pickDigit(1);//Light up 7-segment display d2
pickNumber(digit_value_2);// get the value of hundred
delay(del);//delay 5ms
pickDigit(2);//Light up 7-segment display d3
pickNumber(digit_value_3);//get the value of ten
delay(del);//delay 5ms
pickDigit(3);//Light up 7-segment display d4
pickNumber(digit_value_4);//Get the value of single digit
delay(del);//delay 5ms
delay(2);//loop delay update every 20 ms
}
Also, please post your revised sketch in a new post. Your input changed from pin 1 to D9, I'm wondering what else...