亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_core.c

?? 模仿ucos ii和RTX Tiny寫的一個小操作系統
?? C
字號:
#include <AT89X52.H>

#include "os_core.h"
#include "main.h"
#include "task_switch.h"
#include "sem.h"
#include "q.h"
#include "uart.h"

//程序控制塊
 TCB    OS_TCB[TASK_NUM];
//當前運行任務的優先級
 uint8  OS_Current_ID;
//進入臨界段計數器
 uint8  OS_En_Cr_Count;
//任務就緒表
 uint8  OS_TaskRdy_List;
//中斷嵌套計數器
 uint8  Int_count;

 uint8  Task_Int_List;
//置位表
uint8 code  OSMapTbl[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};


////////////////////////////系統初始化//////////////////////////////////////////////////////
void OS_Init(void)
{  
   uint8 i ; 

   EA=0;                    //關中斷

   ET2=1;                   //接受定時器2中斷
   T2CON=0x00;         
   T2MOD=0x00;                                  
   RCAP2H=0xB1;
   RCAP2L=0xE0;             //定時時間為10ms  
  
   Int_count=0;			    //中斷嵌套為0
   OS_TaskRdy_List=0;       //任務就緒表為0
   OS_Task_Q_List=0;
   OS_En_Cr_Count=0;        //進入臨界段為0次

   Task_Int_List=0x00;

   OS_TCB[0].Task_SP=SP+2;	//初始化各任務的堆棧起始地址

   for(i=1;i<TASK_NUM;i++)
    OS_TCB[i].Task_SP=OS_TCB[i-1].Task_SP+(255-OS_TCB[0].Task_SP)/TASK_NUM;

}

///////////////////////////創建一個任務////////////////////////////////////////////////////////
void OS_Task_Create(uint8 Task_Prio,uint8 Task_ID, uint16 Task_PC,uint8  Stack_Bottom) reentrant
{
  OS_ENTER_CRITICAL();
  if(OS_TCB[Task_ID].Status== No_Exist)
 {
   OS_TCB[Task_ID].Status=Exist;              /*任務存在*/
   OS_EXIT_CRITICAL();
   ((uint8 idata *)Stack_Bottom)[0]=Task_PC;        /*將任務入口地址保存在堆棧,壓入低8位*/
   ((uint8 idata *)Stack_Bottom)[1]=Task_PC>>8;     /*壓入高8位*/

   OS_TCB[Task_ID].Task_SP=Stack_Bottom+1;          /*將該任務的堆棧棧頂地址保存*/
                                  
   OS_TCB[Task_ID].Prio=Task_Prio;            /*任務優先級*/

   OS_TCB[Task_ID].Delay=0;                   /*任務初始不延時*/

   OS_TaskRdy_List|=OSMapTbl[Task_ID];		  /*任務就緒*/

   return ;
 }
  OS_EXIT_CRITICAL();
}

////////////////////////////系統啟動///////////////////////////////////////////////////////////
void OS_Start(void)
{

    OS_Current_ID=TASK_NUM-1;

    SP=OS_TCB[OS_Current_ID].Task_SP;   /*修改堆棧指針;使其指向當前任務的堆棧段*/

     TR2=1;             /*啟動定時器2*/
     EA=1;              /*開中斷*/
}

////////////////////////////系統時鐘處理函數//////////////////////////////////////////////////
 void  OS_TimeTick(void)
{
    uint8 i;		
	for(i=0;i<TASK_NUM;i++)        /*處理所有延時*/
  {
       if(OS_TCB[i].Delay)         /*如果任務需要延時*/
      {
          OS_TCB[i].Delay--;       /*延時時間減1*/
        if(OS_TCB[i].Delay==0)     /*如果延時時間到*/
        {
           OSSendSignal(i);	   /*中斷中發信號,任務就緒*/
        }  
      }	
  }
}
////////////////////////////////查找下一任務//////////////////////////////////////////////////
void  OS_Find_Next_Task(void)
{

   uint8 tempPrio,i;  
    
    tempPrio=OS_TCB[OS_Current_ID].Prio; 	

    for(i=0;i<TASK_NUM-1;i++)
    { 
	  if((OS_TaskRdy_List&OSMapTbl[i])&&(OS_TCB[i].Prio<tempPrio)) 
     {
	  goto bb;     
     }
	}

    for(i=OS_Current_ID;i<TASK_NUM-1;i++)
    { 
	  if((OS_TaskRdy_List&OSMapTbl[i])&&(OS_TCB[i].Prio==tempPrio)&&i!=OS_Current_ID) 
     {
	  goto bb;     
     }
	}

	if(i==TASK_NUM-1)
   {
	 for(i=0;i<TASK_NUM-1;i++)
	{
	  if(OS_TaskRdy_List&OSMapTbl[i]) 
     {
	  break;       
     }
	}
   }

bb:    OS_Current_ID=i;

}

