%调用任务
void run( void(*ptask)() )
{
(*ptask)();
}
%任务函数指针
void (*task[])() = {task0,task1,task2,task3};
%任务具体实现
void task0(void) { }
...
void task3(void) { }
%主函数
main()
{
for(unsigned char i=0; i<MAX_TASK; i++)
if(task_delay[i]==0) { run(task[i]); } %按顺序优先级调用任务
}
%中断服务程序
void OS_Timer0(void) interrupt 1
{
%change the value of task_delay[i]; %判断任务是否就绪
}