[HELP] LED arduino 2650 clock using RTC

IanJM:
This is how I've had the set-time configured from the beginning, using code found at

Arduino Interfacing DS1307 Real Time Clock

It actually does work, but the problem is I need to start the serial monitor every time. I think something is jamming up my code but I can't figure out what it is

It just seems weird you would install and use the DS1307RTC library for reading the time but then write your own code to set it instead of using the libraries own time setting code.

You have not commented on why your using hexadecimal for your hours and minutes though I suspect it's because it's easier to convert to BCD

Maybe when your setting the new time in the RTC your corrupting it somehow and causing the 1Hz signal to stop so the below while loop never exits. Then when you open/close the serial monitor your resetting the Arduino and enabling the 1Hz signal again.

  if (!(digitalRead(Sw0))) set_time(); // hold the switch to set time
  while (digitalRead(ONE_HZ_SW))
  {
  }// wait for low

Try commenting out the while loop and/or don't write to the control register when setting the time and see if this works.