///////////////////////////定時器2中斷服務函數/////////////////////////////////////////////////
#pragma disable        /* 除非最高優先級中斷,否則,必須加上這一句 */
void Timer2ISR(void) interrupt 5 
{
       TF2=0;        /*清中斷標志TF2*/
       Enter_Int();
#if EN_TIMER_SHARING > 0
       OS_TimeTick();              /* 調用系統時鐘處理函數 */
#else
       OSSendSignal(TIME_ISR_TASK_ID);   /* 喚醒ID為TIME_ISR_TASK_ID的任務*/
#endif
       Exit_Int();
}


///////////////////////////任務中給指定任務發送信號///////////////////////////////////////////
 void OSSendSignal(uint8 TaskId) 
{
	if (TaskId < TASK_NUM)
   {
	  OS_ENTER_CRITICAL();
      OS_TaskRdy_List|=OSMapTbl[TaskId ];/*任務就緒*/
      OS_EXIT_CRITICAL();
	  if (Int_count==0)   /*不在中斷中*/
     {  
        OSSched(); /*開始任務切換*/
	  }
   }
}
//////////////////////////清除指定任務信號////////////////////////////////////////////////////
void OSClearSignal(uint8 TaskId) 
{
     if(TaskId <TASK_NUM)
    {
        OS_ENTER_CRITICAL();
        OS_TaskRdy_List &= ~OSMapTbl[TaskId];  /*任務不就緒*/
        OS_EXIT_CRITICAL();
	   if(TaskId==OS_Current_ID && Int_count==0) /*掛起自身并不在中斷中*/
      {  
	     OSSched();  /*開始任務切換*/
	   }
	}	  
}
//////////////////////////掛起指定任務////////////////////////////////////////////////////////
void OSTaskSuspend(uint8 TaskId)
{
    if (TaskId <TASK_NUM)
   {
       OS_TCB[TaskId].Delay = 0;  /*沒有超時處理*/
       OSClearSignal(TaskId);	  /*清除指定任務信號*/
   }
}
/////////////////////////系統等待函數//////////////////////////////////////////////////////////									    
uint8 OSWait(uint8 typ, uint8 ticks)   
{
         OS_TCB[OS_Current_ID].Delay = ticks;  /*設置超時時間*/ 
    switch(typ)
    {
    case K_SIG:                                /*等待信號,即掛起自身*/
		OSTaskSuspend(OS_Current_ID);
        return SIG_EVENT;
    case K_TMO: 
	    SP++;	 
	    *((uint8 data * data *)SP) = ticks;    
        OSClearSignal(OS_Current_ID);		   /*等待超時,即延時一段時間*/
		SP--;	 
	    ticks = (uint8 data *)(*((uint8 data *)SP));
	    if(ticks&&OS_TCB[OS_Current_ID].Delay==0)   /*超時*/
	    {  
         return  TMO_EVENT;
	    }
		 return  SIG_EVENT;
    default:
        OS_TCB[OS_Current_ID].Delay = 0;
        return NOT_OK;
    }
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2021国产精品久久精品| 久久精品一区蜜桃臀影院| 麻豆国产一区二区| 国产精品福利影院| 日韩精品自拍偷拍| 欧美日韩卡一卡二| 91丨九色丨国产丨porny| 成人精品视频一区二区三区| 丝袜美腿亚洲色图| 日韩美女视频一区二区| 久久久777精品电影网影网 | 99久久精品国产精品久久| 美国十次综合导航| 午夜激情综合网| 亚洲欧美日韩精品久久久久| 国产三级欧美三级| 日韩你懂的在线播放| 欧美欧美欧美欧美| 欧美午夜精品久久久| 99这里只有精品| 国产成人在线免费| 国产综合久久久久影院| 日本伊人午夜精品| 日韩精品一级中文字幕精品视频免费观看 | 一级女性全黄久久生活片免费| 精品国偷自产国产一区| 欧美一区二区福利视频| 欧美精品aⅴ在线视频| 欧美日韩视频在线第一区| 在线观看日韩国产| 欧美伊人精品成人久久综合97| 色综合av在线| 日本国产一区二区| 欧美午夜一区二区三区 | 久久影院电视剧免费观看| 欧美精品乱码久久久久久按摩| 一本色道**综合亚洲精品蜜桃冫| gogogo免费视频观看亚洲一| 成人毛片视频在线观看| 成人18视频在线播放| a级精品国产片在线观看| 91在线码无精品| 色噜噜狠狠色综合中国| 色婷婷久久99综合精品jk白丝 | 精品嫩草影院久久| 久久综合色之久久综合| 国产无一区二区| 中文无字幕一区二区三区| 国产精品蜜臀av| 亚洲激情在线播放| 午夜精品久久久久久久久久久 | 91精品久久久久久蜜臀| 日韩亚洲欧美一区二区三区| 欧美videossexotv100| 久久久蜜桃精品| 亚洲欧洲日产国码二区| 一区二区三区免费观看| 三级欧美在线一区| 精品一区二区三区在线播放| 国产精品66部| 色综合天天综合给合国产| 欧美亚洲一区二区在线| 欧美电影免费观看高清完整版在线 | 丝袜诱惑制服诱惑色一区在线观看| 日本欧美一区二区| 久久99精品久久久| 不卡的av中国片| 欧美日韩精品一区二区在线播放| 欧美电影精品一区二区| 国产精品毛片无遮挡高清| 一级中文字幕一区二区| 久久99最新地址| 99久久久国产精品免费蜜臀| 欧美日韩午夜在线| 久久久久久久久久久电影| 亚洲精品视频在线| 麻豆成人久久精品二区三区红| 国产成人综合在线| 欧美日韩视频不卡| 日本一区二区成人| 婷婷久久综合九色综合绿巨人| 国产精品1区二区.| 欧美日韩欧美一区二区| 国产视频在线观看一区二区三区 | 欧美性色黄大片| 国产欧美日韩在线| 日韩高清一区二区| 99精品视频一区二区三区| 日韩免费视频一区二区| 亚洲精品成人在线| 国产精品一区二区在线播放| 欧美日韩国产片| 国产精品福利一区| 韩国理伦片一区二区三区在线播放| 在线一区二区视频| 欧美高清一级片在线观看| 日本成人中文字幕在线视频| 色综合久久久久久久| 国产日产欧美一区二区三区| 中文字幕中文字幕一区二区| 亚洲综合丝袜美腿| 蜜桃av一区二区| 99re视频精品| 久久女同互慰一区二区三区| 亚洲成人1区2区| 成人精品视频.| 2020国产精品自拍| 琪琪一区二区三区| 欧美性生活大片视频| 综合激情成人伊人| 国产一区二区三区在线观看免费| 欧美日韩不卡视频| 一区二区三区四区亚洲| 成人高清av在线| 久久精品视频免费| 精品一区二区三区欧美| 欧美男女性生活在线直播观看| 亚洲免费视频中文字幕| 菠萝蜜视频在线观看一区| 久久一区二区视频| 激情成人综合网| 337p亚洲精品色噜噜| 亚洲一区二区三区美女| 久久久噜噜噜久久人人看 | www.性欧美| 久久精品欧美一区二区三区不卡| 秋霞午夜鲁丝一区二区老狼| 欧美日韩一区二区欧美激情 | 国产高清无密码一区二区三区| 日韩欧美综合在线| 免费视频最近日韩| 91麻豆精品国产自产在线观看一区| 亚洲综合在线视频| 欧洲精品在线观看| 一区二区三区不卡视频在线观看| 95精品视频在线| 亚洲裸体在线观看| 91首页免费视频| 一区二区三区欧美亚洲| 欧美午夜在线观看| 午夜久久福利影院| 日韩视频免费直播| 精品一区二区在线视频| 久久久蜜桃精品| 成人永久aaa| 国产精品视频你懂的| 91丨porny丨最新| 亚洲综合在线观看视频| 欧美日韩在线亚洲一区蜜芽| 日韩不卡一二三区| 精品国产91乱码一区二区三区| 国产一区 二区 三区一级| 中文字幕精品在线不卡| 99久久精品国产毛片| 亚洲午夜免费电影| 欧美裸体bbwbbwbbw| 久久99精品久久久久久国产越南| 久久蜜桃av一区二区天堂| 成人精品国产一区二区4080| 一区二区三区四区在线免费观看| 欧美日韩精品电影| 韩国av一区二区三区四区| 国产精品天美传媒沈樵| 欧美特级限制片免费在线观看| 日韩福利电影在线观看| 久久久久久久久蜜桃| 99国产欧美另类久久久精品| 亚洲电影你懂得| 26uuu国产电影一区二区| av在线不卡电影| 视频一区视频二区中文字幕| 久久亚洲一区二区三区明星换脸| 日韩一区二区三区电影在线观看 | 亚洲精品国产第一综合99久久 | 欧美精品丝袜中出| 狠狠色伊人亚洲综合成人| 1024精品合集| 51精品国自产在线| 成人性生交大片免费| 亚洲成av人片一区二区三区| 日韩免费高清av| 色综合天天综合网天天狠天天| 男人的j进女人的j一区| 亚洲四区在线观看| 精品国产一区二区三区久久久蜜月 | 色妞www精品视频| 麻豆91在线看| 亚洲美女在线国产| 精品日韩99亚洲| 欧美在线观看一区| 国产九九视频一区二区三区| 亚洲国产精品尤物yw在线观看| 国产午夜精品一区二区三区嫩草| 欧美在线综合视频| 国产99久久久久久免费看农村| 亚洲国产日韩一区二区| 国产精品拍天天在线| 日韩欧美国产一区二区在线播放| 91激情五月电影| 国产成人精品免费视频网站|