//https://cloud.tencent.com/developer/article/1692860
//#include "reg52.h"
#define data //c51栈要放在dataq区~data/idada/pdata/xdata
#define MAX_TASKS 10
#define OS_TASK_NUM 8
#define OS_TASK_STACK_SIZE (2+13+2*3)//存放断点2B,中断函数可能压栈13B,子程序每嵌套一层2B
typedef struct
{
unsigned char delay;//当前延时剩余时间
unsigned char stack[OS_TASK_STACK_SIZE]; //私有堆栈
unsigned char sp;//私有堆栈指针
}OS_TASK;//任务工作块。
data OS_TASK os_task[OS_TASK_NUM];//必须定义为data(因堆栈只能在data区)
OS_TASK task_sp[MAX_TASKS];
// void os_switch()
//{
// task_sp[task_id] = SP;
// if(++task_id == MAX_TASKS)
// task_id = 0;
// SP = task_sp[task_id];
//}
/*
* 任务调度,转向当前延时时间到且优先级最高(id较小)