POOR MAN'S RTC

I would change it slightly:

#define PR_1s 1000ul //duration of 1 second, in ms
#define PR_1m (60 * PR_1s) //duration of 1 minute
#define PR_1h (60 * PR_1m) //duration of 1 hour
#define PR_ERROR 0 //error term

#define PR PR_1m //duration set to 1 minute

unsigned char rtc_tick(void) {
  static unsigned long time = millis(); //reset current time
  if (millis() - time >= PR) {//desired time has elapsed
    time += PR + PR_ERROR; //update time, with error correction
    return 1; //return a tick
  } else return 0;
}

Whenever the duration defined by PR has passed, rtc_tick() returns 1, making time counting quite easy.