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

📄 os_q.lst

📁 运行于51单片机的音乐彩灯源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
                          }
                          if (i < OS_MAX_TASKS )
                          {
                              /* 查到,使其中优先级最高的任务进入就绪状态,并将其从等待队列中清除 */
                              Buf[3] &= ~OSMapTbl[i];
                              OSIntSendSignal(i);
                          }
              #else
                          for (i = 0; i < 8; i++)
                          {
                              if ((temp & 0x01) != 0)
                              {
                                  break;
                              }
                              temp = temp >> 1;
                          }
                          if (i >= 8 )
                          {
                              temp = Buf[4];
                              for (; i < OS_MAX_TASKS; i++)
                              {
                                  if ((temp & 0x01) != 0)
                                  {
                                      break;
                                  }
                                  temp = temp >> 1;
                              }
                          }
                          if (i < OS_MAX_TASKS )
                          {
                              /* 查到,使其中优先级最高的任务进入就绪状态,并将其从等待队列中清除 */
                              if (i < 8)
                              {
                                  Buf[3] &= ~OSMapTbl[i];
                              }
                              else
                              {
                                  Buf[4] &= ~OSMapTbl[i & 0x07];
                              }
                              OSIntSendSignal(i);
                          }
              #endif
                      }
                      OS_EXIT_CRITICAL();
C51 COMPILER V8.01   OS_Q                                                                  05/11/2006 18:37:12 PAGE 10  

                      return OS_Q_OK;
                  }
                  else
                  {
                      OS_EXIT_CRITICAL();
                      return OS_Q_FULL;
                  }
              }
              #endif
              
              /*********************************************************************************************************
              ** 函数名称: OSQPost
              ** 功能描述: FIFO方式发送消息
              ** 输 入: Buf:指向队列的指针
              **         Data:消息数据
              ** 输 出: OS_Q_FULL:队列满
              **         OS_Q_OK:发送成功
              ** 全局变量: 无
              ** 调用模块: OSQIntPost,OSSched
              **
              ** 作 者: 陈明计
              ** 日 期: 2002年9月1日
              **-------------------------------------------------------------------------------------------------------
              ** 修改人:
              ** 日 期:
              **-------------------------------------------------------------------------------------------------------
              ********************************************************************************************************/
              #if EN_OS_Q_POST > 0
                      uint8 OSQPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data)
              {
              #if EN_OS_Q_CHK > 0
                  if (Buf == NULL)
                  {
                      return NOT_OK;
                  }
              #endif
              
                  if (OSQIntPost(Buf,Data) == OS_Q_OK)
                  {
                      OSSched();
                      return OS_Q_OK;
                  }
                  else
                  {
                      return OS_Q_FULL;
                  }
              }
              #endif
              
              /*********************************************************************************************************
              ** 函数名称: OSQPostFront
              ** 功能描述: LIFO方式发送消息
              ** 输 入: Buf:指向队列的指针
              **         Data:消息数据
              ** 输 出: OS_Q_FULL:队列满
              **         OS_Q_OK:发送成功
              ** 全局变量: 无
              ** 调用模块: OSQIntPostFront,OSSched
              **
              ** 作 者: 陈明计
              ** 日 期: 2002年9月1日
              **-------------------------------------------------------------------------------------------------------
C51 COMPILER V8.01   OS_Q                                                                  05/11/2006 18:37:12 PAGE 11  

              ** 修改人:
              ** 日 期:
              **-------------------------------------------------------------------------------------------------------
              ********************************************************************************************************/
              #if EN_OS_Q_POST_FRONT > 0
                      uint8 OSQPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data)
              {
              #if EN_OS_Q_CHK > 0
                  if (Buf == NULL)
                  {
                      return NOT_OK;
                  }
              #endif
              
                  if (OSQIntPostFront(Buf,Data) == OS_Q_OK)
                  {
                      OSSched();
                      return OS_Q_OK;
                  }
                  else
                  {
                      return OS_Q_FULL;
                  }
              }
              #endif
              
              /*********************************************************************************************************
              ** 函数名称: OSQNMsgs
              ** 功能描述: 取得消息队列中消息数
              ** 输 入: Buf:指向队列的指针
              ** 输 出: 消息数
              ** 全局变量: 无
              ** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
              **
              ** 作 者: 陈明计
              ** 日 期: 2002年9月1日
              **-------------------------------------------------------------------------------------------------------
              ** 修改人:
              ** 日 期:
              **-------------------------------------------------------------------------------------------------------
              ********************************************************************************************************/
              #if EN_OS_Q_NMsgs > 0
                      uint8 OSQNMsgs(uint8 OS_Q_MEM_SEL *Buf)
              {
                  uint8 temp;
              
              #if EN_OS_Q_CHK > 0
                  if (Buf == NULL)
                  {
                      return 0;
                  }
              #endif
              
                  OS_ENTER_CRITICAL();
                  temp = Buf[0];
                  OS_EXIT_CRITICAL();
                  return temp;
              }
              #endif
              
              /*********************************************************************************************************
              ** 函数名称: OSQSize
C51 COMPILER V8.01   OS_Q                                                                  05/11/2006 18:37:12 PAGE 12  

              ** 功能描述: 取得消息队列总容量
              ** 输 入: Buf:指向队列的指针
              ** 输 出: 消息队列总容量
              ** 全局变量: 无
              ** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
              **
              ** 作 者: 陈明计
              ** 日 期: 2002年9月1日
              **-------------------------------------------------------------------------------------------------------
              ** 修改人:
              ** 日 期:
              **-------------------------------------------------------------------------------------------------------
              ********************************************************************************************************/
              #if EN_OS_Q_SIZE > 0
                      uint8 OSQSize(uint8 OS_Q_MEM_SEL *Buf)
              {
                  uint8 temp;
              
              #if EN_OS_Q_CHK > 0
                  if (Buf == NULL)
                  {
                      return 0;
                  }
              #endif
              
                  OS_ENTER_CRITICAL();
              #if OS_MAX_TASKS < 9
                  temp = Buf[1] - 4;
              #else
                  temp = Buf[1] - 5;
              #endif
                  OS_EXIT_CRITICAL();
                  return temp;
              }
              #endif
              
              /*********************************************************************************************************
              ** 函数名称: OSQFlush
              ** 功能描述: 清空队列
              ** 输 入: Buf:指向队列的指针
              ** 输 出: 无
              ** 全局变量: 无
              ** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
              **
              ** 作 者: 陈明计
              ** 日 期: 2002年9月1日
              **-------------------------------------------------------------------------------------------------------
              ** 修改人: 陈明计
              ** 日 期: 2002年10月26日
              **-------------------------------------------------------------------------------------------------------
              ** 修改人:
              ** 日 期:
              **-------------------------------------------------------------------------------------------------------
              ********************************************************************************************************/
              #if EN_OS_Q_FLUSH > 0
                      void OSQFlush (uint8 OS_Q_MEM_SEL *Buf)
              {
              #if EN_OS_Q_CHK > 0
                  if (Buf == NULL)
                  {
                      return;
                  }
C51 COMPILER V8.01   OS_Q                                                                  05/11/2006 18:37:12 PAGE 13  

              #endif
              
                  Buf[0] = 0;
              #if OS_MAX_TASKS < 9
                  Buf[2] = 4;
              #else
                  Buf[2] = 5;
              #endif
              }
              #endif
              
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   ----    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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