我现在的单片机c程序中,有多个周期定时的任务。现在是这样做的,用timer0做了一个中断,1ms进一次中断,对g_t_timer++,g_t_timer是unsigned int型。 在主程序中,每个周期任务的开始时间timer=g_t_timer; 如果,g_t_timer-timer>任务周期,那么就开始执行周期性的任务。这个在多数情况下没问题,但是如果周期特别长时,如30s的时候,定时就不准了。怀疑是减的时候出了问题,比如溢出等等。请问存在这种可能吗?现在可以确定的是,1ms进中断是没问题的。我用的单片机是PIC18F系列的,编译器mcc18。另外,多个定时器之前切换会存在问题,或者那位大侠有更好的方法解决这类定时问题?多谢了!! |