哦,有点明白了。比如我目前本来有2个任务。 task1:键盘扫描,完成时间大概需要30ms。 task2:采集处理数据,完成时间大概需要100ms。 那么我把时间片定为35ms,则task1能在一个时间片完成任务。而把task2分成3个任务(task2,task3,task4),time=0是全局变量,taskn_flag为任务执行的标志 在定时器T0中断里中,每35ms中断一次 void time0_isr()interrupt1{ ...... ++time; if(time==1)task1_flag=1; else if(time==2)task2_flag=1; else if(time==3)task3_flag=1; else if(time==4)task4_flag=1; else time=0; ....... } void main(){ if(task1_flag){ .... } if(task1_flag2)..... } 但是如果先前的task2执行时间是500ms呢?这样是不是要分成好多任务呀?而且这样键盘扫描频率也太低了。 但是可以在这些分成的小任务里加上扫描任务如if(time==20)task1_flag=1; 我想这样行不通呀/ |