标题: 网友写的占用资源极小的调度器 [打印本页]

作者: liuqq    时间: 2015-5-21 22:51
标题: 网友写的占用资源极小的调度器
/****小小调度器开始**********************************************/
#define MAXTASKS 3
unsigned char currid;
unsigned char timers[MAXTASKS];
#define _SS   static unsigned char lc=0; switch(lc){   case 0:
#define _EE   ;}; lc=0;
#define WaitX(tickets) {lc=__LINE__; timers[currid]=tickets;} return ; case __LINE__:
#define RunTask(TaskName,TaskID) {currid=TaskID; if (timers[TaskID]==0){timers[TaskID]=255; TaskName();}}
#define CallSub(SubTaskName)   WaitX(0); SubTaskName(); if (timers[currid]!=255) return;
/*****小小调度器结束*******************************************************/

sbit LED1 = P2^1;
sbit LED2 = P2^2;

void InitT0()
{
        TMOD = 0x21;
        IE |= 0x82;  // 12t
        TL0=0Xff;
        TH0=0XDB;//22M---b7;
        TR0 = 1;
}

void INTT0(void) interrupt 1 using 1
{
    unsigned char i;
        TL0=0Xff;    //10ms 重装
        TH0=0XDB;//b7;

    for (i=0;i<MAXTASKS;i++){
     if ((timers[i]!=0)&&(timers[i]!=255)) {
           timers[i]--;
         }
    }        
}


void  task1(){
_SS
  while(1){
   WaitX(50);
   LED1=!LED1;   
  }
_EE
}

void  task2(){
_SS
  while(1){
   WaitX(100);
   LED2=!LED2;   
  }
_EE
}


void main()
{
        InitT0();
        while(1){
           RunTask(task1,1);
           RunTask(task2,2);
    }
}









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1