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

📄 mac_scheduler.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \                                 In segment NEAR_CODE, align 1, keep-with-next
    187          ROOT void mschRemoveTask(UINT8 priority, BYTE flags) {
   \                     mschRemoveTask:
   \   000000   74F8         MOV     A,#-0x8
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 8
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FC           MOV     R4,A
    188              UINT8 taskNumber;
    189              MAC_TASK_INFO   *pTask;
    190              MAC_TASK_QUEUE   *pQueue = &pMacTaskQueues[priority];
   \   000007   E9           MOV     A,R1
   \   000008   75F003       MOV     B,#0x3
   \   00000B   A4           MUL     AB
   \   00000C   24..         ADD     A,#(pMacTaskQueues & 0xff)
   \   00000E   F8           MOV     R0,A
   \   00000F   E5F0         MOV     A,B
   \   000011   34..         ADDC    A,#((pMacTaskQueues >> 8) & 0xff)
   \   000013   F9           MOV     R1,A
    191          
    192              DISABLE_GLOBAL_INT();
   \   000014   C2AF         CLR     0xa8.7
    193          
    194              // Get the task table index number, and make sure that it is valid
    195              taskNumber = pQueue->firstTask;
   \   000016   8882         MOV     DPL,R0
   \   000018   8983         MOV     DPH,R1
   \   00001A   E0           MOVX    A,@DPTR
   \   00001B   FE           MOV     R6,A
    196          
    197              // Flag-dependent operations
    198              pTask = &pMacTasks[taskNumber];
   \   00001C   75F00A       MOV     B,#0xa
   \   00001F   A4           MUL     AB
   \   000020   24..         ADD     A,#(pMacTasks & 0xff)
   \   000022   FA           MOV     R2,A
   \   000023   E5F0         MOV     A,B
   \   000025   34..         ADDC    A,#((pMacTasks >> 8) & 0xff)
   \   000027   FB           MOV     R3,A
    199              if (!(flags & MSCH_KEEP_TASK_RESERVED_BM)) pTask->occupied = FALSE;
   \   000028   EC           MOV     A,R4
   \   000029   A2E0         MOV     C,0xE0 /* A   */.0
   \   00002B   400C         JC      ??mschRemoveTask_0
   \   00002D   E4           CLR     A
   \   00002E   8A82         MOV     DPL,R2
   \   000030   8B83         MOV     DPH,R3
   \   000032   A3           INC     DPTR
   \   000033   A3           INC     DPTR
   \   000034   A3           INC     DPTR
   \   000035   A3           INC     DPTR
   \   000036   A3           INC     DPTR
   \   000037   A3           INC     DPTR
   \   000038   F0           MOVX    @DPTR,A
    200              if (!(flags & MSCH_KEEP_TASK_IN_PROGRESS_BM)) pQueue->taskInProgress = FALSE;
   \                     ??mschRemoveTask_0:
   \   000039   EC           MOV     A,R4
   \   00003A   A2E1         MOV     C,0xE0 /* A   */.1
   \   00003C   4008         JC      ??mschRemoveTask_1
   \   00003E   E4           CLR     A
   \   00003F   8882         MOV     DPL,R0
   \   000041   8983         MOV     DPH,R1
   \   000043   A3           INC     DPTR
   \   000044   A3           INC     DPTR
   \   000045   F0           MOVX    @DPTR,A
    201          
    202              // Move the "first task" pointer one step forward
    203              pQueue->firstTask = pTask->nextTask;
   \                     ??mschRemoveTask_1:
   \   000046   8A82         MOV     DPL,R2
   \   000048   8B83         MOV     DPH,R3
   \   00004A   A3           INC     DPTR
   \   00004B   A3           INC     DPTR
   \   00004C   A3           INC     DPTR
   \   00004D   A3           INC     DPTR
   \   00004E   A3           INC     DPTR
   \   00004F   A3           INC     DPTR
   \   000050   A3           INC     DPTR
   \   000051   E0           MOVX    A,@DPTR
   \   000052   FA           MOV     R2,A
   \   000053   8882         MOV     DPL,R0
   \   000055   8983         MOV     DPH,R1
   \   000057   F0           MOVX    @DPTR,A
    204              if (pQueue->firstTask == NO_TASK) {
   \   000058   A3           INC     DPTR
   \   000059   74FF         MOV     A,#-0x1
   \   00005B   6A           XRL     A,R2
   \   00005C   7005         JNZ     ??mschRemoveTask_2
    205                  pQueue->lastTask = NO_TASK;
   \                     ??mschRemoveTask_3:
   \   00005E   74FF         MOV     A,#-0x1
   \   000060   F0           MOVX    @DPTR,A
   \   000061   8004         SJMP    ??mschRemoveTask_4
    206              } else if (pQueue->lastTask == taskNumber) {
   \                     ??mschRemoveTask_2:
   \   000063   E0           MOVX    A,@DPTR
   \   000064   6E           XRL     A,R6
   \   000065   60F7         JZ      ??mschRemoveTask_3
    207                  pQueue->lastTask = NO_TASK;
    208              }
    209          
    210              ENABLE_GLOBAL_INT();
   \                     ??mschRemoveTask_4:
   \   000067   D2AF         SETB    0xa8.7
    211          } // mschRemoveTask
   \   000069   7F01         MOV     R7,#0x1
   \   00006B   02....       LJMP    ?FUNC_LEAVE_XDATA
    212          
    213          
    214          
    215          
    216          //-------------------------------------------------------------------------------------------------------
    217          //  void mschRescheduleTask(MAC_TASK_INFO *pTask, UINT8 state)
    218          //
    219          //  DESCRIPTION:
    220          //      Removes the currently running task from a queue, and adds it to the back of the same queue,
    221          //      possibly behind a number of waiting tasks which now will be run first.
    222          //
    223          //  ARGUMENTS:
    224          //      MAC_TASK_INFO *pTask
    225          //          The task to be rescheduled
    226          //      UINT8 state
    227          //          The task state when run after the rescheduling.
    228          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    229          ROOT void mschRescheduleTask(MAC_TASK_INFO   *pTask, UINT8 state) {
   \                     mschRescheduleTask:
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
   \   000009   89..         MOV     ?V0 + 2,R1
    230              mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_RESERVED_BM | MSCH_KEEP_TASK_IN_PROGRESS_BM);
   \   00000B   EE           MOV     A,R6
   \   00000C   2408         ADD     A,#0x8
   \   00000E   F5..         MOV     ?V0 + 0,A
   \   000010   EF           MOV     A,R7
   \   000011   3400         ADDC    A,#0x0
   \   000013   F5..         MOV     ?V0 + 1,A
   \   000015                ; Setup parameters for call to function mschRemoveTask
   \   000015   7A03         MOV     R2,#0x3
   \   000017   85..82       MOV     DPL,?V0 + 0
   \   00001A   F583         MOV     DPH,A
   \   00001C   E0           MOVX    A,@DPTR
   \   00001D   F9           MOV     R1,A
   \   00001E   12....       LCALL   mschRemoveTask
    231              mschAddTask(pTask->taskNumber, pTask->priority, pTask->pTaskFunc, pTask->taskData);
   \   000021                ; Setup parameters for call to function mschAddTask
   \   000021   8E82         MOV     DPL,R6
   \   000023   8F83         MOV     DPH,R7
   \   000025   12....       LCALL   ?PUSH_XSTACK8_X_THREE
   \   000028   8E82         MOV     DPL,R6
   \   00002A   8F83         MOV     DPH,R7
   \   00002C   A3           INC     DPTR
   \   00002D   A3           INC     DPTR
   \   00002E   A3           INC     DPTR
   \   00002F   E0           MOVX    A,@DPTR
   \   000030   FC           MOV     R4,A
   \   000031   A3           INC     DPTR
   \   000032   E0           MOVX    A,@DPTR
   \   000033   FD           MOV     R5,A
   \   000034   85..82       MOV     DPL,?V0 + 0
   \   000037   85..83       MOV     DPH,?V0 + 1
   \   00003A   E0           MOVX    A,@DPTR
   \   00003B   FA           MOV     R2,A
   \   00003C   8E82         MOV     DPL,R6
   \   00003E   8F83         MOV     DPH,R7
   \   000040   A3           INC     DPTR
   \   000041   A3           INC     DPTR
   \   000042   A3           INC     DPTR
   \   000043   A3           INC     DPTR
   \   000044   A3           INC     DPTR
   \   000045   A3           INC     DPTR
   \   000046   A3           INC     DPTR
   \   000047   A3           INC     DPTR
   \   000048   A3           INC     DPTR
   \   000049   E0           MOVX    A,@DPTR
   \   00004A   F9           MOV     R1,A
   \   00004B   12....       LCALL   mschAddTask
   \   00004E   7403         MOV     A,#0x3
   \   000050   12....       LCALL   ?DEALLOC_XSTACK8
    232              pTask->state = state;
   \   000053   8E82         MOV     DPL,R6
   \   000055   8F83         MOV     DPH,R7
   \   000057   A3           INC     DPTR
   \   000058   A3           INC     DPTR
   \   000059   A3           INC     DPTR
   \   00005A   A3           INC     DPTR
   \   00005B   A3           INC     DPTR
   \   00005C   E5..         MOV     A,?V0 + 2
   \   00005E   F0           MOVX    @DPTR,A
    233          } // mschRescheduleTask
   \   00005F   02....       LJMP    ?Subroutine1

   \                                 In segment SFR_AN, at 0xa8
   \   union <unnamed> volatile __sfr _A_IEN0
   \                     _A_IEN0:
   \   000000                DS 1
    234          

   Maximum stack usage in bytes:

     Function            ISTACK PSTACK XSTACK
     --------            ------ ------ ------
     mschAddTask             1      0     23
     mschInit                3      0      0
     mschReleaseTask         3      0      0
     mschRemoveTask          1      0     18
     mschRescheduleTask      1      0     13
       -> mschRemoveTask     0      0     20
       -> mschAddTask        0      0     26
     mschReserveTask         3      0      0


   Segment part sizes:

     Function/Label     Bytes
     --------------     -----
     pMacTasks           200
     pMacTaskQueues       12
     mschInit             73
     ?Subroutine0          5
     mschReserveTask      46
     mschReleaseTask      28
     mschAddTask         172
     ?Subroutine1          5
     mschRemoveTask      110
     mschRescheduleTask   98
     _A_IEN0               1

 
 537 bytes in segment NEAR_CODE
 212 bytes in segment PM0_XDATA
   1 byte  in segment SFR_AN
 
 537 bytes of CODE  memory
   0 bytes of DATA  memory (+ 1 byte shared)
 212 bytes of XDATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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