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

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

?? os_task.lst

?? 該源碼是本人經調試通過的UCOS2操作系統在51單片機上移植好的源代碼
?? LST
?? 第 1 頁 / 共 4 頁
字號:
C51 COMPILER V7.20   OS_TASK                                                               09/25/2006 10:08:39 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE OS_TASK
OBJECT MODULE PLACED IN OS_TASK.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE OS_TASK.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                                uC/OS-II
   4          *                                          The Real-Time Kernel
   5          *                                            TASK MANAGEMENT
   6          *
   7          *                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
   8          *                                           All Rights Reserved
   9          *
  10          * File : OS_TASK.C
  11          * By   : Jean J. Labrosse
  12          *********************************************************************************************************
  13          */
  14          
  15          #ifndef  OS_MASTER_FILE
  16          #include "includes.h"
  17          #endif
  18          
  19          /*
  20          *********************************************************************************************************
  21          *                                        CHANGE PRIORITY OF A TASK
  22          *
  23          * Description: This function allows you to change the priority of a task dynamically.  Note that the new
  24          *              priority MUST be available.
  25          *
  26          * Arguments  : oldp     is the old priority
  27          *
  28          *              newp     is the new priority
  29          *
  30          * Returns    : OS_NO_ERR        is the call was successful
  31          *              OS_PRIO_INVALID  if the priority you specify is higher that the maximum allowed
  32          *                               (i.e. >= OS_LOWEST_PRIO)
  33          *              OS_PRIO_EXIST    if the new priority already exist.
  34          *              OS_PRIO_ERR      there is no task with the specified OLD priority (i.e. the OLD task does
  35          *                               not exist.
  36          *********************************************************************************************************
  37          */
  38          
  39          #if OS_TASK_CHANGE_PRIO_EN > 0
              INT8U  OSTaskChangePrio (INT8U oldprio, INT8U newprio) reentrant
              {
              #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
                  OS_CPU_SR    cpu_sr;
              #endif
              
              #if OS_EVENT_EN > 0
                  OS_EVENT    *pevent;
              #endif
              
                  OS_TCB      *ptcb;
                  INT8U        x;
                  INT8U        y;
                  INT8U        bitx;
                  INT8U        bity;
              
C51 COMPILER V7.20   OS_TASK                                                               09/25/2006 10:08:39 PAGE 2   

              
              
              #if OS_ARG_CHK_EN > 0
                  if ((oldprio >= OS_LOWEST_PRIO && oldprio != OS_PRIO_SELF)  ||
                       newprio >= OS_LOWEST_PRIO) {
                      return (OS_PRIO_INVALID);
                  }
              #endif
                  OS_ENTER_CRITICAL();
                  if (OSTCBPrioTbl[newprio] != (OS_TCB *)0) {                 /* New priority must not already exist */
                      OS_EXIT_CRITICAL();
                      return (OS_PRIO_EXIST);
                  } else {
                      OSTCBPrioTbl[newprio] = (OS_TCB *)1;                    /* Reserve the entry to prevent others */
                      OS_EXIT_CRITICAL();
                      y    = newprio >> 3;                                    /* Precompute to reduce INT. latency   */
                      bity = OSMapTbl[y];
                      x    = newprio & 0x07;
                      bitx = OSMapTbl[x];
                      OS_ENTER_CRITICAL();
                      if (oldprio == OS_PRIO_SELF) {                          /* See if changing self                */
                          oldprio = OSTCBCur->OSTCBPrio;                      /* Yes, get priority                   */
                      }
                      ptcb = OSTCBPrioTbl[oldprio];
                      if (ptcb != (OS_TCB *)0) {                              /* Task to change must exist           */
                          OSTCBPrioTbl[oldprio] = (OS_TCB *)0;                /* Remove TCB from old priority        */
                          if ((OSRdyTbl[ptcb->OSTCBY] & ptcb->OSTCBBitX) != 0x00) {  /* If task is ready make it not */
                              if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0x00) {
                                  OSRdyGrp &= ~ptcb->OSTCBBitY;
                              }
                              OSRdyGrp    |= bity;                            /* Make new priority ready to run      */
                              OSRdyTbl[y] |= bitx;
              #if OS_EVENT_EN > 0
                          } else {
                              pevent = ptcb->OSTCBEventPtr;
                              if (pevent != (OS_EVENT *)0) {                  /* Remove from event wait list  */
                                  if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {
                                      pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
                                  }
                                  pevent->OSEventGrp    |= bity;              /* Add new priority to wait list       */
                                  pevent->OSEventTbl[y] |= bitx;
                              }
              #endif
                          }
                          OSTCBPrioTbl[newprio] = ptcb;                       /* Place pointer to TCB @ new priority */
                          ptcb->OSTCBPrio       = newprio;                    /* Set new task priority               */
                          ptcb->OSTCBY          = y;
                          ptcb->OSTCBX          = x;
                          ptcb->OSTCBBitY       = bity;
                          ptcb->OSTCBBitX       = bitx;
                          OS_EXIT_CRITICAL();
                          OS_Sched();                                         /* Run highest priority task ready     */
                          return (OS_NO_ERR);
                      } else {
                          OSTCBPrioTbl[newprio] = (OS_TCB *)0;                /* Release the reserved prio.          */
                          OS_EXIT_CRITICAL();
                          return (OS_PRIO_ERR);                               /* Task to change didn't exist         */
                      }
                  }
              }
              #endif
 117          /*$PAGE*/
