for(i=0;i<=MAX_TASK_NUMBER;i++) {
p = &g_task_tbl[i];
if( p->task_id == i && p->task_func_p ) {
if( p->sleep_time == 0 )
p->counter = 10;
else {
p->sleep_time++;
}
continue;
}
p->counter = 0;
}
}
return next;
}
//0x80软中断时要调用的任务调度动作。和schedule()区别是:不刷新任务的sleep_time
unsigned int schedule1(void)
{
unsigned int i, next;
int c;
task_tbl_t *p;
while(1){
c = -1;
for( i = 0; i <= MAX_TASK_NUMBER;i++) {
p = &g_task_tbl[i];
if( ( p->task_id == i ) && p->task_func_p ) {
if( p->sleep_time > 0 ) {
continue;
}
if( p->counter > c ) {
c = p->counter;
next = i;
}
}
}