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

📄 osal_tasks.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   00000D   A3           INC     DPTR
   \   00000E   A3           INC     DPTR
   \   00000F   E0           MOVX    A,@DPTR
   \   000010   FC           MOV     R4,A
   \   000011   A3           INC     DPTR
   \   000012   E0           MOVX    A,@DPTR
   \   000013   FD           MOV     R5,A
   \   000014   A3           INC     DPTR
   \   000015   E0           MOVX    A,@DPTR
   \   000016   FE           MOV     R6,A
   \   000017   EC           MOV     A,R4
   \   000018   4D           ORL     A,R5
   \   000019   4E           ORL     A,R6
   \   00001A   6014         JZ      ??osalInitTasks_1
    164                activeTask->pfnInit( activeTask->taskID );
   \   00001C                ; Setup parameters for indirect call
   \   00001C   12....       LCALL   ?Subroutine1 & 0xFFFF
   \                     ??CrossCallReturnLabel_4:
   \   00001F   A3           INC     DPTR
   \   000020   A3           INC     DPTR
   \   000021   A3           INC     DPTR
   \   000022   A3           INC     DPTR
   \   000023   E0           MOVX    A,@DPTR
   \   000024   F9           MOV     R1,A
   \   000025   12....       LCALL   ?Subroutine1 & 0xFFFF
   \                     ??CrossCallReturnLabel_5:
   \   000028   E0           MOVX    A,@DPTR
   \   000029   8C82         MOV     DPL,R4
   \   00002B   8D83         MOV     DPH,R5
   \   00002D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    165          
    166              activeTask = activeTask->next;
   \                     ??osalInitTasks_1:
   \   000030   12....       LCALL   ?Subroutine2 & 0xFFFF
   \                     ??CrossCallReturnLabel_1:
   \   000033   E0           MOVX    A,@DPTR
   \   000034   F8           MOV     R0,A
   \   000035   A3           INC     DPTR
   \   000036   E0           MOVX    A,@DPTR
   \   000037   F9           MOV     R1,A
   \   000038   90....       MOV     DPTR,#activeTask
   \   00003B   E8           MOV     A,R0
   \   00003C   F0           MOVX    @DPTR,A
   \   00003D   A3           INC     DPTR
   \   00003E   E9           MOV     A,R1
   \   00003F   F0           MOVX    @DPTR,A
    167            }
   \   000040   90....       MOV     DPTR,#activeTask
   \   000043   E0           MOVX    A,@DPTR
   \   000044   7002         JNZ     ??osalInitTasks_2
   \   000046   A3           INC     DPTR
   \   000047   E0           MOVX    A,@DPTR
   \                     ??osalInitTasks_2:
   \   000048   70C0         JNZ     ??osalInitTasks_0
    168          
    169            activeTask = (osalTaskRec_t *)NULL;
    170          }
   \   00004A   7F01         MOV     R7,#0x1
   \   00004C   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine2:
   \   000000   90....       MOV     DPTR,#activeTask
   \   000003   E0           MOVX    A,@DPTR
   \   000004   F8           MOV     R0,A
   \   000005   A3           INC     DPTR
   \   000006   E0           MOVX    A,@DPTR
   \   000007   F583         MOV     DPH,A
   \   000009   8882         MOV     DPL,R0
   \   00000B   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   90....       MOV     DPTR,#(activeTask + 1)
   \   000003   E0           MOVX    A,@DPTR
   \   000004   F583         MOV     DPH,A
   \   000006   8882         MOV     DPL,R0
   \   000008   80..         SJMP    ?Subroutine4
    171          
    172          /*********************************************************************
    173           * @fn      osalNextActiveTask
    174           *
    175           * @brief   This function will return the next active task.
    176           *
    177           * NOTE:    Task queue is in priority order. We can stop at the
    178           *          first task that is "ready" (events element non-zero)
    179           *
    180           * @param   none
    181           *
    182           * @return  pointer to the found task, NULL if not found
    183           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    184          osalTaskRec_t *osalNextActiveTask( void )
   \                     osalNextActiveTask:
    185          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    186            osalTaskRec_t *srchTask;
    187          
    188            // Start at the beginning
    189            srchTask = tasksHead;
   \   000004   90....       MOV     DPTR,#tasksHead
   \   000007   8004         SJMP    ??osalNextActiveTask_0
    190          
    191            // When found or not
    192            while ( srchTask )  {
    193                if (srchTask->events)  {
    194          		  // task is highest priority that is ready
    195                    return srchTask;
    196                }
    197                srchTask = srchTask->next;
   \                     ??osalNextActiveTask_1:
   \   000009   8A82         MOV     DPL,R2
   \   00000B   8B83         MOV     DPH,R3
   \                     ??osalNextActiveTask_0:
   \   00000D   E0           MOVX    A,@DPTR
   \   00000E   FA           MOV     R2,A
   \   00000F   A3           INC     DPTR
   \   000010   E0           MOVX    A,@DPTR
   \   000011   FB           MOV     R3,A
   \   000012   EA           MOV     A,R2
   \   000013   7001         JNZ     ??osalNextActiveTask_2
   \   000015   EB           MOV     A,R3
   \                     ??osalNextActiveTask_2:
   \   000016   6017         JZ      ??osalNextActiveTask_3
   \   000018   8A82         MOV     DPL,R2
   \   00001A   8B83         MOV     DPH,R3
   \   00001C   A3           INC     DPTR
   \   00001D   A3           INC     DPTR
   \   00001E   A3           INC     DPTR
   \   00001F   A3           INC     DPTR
   \   000020   A3           INC     DPTR
   \   000021   A3           INC     DPTR
   \   000022   A3           INC     DPTR
   \   000023   A3           INC     DPTR
   \   000024   A3           INC     DPTR
   \   000025   A3           INC     DPTR
   \   000026   E0           MOVX    A,@DPTR
   \   000027   7002         JNZ     ??osalNextActiveTask_4
   \   000029   A3           INC     DPTR
   \   00002A   E0           MOVX    A,@DPTR
   \                     ??osalNextActiveTask_4:
   \   00002B   60DC         JZ      ??osalNextActiveTask_1
   \   00002D   8004         SJMP    ??osalNextActiveTask_5
    198            }
    199            return NULL;
   \                     ??osalNextActiveTask_3:
   \   00002F   7A00         MOV     R2,#0x0
   \   000031   7B00         MOV     R3,#0x0
   \                     ??osalNextActiveTask_5:
   \   000033   02....       LJMP    ?Subroutine3 & 0xFFFF
    200          }
    201          
    202          
    203          /*********************************************************************
    204           * @fn      osalFindTask
    205           *
    206           * @brief   This function will return a task pointer to the task
    207           *          found with the passed in task ID.
    208           *
    209           * @param   taskID - task ID to look for
    210           *
    211           * @return  pointer to the found task, NULL if not found
    212           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    213          osalTaskRec_t *osalFindTask( byte taskID )
   \                     osalFindTask:
    214          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    215            osalTaskRec_t *srchTask;
    216          
    217            // Start at the beginning
    218            srchTask = tasksHead;
   \   000004   90....       MOV     DPTR,#tasksHead
   \   000007   8004         SJMP    ??osalFindTask_0
    219          
    220            // When found or not
    221            while ( srchTask )
    222            {
    223              // Look for any activity
    224              if (  srchTask->taskID == taskID  )
    225                return ( srchTask );
    226          
    227              srchTask = srchTask->next;
   \                     ??osalFindTask_1:
   \   000009   8A82         MOV     DPL,R2
   \   00000B   8B83         MOV     DPH,R3
   \                     ??osalFindTask_0:
   \   00000D   E0           MOVX    A,@DPTR
   \   00000E   FA           MOV     R2,A
   \   00000F   A3           INC     DPTR
   \   000010   E0           MOVX    A,@DPTR
   \   000011   FB           MOV     R3,A
   \   000012   EA           MOV     A,R2
   \   000013   7001         JNZ     ??osalFindTask_2
   \   000015   EB           MOV     A,R3
   \                     ??osalFindTask_2:
   \   000016   6012         JZ      ??osalFindTask_3
   \   000018   8A82         MOV     DPL,R2
   \   00001A   8B83         MOV     DPH,R3
   \   00001C   A3           INC     DPTR
   \   00001D   A3           INC     DPTR
   \   00001E   A3           INC     DPTR
   \   00001F   A3           INC     DPTR
   \   000020   A3           INC     DPTR
   \   000021   A3           INC     DPTR
   \   000022   A3           INC     DPTR
   \   000023   A3           INC     DPTR
   \   000024   E0           MOVX    A,@DPTR
   \   000025   69           XRL     A,R1
   \   000026   70E1         JNZ     ??osalFindTask_1
   \   000028   8004         SJMP    ??osalFindTask_4
    228            }
    229          
    230            return ( (osalTaskRec_t *)NULL );
   \                     ??osalFindTask_3:
   \   00002A   7A00         MOV     R2,#0x0
   \   00002C   7B00         MOV     R3,#0x0
   \                     ??osalFindTask_4:
   \   00002E   02....       LJMP    ?Subroutine3 & 0xFFFF
    231          }
    232          
    233          /*********************************************************************
    234          *********************************************************************/

   Maximum stack usage in bytes:

     Function            ISTACK PSTACK XSTACK
     --------            ------ ------ ------
     osalFindTask            2      0      0
     osalInitTasks           0      0      9
     osalNextActiveTask      2      0      0
     osalTaskAdd             1      0     21
       -> osal_mem_alloc     0      0     36
     osalTaskInit            2      0      0


   Segment part sizes:

     Function/Label     Bytes
     --------------     -----
     tasksHead             2
     activeTask            2
     taskIDs               1
     osalTaskInit         21
     ?Subroutine3          7
     osalTaskAdd         244
     ?Subroutine0          6
     ?Subroutine4          5
     osalInitTasks        79
     ?Subroutine2         12
     ?Subroutine1         10
     osalNextActiveTask   54
     osalFindTask         49

 
 487 bytes in segment BANKED_CODE
   5 bytes in segment XDATA_Z
 
 487 bytes of CODE  memory
   5 bytes of XDATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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