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

📄 mac_scheduler.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   000028   40DC         JC      ??mschReserveTask_0
     95              return NO_TASK;
   \   00002A   79FF         MOV     R1,#-0x1
   \                     ??mschReserveTask_2:
   \   00002C   80..         SJMP    ?Subroutine0
     96          } // mschReserveTask
     97          
     98          
     99          
    100          
    101          //-------------------------------------------------------------------------------------------------------
    102          //  void mschReleaseTask(UINT8 taskNumber)
    103          //
    104          //  DESCRIPTION:
    105          //      Clears the reservation for an unused task.
    106          //
    107          //  ARGUMENTS:
    108          //      UINT8 taskNumber
    109          //          The number of the task (returned by mschReserveTask())
    110          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    111          ROOT void mschReleaseTask(UINT8 taskNumber) {
   \                     mschReleaseTask:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    112              if (taskNumber != NO_TASK) pMacTasks[taskNumber].occupied = FALSE;
   \   000004   74FF         MOV     A,#-0x1
   \   000006   69           XRL     A,R1
   \   000007   6011         JZ      ??mschReleaseTask_0
   \   000009   E9           MOV     A,R1
   \   00000A   75F00A       MOV     B,#0xa
   \   00000D   A4           MUL     AB
   \   00000E   24..         ADD     A,#((pMacTasks + 6) & 0xff)
   \   000010   F582         MOV     DPL,A
   \   000012   E5F0         MOV     A,B
   \   000014   34..         ADDC    A,#(((pMacTasks + 6) >> 8) & 0xff)
   \   000016   F583         MOV     DPH,A
   \   000018   E4           CLR     A
   \   000019   F0           MOVX    @DPTR,A
    113          } // mschReleaseTask
   \                     ??mschReleaseTask_0:
   \   00001A   80..         SJMP    ?Subroutine0
    114          
    115          
    116          
    117          
    118          //-------------------------------------------------------------------------------------------------------
    119          //  BOOL mschAddTask(UINT8 taskNumber, UINT8 priority, TFPTR pTaskFunc, WORD taskData, void *dataPointer)
    120          //
    121          //  DESCRIPTION:
    122          //      Configures and adds a reserved to task to the desired task queue.
    123          //
    124          //  ARGUMENTS:
    125          //      UINT8 taskNumber
    126          //          The number of the task (returned by mschReserveTask(...))
    127          //      UINT8 priority
    128          //          MAC_TASK_PRI_HIGHEST, MAC_TASK_PRI_HIGH, MAC_TASK_PRI_MEDIUM or MAC_TASK_PRI_LOW
    129          //      TFPTR pTaskFunc
    130          //          A pointer to the task function (void TaskFunction(MAC_TASK_INFO *pTask))
    131          //      WORD taskData
    132          //          Two bytes of task data
    133          //
    134          //  RETURN VALUE:
    135          //      BOOL
    136          //          The task was added (the task number was OK)
    137          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    138          ROOT BOOL mschAddTask(UINT8 taskNumber, UINT8 priority, TFPTR pTaskFunc, WORD taskData) {
   \                     mschAddTask:
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
   \   000005   89..         MOV     ?V0 + 0,R1
   \   000007   8A..         MOV     ?V0 + 1,R2
   \   000009   740A         MOV     A,#0xa
   \   00000B   12....       LCALL   ?XSTACK_DISP0_8
   \   00000E   E0           MOVX    A,@DPTR
   \   00000F   F9           MOV     R1,A
   \   000010   A3           INC     DPTR
   \   000011   E0           MOVX    A,@DPTR
   \   000012   FA           MOV     R2,A
   \   000013   A3           INC     DPTR
   \   000014   E0           MOVX    A,@DPTR
   \   000015   FB           MOV     R3,A
    139              MAC_TASK_INFO    *pTask;
    140              MAC_TASK_QUEUE   *pQueue;
    141          
    142              // The task index must be valid
    143              if (taskNumber == NO_TASK) return FALSE;
   \   000016   74FF         MOV     A,#-0x1
   \   000018   65..         XRL     A,?V0 + 0
   \   00001A   7005         JNZ     ??mschAddTask_0
   \   00001C   7900         MOV     R1,#0x0
   \   00001E   02....       LJMP    ??mschAddTask_1
    144          
    145              DISABLE_GLOBAL_INT();
   \                     ??mschAddTask_0:
   \   000021   C2AF         CLR     0xa8.7
    146          
    147              // Initialize the task
    148              pTask = &pMacTasks[taskNumber];
   \   000023   E5..         MOV     A,?V0 + 0
   \   000025   75F00A       MOV     B,#0xa
   \   000028   A4           MUL     AB
   \   000029   24..         ADD     A,#(pMacTasks & 0xff)
   \   00002B   FE           MOV     R6,A
   \   00002C   E5F0         MOV     A,B
   \   00002E   34..         ADDC    A,#((pMacTasks >> 8) & 0xff)
   \   000030   FF           MOV     R7,A
    149              pTask->pTaskFunc = pTaskFunc;
   \   000031   8E82         MOV     DPL,R6
   \   000033   8F83         MOV     DPH,R7
   \   000035   E9           MOV     A,R1
   \   000036   F0           MOVX    @DPTR,A
   \   000037   A3           INC     DPTR
   \   000038   EA           MOV     A,R2
   \   000039   F0           MOVX    @DPTR,A
   \   00003A   A3           INC     DPTR
   \   00003B   EB           MOV     A,R3
   \   00003C   F0           MOVX    @DPTR,A
    150              pTask->taskData = taskData;
   \   00003D   8E82         MOV     DPL,R6
   \   00003F   8F83         MOV     DPH,R7
   \   000041   A3           INC     DPTR
   \   000042   A3           INC     DPTR
   \   000043   A3           INC     DPTR
   \   000044   EC           MOV     A,R4
   \   000045   F0           MOVX    @DPTR,A
   \   000046   A3           INC     DPTR
   \   000047   ED           MOV     A,R5
   \   000048   F0           MOVX    @DPTR,A
    151              pTask->state = 0;
   \   000049   E4           CLR     A
   \   00004A   8E82         MOV     DPL,R6
   \   00004C   8F83         MOV     DPH,R7
   \   00004E   A3           INC     DPTR
   \   00004F   A3           INC     DPTR
   \   000050   A3           INC     DPTR
   \   000051   A3           INC     DPTR
   \   000052   A3           INC     DPTR
   \   000053   F0           MOVX    @DPTR,A
    152              pTask->priority = priority;
   \   000054   8E82         MOV     DPL,R6
   \   000056   8F83         MOV     DPH,R7
   \   000058   A3           INC     DPTR
   \   000059   A3           INC     DPTR
   \   00005A   A3           INC     DPTR
   \   00005B   A3           INC     DPTR
   \   00005C   A3           INC     DPTR
   \   00005D   A3           INC     DPTR
   \   00005E   A3           INC     DPTR
   \   00005F   A3           INC     DPTR
   \   000060   E5..         MOV     A,?V0 + 1
   \   000062   F0           MOVX    @DPTR,A
    153              pTask->nextTask = NO_TASK;
   \   000063   74FF         MOV     A,#-0x1
   \   000065   8E82         MOV     DPL,R6
   \   000067   8F83         MOV     DPH,R7
   \   000069   A3           INC     DPTR
   \   00006A   A3           INC     DPTR
   \   00006B   A3           INC     DPTR
   \   00006C   A3           INC     DPTR
   \   00006D   A3           INC     DPTR
   \   00006E   A3           INC     DPTR
   \   00006F   A3           INC     DPTR
   \   000070   F0           MOVX    @DPTR,A
    154          
    155              // Update the queue pointers at the insertion point (last task in the queue)
    156              pQueue = &pMacTaskQueues[priority];
   \   000071   E5..         MOV     A,?V0 + 1
   \   000073   75F003       MOV     B,#0x3
   \   000076   A4           MUL     AB
   \   000077   24..         ADD     A,#(pMacTaskQueues & 0xff)
   \   000079   F582         MOV     DPL,A
   \   00007B   E5F0         MOV     A,B
   \   00007D   34..         ADDC    A,#((pMacTaskQueues >> 8) & 0xff)
   \   00007F   F583         MOV     DPH,A
    157              if (pQueue->firstTask == NO_TASK) {
   \   000081   E0           MOVX    A,@DPTR
   \   000082   64FF         XRL     A,#0xff
   \   000084   7006         JNZ     ??mschAddTask_2
    158                  pQueue->firstTask = taskNumber;
   \   000086   E5..         MOV     A,?V0 + 0
   \   000088   F0           MOVX    @DPTR,A
    159                  pQueue->lastTask = taskNumber;
   \   000089   A3           INC     DPTR
   \   00008A   801B         SJMP    ??mschAddTask_3
    160              } else {
    161                  pMacTasks[pQueue->lastTask].nextTask = taskNumber;
   \                     ??mschAddTask_2:
   \   00008C   A3           INC     DPTR
   \   00008D   A882         MOV     R0,DPL
   \   00008F   A983         MOV     R1,DPH
   \   000091   E0           MOVX    A,@DPTR
   \   000092   75F00A       MOV     B,#0xa
   \   000095   A4           MUL     AB
   \   000096   24..         ADD     A,#((pMacTasks + 7) & 0xff)
   \   000098   F582         MOV     DPL,A
   \   00009A   E5F0         MOV     A,B
   \   00009C   34..         ADDC    A,#(((pMacTasks + 7) >> 8) & 0xff)
   \   00009E   F583         MOV     DPH,A
   \   0000A0   E5..         MOV     A,?V0 + 0
   \   0000A2   F0           MOVX    @DPTR,A
    162                  pQueue->lastTask = taskNumber;
   \   0000A3   8882         MOV     DPL,R0
   \   0000A5   8983         MOV     DPH,R1
   \                     ??mschAddTask_3:
   \   0000A7   F0           MOVX    @DPTR,A
    163              }
    164              ENABLE_GLOBAL_INT();
   \   0000A8   D2AF         SETB    0xa8.7
    165              return TRUE;
   \   0000AA   7901         MOV     R1,#0x1
   \                     ??mschAddTask_1:
   \   0000AC                REQUIRE ?Subroutine1
   \   0000AC                ; // Fall through to label ?Subroutine1
    166          
    167          } // mschAddTask

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   7F03         MOV     R7,#0x3
   \   000002   02....       LJMP    ?FUNC_LEAVE_XDATA
    168          
    169          
    170          
    171          
    172          //-------------------------------------------------------------------------------------------------------
    173          //  void mschRemoveTask(UINT8 priority, BYTE flags)
    174          //
    175          //  DESCRIPTION:
    176          //      Removes the active task from the specified task queue. This function is usually run from the task
    177          //      function when it's about to finished, or before it makes a call to the higher layer.
    178          //
    179          //  ARGUMENTS:
    180          //      UINT8 priority
    181          //          The priority of the task to be removed
    182          //      BYTE flags
    183          //          MSCH_KEEP_TASK_RESERVED_BM: The task is not released back to the task pool
    184          //          MSCH_KEEP_TASK_IN_PROGRESS_BM: Does not allow other tasks of the same priority to run before
    185          //              the current task has finished (even if it is removed from the queue).
    186          //-------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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