C51 COMPILER V7.20   OS_TASK                                                               09/25/2006 10:08:39 PAGE 3   

 118          /*
 119          *********************************************************************************************************
 120          *                                            CREATE A TASK
 121          *
 122          * Description: This function is used to have uC/OS-II manage the execution of a task.  Tasks can either
 123          *              be created prior to the start of multitasking or by a running task.  A task cannot be
 124          *              created by an ISR.
 125          *
 126          * Arguments  : task     is a pointer to the task's code
 127          *
 128          *              pdata    is a pointer to an optional data area which can be used to pass parameters to
 129          *                       the task when the task first executes.  Where the task is concerned it thinks
 130          *                       it was invoked and passed the argument 'pdata' as follows:
 131          *
 132          *                           void Task (void *pdata)
 133          *                           {
 134          *                               for (;;) {
 135          *                                   Task code;
 136          *                               }
 137          *                           }
 138          *
 139          *              ptos     is a pointer to the task's top of stack.  If the configuration constant
 140          *                       OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high
 141          *                       memory to low memory).  'pstk' will thus point to the highest (valid) memory
 142          *                       location of the stack.  If OS_STK_GROWTH is set to 0, 'pstk' will point to the
 143          *                       lowest memory location of the stack and the stack will grow with increasing
 144          *                       memory locations.
 145          *
 146          *              prio     is the task's priority.  A unique priority MUST be assigned to each task and the
 147          *                       lower the number, the higher the priority.
 148          *
 149          * Returns    : OS_NO_ERR        if the function was successful.
 150          *              OS_PRIO_EXIT     if the task priority already exist
 151          *                               (each task MUST have a unique priority).
 152          *              OS_PRIO_INVALID  if the priority you specify is higher that the maximum allowed
 153          *                               (i.e. >= OS_LOWEST_PRIO)
 154          *********************************************************************************************************
 155          */
 156          
 157          #if OS_TASK_CREATE_EN > 0
 158          INT8U  OSTaskCreate (void (*task)(void *pd), void *ppdata, OS_STK *ptos, INT8U prio)  reentrant
 159          {
 160   1      #if OS_CRITICAL_METHOD == 3                  /* Allocate storage for CPU status register               */
                  OS_CPU_SR  cpu_sr;
              #endif
 163   1          OS_STK    *psp;
 164   1          INT8U      err;
 165   1      
 166   1      
 167   1      #if OS_ARG_CHK_EN > 0
                  if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range           */
                      return (OS_PRIO_INVALID);
                  }
              #endif
 172   1          OS_ENTER_CRITICAL();
 173   1          if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority  */
 174   2              OSTCBPrioTbl[prio] = (OS_TCB *)1;    /* Reserve the priority to prevent others from doing ...  */
 175   2                                                   /* ... the same thing until task is created.              */
 176   2              OS_EXIT_CRITICAL();
 177   2              psp = (OS_STK *)OSTaskStkInit(task, ppdata, ptos, 0);    /* Initialize the task's stack         */
 178   2              err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0);
 179   2              if (err == OS_NO_ERR) {
C51 COMPILER V7.20   OS_TASK                                                               09/25/2006 10:08:39 PAGE 4   

 180   3                  OS_ENTER_CRITICAL();
 181   3                  OSTaskCtr++;                                        /* Increment the #tasks counter        */
 182   3                  OS_EXIT_CRITICAL();
 183   3                  if (OSRunning == TRUE) {         /* Find highest priority task if multitasking has started */
 184   4                      OS_Sched();
 185   4                  }
 186   3              } else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲www啪成人一区二区麻豆| 免费观看久久久4p| 国产三级久久久| 日韩欧美一区二区久久婷婷| 欧美日韩成人综合| 欧美精品三级在线观看| 欧美日韩国产天堂| 91精品免费在线| 日韩欧美国产1| 91日韩一区二区三区| 丰满放荡岳乱妇91ww| 国产成人在线视频播放| 懂色av一区二区三区免费观看| 国产乱子轮精品视频| 国产精品1区2区| 国产1区2区3区精品美女| 成人黄色777网| 欧美综合亚洲图片综合区| 欧美日韩日本视频| 日韩三级伦理片妻子的秘密按摩| 精品少妇一区二区三区在线视频| 精品久久久久久久久久久久久久久 | 色综合久久天天综合网| 欧美性色欧美a在线播放| 777色狠狠一区二区三区| 2023国产精品| 136国产福利精品导航| 亚洲激情av在线| 日本女人一区二区三区| 国产福利91精品一区二区三区| av高清久久久| 色噜噜狠狠成人网p站| 欧美一区二区三区影视| 国产精品系列在线| 日韩av在线免费观看不卡| 高清av一区二区| 欧美三级电影精品| 国产人妖乱国产精品人妖| 亚洲综合图片区| 国产精品资源在线看| 91国偷自产一区二区使用方法| 日韩亚洲欧美在线| 亚洲视频在线观看一区| 久久精品国产色蜜蜜麻豆| 91免费视频网| 久久夜色精品国产欧美乱极品| 亚洲人妖av一区二区| 国产一区在线精品| 91.xcao| 亚洲女人****多毛耸耸8| 国产一区二区三区精品视频| 欧美性生活久久| 国产精品理伦片| 国产精品中文字幕一区二区三区| 欧美日韩在线观看一区二区| 久久久亚洲午夜电影| 青娱乐精品视频| 欧美亚洲高清一区二区三区不卡| 国产精品免费av| 国产老女人精品毛片久久| 日韩一区二区精品葵司在线| 性久久久久久久| 6080yy午夜一二三区久久| 国产欧美日韩在线观看| 极品少妇xxxx偷拍精品少妇| 欧美日韩久久一区| 亚洲一区二区三区四区五区中文| 丁香婷婷综合激情五月色| 精品久久国产老人久久综合| 婷婷成人激情在线网| 欧美乱妇23p| 日日噜噜夜夜狠狠视频欧美人| 在线观看一区不卡| 亚洲一区二区三区视频在线| 99在线视频精品| 国产精品对白交换视频 | 成人免费黄色大片| 国产日韩影视精品| 不卡的av中国片| 1区2区3区国产精品| 成人h动漫精品一区二| 国产精品视频麻豆| 色哟哟国产精品| 一区二区欧美视频| 欧美午夜精品电影| 性做久久久久久久久| 欧美一区国产二区| 国产综合久久久久影院| 精品福利在线导航| 高潮精品一区videoshd| 亚洲女女做受ⅹxx高潮| 欧美日韩中文字幕精品| 日产精品久久久久久久性色| 欧美一区欧美二区| 国产美女精品人人做人人爽| 久久精品欧美日韩| av电影在线观看一区| 成人免费一区二区三区在线观看| 亚洲一区在线视频| 精品在线播放免费| 精品国产污污免费网站入口| 国产99一区视频免费| 亚洲欧美偷拍三级| 久久久久久久久久久久久女国产乱 | 成人福利视频网站| 亚洲 欧美综合在线网络| 久久综合九色综合欧美亚洲| 成人免费视频一区| 性欧美疯狂xxxxbbbb| 久久久午夜精品| 欧洲激情一区二区| 国产一区视频网站| 亚洲自拍都市欧美小说| 久久久久国产一区二区三区四区| 97se亚洲国产综合在线| 久久成人羞羞网站| 亚洲欧美日韩国产手机在线| 日韩一区二区三区免费观看| 成人免费不卡视频| 美女任你摸久久| 一区二区三区四区国产精品| 2023国产精品自拍| 欧美日韩国产美女| 97久久精品人人做人人爽50路| 看片的网站亚洲| 偷拍一区二区三区| 亚洲精品第1页| 日本一区二区三区四区在线视频| 五月综合激情日本mⅴ| 国产酒店精品激情| 亚洲午夜精品17c| 91视频国产资源| 国产自产v一区二区三区c| 樱桃国产成人精品视频| 欧美国产1区2区| 精品国产成人在线影院| 欧美日韩不卡一区| 色偷偷久久人人79超碰人人澡 | 视频一区在线播放| 亚洲美女精品一区| 国产日产亚洲精品系列| 精品国产凹凸成av人导航| 欧美群妇大交群中文字幕| 色综合色综合色综合| 成人在线一区二区三区| 另类调教123区 | 久久久精品综合| 精品国产凹凸成av人网站| 在线电影一区二区三区| 亚洲大片一区二区三区| 日韩一卡二卡三卡四卡| 成人avav影音| 国产一区二区在线观看免费| 青娱乐精品视频在线| 天堂成人免费av电影一区| 亚洲高清免费视频| 视频一区二区三区中文字幕| 一区二区三区免费网站| 亚洲精品日产精品乱码不卡| 亚洲视频综合在线| 亚洲男人的天堂在线aⅴ视频| 国产精品白丝在线| 亚洲va欧美va人人爽| 亚洲综合色视频| 亚洲午夜激情av| 日本亚洲天堂网| 韩国女主播一区二区三区| 国产一区欧美日韩| 成人avav影音| 欧美网站一区二区| 日韩精品一区二区三区老鸭窝| 欧美va在线播放| 国产欧美日韩视频一区二区| 日韩毛片一二三区| 亚洲国产婷婷综合在线精品| 午夜av电影一区| 国产剧情一区二区| 日本韩国欧美一区二区三区| 色综合天天性综合| 91精品国产综合久久久蜜臀粉嫩| 亚洲精品一区二区三区在线观看| 国产精品人人做人人爽人人添 | 亚洲黄色片在线观看| 视频在线观看一区二区三区| 黑人精品欧美一区二区蜜桃| 成人动漫在线一区| 欧美日韩视频在线一区二区| 在线亚洲高清视频| 视频一区在线视频| 日韩三级高清在线| 欧美一区二区三区人| 中文字幕不卡的av| 午夜影视日本亚洲欧洲精品| 国产精品一区二区视频| 91老师片黄在线观看| 欧美一级欧美三级在线观看| 国产精品免费人成网站| 麻豆91在线看| 欧美亚洲综合一区| 亚洲最色的网站|