您当前的位置:五五电子网电子知识单片机-工控设备源码-程序混合式调度器C51源代码和相关注释 正文
混合式调度器C51源代码和相关注释

混合式调度器C51源代码和相关注释

点击数:7482 次   录入时间:03-04 11:47:46   整理:http://www.55dianzi.com   源码-程序
 SCH_tasks_G[Index].pTask = pFunction;
 SCH_tasks_G[Index].Delay = DELAY;
 SCH_tasks_G[Index].Period = PERIOD;
 SCH_tasks_G[Index].Co_op = Co_op;
 SCH_tasks_G[Index].RunMe  = 0;
 return Index;//返回任务的位置(以便以后删除)
}

     

    void SCH_Dispatch_Tasks(void)
{
 uchar Index;
 //调度(运行)下一个任务(如果有任务就绪)
 for(Index = 0;Index < SCH_MAX_TASKS;Index++)
 {
  //只调度合作式任务
  if((SCH_tasks_G[Index].RunMe > 0)&&(SCH_tasks_G[Index].Co_op))
  {
   (*SCH_tasks_G[Index].pTask)();//执行任务
   SCH_tasks_G[Index].RunMe -= 1;//清除任务需要执行的标志
  }
  //如果这是个“单次”任务,将它从队列中删除
  if(SCH_tasks_G[Index].Period == 0)
  {
   SCH_tasks_G[Index].pTask = 0;// 比通过调用来删除任务更快SCH_Delete_Task(Index);
  }
 }
 SCH_Report_Status();//报告系统状况
 SCH_Go_To_Sleep();
}

    void SCH_Start(void)
{
 EA = 1;
}

    bit SCH_Delete_Task(const ushort TASK_INDEX)
{
 bit Return_code;
 if(SCH_tasks_G[TASK_INDEX].pTask == 0)
 {
  //这里没有任务。。。设置全局错误变量
  Error_code_G = ERROR_SCH_CANOT_DELETE_TASK;
  Return_code = RETURN_ERROR;//返回错误代码
 }
 else
 {
  Return_code = RETURN_NORMAL;
 }
 //删除任务
 SCH_tasks_G[TASK_INDEX].pTask = 0x0000;
 SCH_tasks_G[TASK_INDEX].Delay = 0;
 SCH_tasks_G[TASK_INDEX].Period = 0;
 SCH_tasks_G[TASK_INDEX].RunMe = 0;
 return Return_code;
}

    void SCH_Go_To_Sleep()
{
 PCON |= 0x01;//进入休眠模式
}

    void SCH_Report_Status(void)
{
/* #ifdef SCH_REPORT_ERRORS
 if(Error_code_G != Last_error_code_G)
 {
  Error_Port = 255 - Error_code_G;
  Last_error_code_G = Error_code_G;
  if(Error_code_G != 0)
  {
   Error_tICk_count_G = 60000;
  }
  else
  {
   Error_tick_count_G = 0;
  }
 }
 else
 {
  if(Error_tick_count_G != 0)
  {
   if(--Error_count_G == 0)
   {
    Error_code_G = 0;
   }
  }
 }
 #endif    */
}

    void LED_Flash_Update_A(void)
{
 if(LED_State_G_A == 1)
 {
  LED_State_G_A = 0;
  LED_PIN_A = 0;
 }
 else
 {
  LED_State_G_A = 1;
  LED_pin_A = 1;
 }
}

    void LED_Flash_Update_B(void)
{
 if(LED_State_G_B == 1)
 {
  LED_State_G_B = 0;
  LED_pin_B = 0;
 }
 else

www.55dianzi.com
{
  LED_State_G_B = 1;
  LED_PIN_B = 1;
 }
}

     

    void LED_Flash_Update_C(void)
{
 if(LED_State_G_C == 1)
 {
  LED_State_G_C = 0;
  LED_pin_C = 0;
 }
 else
 {
  LED_State_G_C = 1;
  LED_pin_C = 1;
 }
}
void LED_Flash_Update_D(void)
{
 if(LED_State_G_D == 1)
 {
  LED_State_G_D = 0;
  LED_pin_D = 0;
 }
 else
 {
  LED_State_G_D = 1;
  LED_pin_D = 1;
 }
}
void LED_Flash_Update_E(void)
{
 if(LED_State_G_E == 1)
 {
  LED_State_G_E = 0;
  LED_pin_E = 0;
 }
 else
 {
  LED_State_G_E = 1;
  LED_pin_E = 1;
 }
}
void LED_Flash_Update_F(void)
{
 if(LED_State_G_F == 1)
 {
  LED_State_G_F = 0;
  LED_pin_F = 0;
 }
 else
 {
  LED_State_G_F = 1;
  LED_pin_F = 1;
 }
}
void LED_Flash_Update_G(void)
{
 if(LED_State_G_G == 1)
 {
  LED_State_G_G = 0;
  LED_pin_G = 0;
 }
 else
 {
  LED_State_G_G = 1;
  LED_pin_G = 1;
 }
}
void LED_Flash_Update_H(void)
{
 if(LED_State_G_H == 1)
 {
  LED_State_G_H = 0;
  LED_pin_H = 0;
 }
 else
 {
  LED_State_G_H = 1;
  LED_pin_H = 1;
 }
}

    void LED_Flash_Init(void)
{
 LED_State_G_A= 0;//初始化LED状态
 LED_State_G_B= 0;//初始化LED状态
 LED_State_G_C= 0;//初始化LED状态
}



上一页  [1] [2] 


本文关键字:源代码  源码-程序单片机-工控设备 - 源码-程序

《混合式调度器C51源代码和相关注释》相关文章>>>