给个例子看看,不知可行吗?
/*---------------------------------------------------------*- * 函数名称: SystemTick() * 函数功能: 系统时标.任何任务执行时间都不能大于系统时标. * 说 明: T0的低位计数器为自动加载. (系统时标为15mS) * 当前版本: 1.0 * 取代版本: * 作 者: WSL * 原作者 : * 完成日期: 2007-07-31 * 完成日期: -*---------------------------------------------------------*/ void SystemTick(void) interrupt 1 using 1 { TH0 = PRELOAD_mS_H; KeyPad(); // LCD背光控制,点亮15S if (++BLK_timer >= 40*15) { BLK_timer = 40*15; BLK_CNT = 0; // 关背光 } LcdDispEn++;
if ( TimerEn ) { NewTime.millisecond++; if (NewTime.millisecond >= 40) { NewTime.millisecond = 0; // 1s NewTime.second++; if (NewTime.second >= 60) { NewTime.second = 0; // 1m NewTime.minuter++;
BLK_CNT = 1; if (NewTime.minuter >= 60) { NewTime.minuter = 0; // 1h NewTime.hour++; if (NewTime.hour > 24) { NewTime.hour = 0; // one day } } } } } }
在程序的其它地方运行 BLK_timer = 0; // 点背光 就可以了.
|
|