⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inittask.c

📁 MCS-51的一个小型操作系统,在KeilC中大模式下编译工作
💻 C
字号:

/********************************************
        嵌入式系统 小型操作系统
		 作者:汪普宏
	    制作日期:2006.9
*********************************************/ 

#include"OS.H" 	
#include"Init_Task.h"
#include"OS_Mail.h"
#include "OS_Memory.h"


/*操作系统全局变量*/
uchar data Prio;
uchar data *spend;
uchar data ISR_num ;
uchar data OSRdyGrp;
uchar data OSRdyTab[TASK_8N];
task_link  xdata  OSPCB[N+1];

/****************************************
模块功能:初始化,开始任务切换
模块接口:堆栈指针,任务优先级,任务函数地址,任务堆栈长度
调用者: 主函数
返回值:  无
*****************************************/
static uchar data *p;
void Task_Init(uchar i,void(*addr)(void),uchar xdata *Task_sta)
{  
   Task_sta[0]=(uint)(*addr)&0xff;
   Task_sta[1]=(uint)(*addr)>>8;
   OSPCB[i].sp_start=&Task_sta[0];
   OSPCB[i].sp_size=INIT_SP;
}
void OSStart(void)					   //系统初始化,开始任务调度
{  
   uchar i;
   p=SP-1;
   for(i=0;i<N+1;i++)				   //任务就绪表初始化
   {
		OSPCB[i].flg=WAIT_MSG;
		OSPCB[i].msg=0;
   }
   for(i=0;i<TASK_8N;i++)
   {
		OSRdyTab[i]=0;	               //任务均处于等待状态
   }
   OSRdyGrp=0; 
  // OSInit_Malloc();					   //动态内存初始化
  // OSIint_Queue();                     //消息列队初始化	
   Task1_Init_Hook();                 	  //任务中用户数据的初始化函数
   Task2_Init_Hook();
   Task3_Init_Hook();
   Task4_Init_Hook();
   Task5_Init_Hook();
   Task_Free_Init_Hook();
   OS_RdyTask(FREE_TASK);	           //必须将空闲任务置于就绪表中
   Prio=FREE_TASK;			           //先将当前任务指针指向空闲任务
   *p++=(uint)(free_task)&0xff;
   *p=(uint)(free_task)>>8;	
   spend=SP-1;
   EA=ET1=TR1=1;                       //任务切换的系统时钟开始工作
   OSTask_TimeDal(0);		           //开始任务调度
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -