uint16 TaskCount[TASK_NUM] ;//这里为三个任务定义三个变量来存放定时值uint8 TaskMark[TASK_NUM]; //同样对应三个标志位,为0表示时间没到,为1表示定时时间到。
TaskCount[0] = 20; // 延时20msTaskMark[0] = 0x00; // 启动此任务的定时器
// 任务结构typedef struct _TASK_COMPONENTS{uint8 Run; // 程序运行标记:0-不运行,1运行uint8 Timer; // 计时器uint8 ItvTime; // 任务运行间隔时间void (*TaskHook)(void); // 要运行的任务函数} TASK_COMPONENTS; // 任务定义
/********************************************************* FunctionName : TaskProcess()* Description : 任务处理* EntryParameter : None* ReturnValue : None*********************************************************/void TaskProcess(void){uint8 i;for (i=0; i{if (TaskComps[i].Run) // 时间不为0{TaskComps[i].TaskHook(); // 运行任务TaskComps[i].Run = 0; // 标志清0}}}
/********************************************************* Variable definition*********************************************************/static TASK_COMPONENTS TaskComps[] ={{0, 60, 60, TaskDisplayClock}, // 显示时钟{0, 20, 20, TaskKeySan}, // 按键扫描{0, 30, 30, TaskDispStatus}, // 显示工作状态// 这里添加你的任务。。。。};
// 任务清单typedef enum _TASK_LIST{TAST_DISP_CLOCK, // 显示时钟TAST_KEY_SAN, // 按键扫描TASK_DISP_WS, // 工作状态显示// 这里添加你的任务。。。。TASKS_MAX // 总的可供分配的定时任务数目} TASK_LIST;
/******************************************************** FunctionName : TaskDisplayClock()* Description : 显示任务* EntryParameter : None* ReturnValue : None********************************************************/void TaskDisplayClock(void){}/******************************************************** FunctionName : TaskKeySan()* Description : 扫描任务* EntryParameter : None* ReturnValue : None********************************************************/void TaskKeySan(void){}/******************************************************** FunctionName : TaskDispStatus()* Description : 工作状态显示* EntryParameter : None* ReturnValue : None********************************************************/void TaskDispStatus(void){}// 这里添加其他任务。。。。。。。。。
/******************************************************** FunctionName : main()* Description : 主函数* EntryParameter : None* ReturnValue : None********************************************************/int main(void){InitSys(); // 初始化while (1){TaskProcess(); // 任务处理函数}}
