SCH_Add_Task(LED_Flash_Update_B,0,2000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_C,0,3000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_D,0,4000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_E,0,5000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_F,0,6000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_G,0,7000);//添加一个任务
SCH_Add_Task(LED_Flash_Update_H,0,8000);//添加一个任务
SCH_Start();//开全局中断
while(1)
{
SCH_Dispatch_Tasks();
}
}
/*------------------------------------------------------------
这是调度器的中断服务程序,初始化函数中的定时器设置决定了它
的调度频率,这个版本的调度器由定时器2触发中断,定时器自动重装。
-------------------------------------------------------------*/
void SCH_Update(void) interrupt INTERRPT_Timer_2_Overflow
{
//刷新任务队列
uchar Index;
TF2 = 0;//必须手工清除
//注意:计算单位为"时标"(不是毫秒)
for(Index = 0;Index < SCH_MAX_TASKS;Index++)
{ //检测这里是否有任务
if(SCH_tasks_G[Index].pTask)
{
if(SCH_tasks_G[Index].Delay == 0)
{
//任务需要运行,间隔的时间已经到了
if(SCH_tasks_G[Index].Co_op)
{
//如果是合作式任务,RunMe标志加1
SCH_tasks_G[Index].RunMe += 1;//要执行任务的标志加1
}
else//如果它是抢占式任务,立即运行它
{