The micros( ) in wiring.c function using the the variable timer0_millis, which is defined volatile unsigned long timer0_millis , the maximum value is oxFFFFFFFF . It adds MILLIS_INC on each Timer0 interrupt(at 12MHZ clock, the MILLIS_INC = 1). After (0xFFFFFFFF/MILLIS_INC) Timer0 interupts, timer0_millis will become 0 on next interrupt, so the delay( ) function will occur the “Year 2000 problem” , because it uses if (((uint16_t)micros() - start) >= 1000) ,which the micros() is equal timer0_millis.
At about 68 days, it maybe accur “Year 2000 problem”.
by Rom Huang