📄 osal_tasks.s51
字号:
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT SameValue
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon1
EXTERN osal_mem_alloc
FUNCTION osal_mem_alloc,0202H
ARGFRAME XSTACK, 18, STACK
// C:\Texas Instruments\ZStack-1.4.2-1.1.0\Components\osal\common\OSAL_Tasks.c
// 1 /*********************************************************************
// 2 Filename: OSAL_Tasks.c
// 3 Revised: $Date: 2006-04-06 08:19:08 -0700 (Thu, 06 Apr 2006) $
// 4 Revision: $Revision: 10396 $
// 5
// 6 Description:
// 7
// 8 This file contains the OSAL Task definition and manipulation
// 9 functions.
// 10
// 11 Notes:
// 12
// 13 Copyright (c) 2006 by Texas Instruments, Inc.
// 14 All Rights Reserved. Permission to use, reproduce, copy, prepare
// 15 derivative works, modify, distribute, perform, display or sell this
// 16 software and/or its documentation for any purpose is prohibited
// 17 without the express written consent of Texas Instruments, Inc.
// 18 *********************************************************************/
// 19
// 20
// 21 /*********************************************************************
// 22 * INCLUDES
// 23 */
// 24 #include "ZComDef.h"
// 25 #include "OSAL.h"
// 26 #include "OSAL_Tasks.h"
// 27 #include "OSAL_Custom.h"
// 28
// 29
// 30 /*********************************************************************
// 31 * MACROS
// 32 */
// 33
// 34 /*********************************************************************
// 35 * CONSTANTS
// 36 */
// 37
// 38
// 39 /*********************************************************************
// 40 * TYPEDEFS
// 41 */
// 42
// 43 /*********************************************************************
// 44 * GLOBAL VARIABLES
// 45 */
// 46
// 47 // Task Control
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 48 osalTaskRec_t *tasksHead;
tasksHead:
DS 2
// 49
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 50 osalTaskRec_t *activeTask;
activeTask:
DS 2
// 51
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 52 byte taskIDs;
taskIDs:
DS 1
// 53
// 54 /*********************************************************************
// 55 * EXTERNAL VARIABLES
// 56 */
// 57
// 58 /*********************************************************************
// 59 * EXTERNAL FUNCTIONS
// 60 */
// 61
// 62 /*********************************************************************
// 63 * LOCAL VARIABLES
// 64 */
// 65
// 66 /*********************************************************************
// 67 * LOCAL FUNCTION PROTOTYPES
// 68 */
// 69
// 70 /*********************************************************************
// 71 * FUNCTIONS
// 72 *********************************************************************/
// 73
// 74 /*********************************************************************
// 75 * @fn osalTaskInit
// 76 *
// 77 * @brief Initialization for the Tasking System.
// 78 *
// 79 * @param none
// 80 *
// 81 * @return
// 82 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 83 void osalTaskInit( void )
osalTaskInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function osalTaskInit
// 84 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 85 tasksHead = (osalTaskRec_t *)NULL;
MOV DPTR,#tasksHead
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 86 activeTask = (osalTaskRec_t *)NULL;
MOV DPTR,#activeTask
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 87 taskIDs = 0;
MOV DPTR,#taskIDs
MOVX @DPTR,A
CFI EndBlock cfiBlock0
// 88 }
REQUIRE ?Subroutine3
; // Fall through to label ?Subroutine3
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine3:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock1
// 89
// 90 /***************************************************************************
// 91 * @fn osalTaskAdd
// 92 *
// 93 * @brief Add a task to the task list. Keep task queue in priority order.
// 94 *
// 95 * @param none
// 96 *
// 97 * @return
// 98 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 99 void osalTaskAdd( pTaskInitFn pfnInit,
osalTaskAdd:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function osalTaskAdd
// 100 pTaskEventHandlerFn pfnEventProcessor,
// 101 byte taskPriority)
// 102 {
FUNCALL osalTaskAdd, osal_mem_alloc
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
MOV A,#-0xf
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 3
MOV A,#-0x3
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV A,R4
MOV R6,A
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 2,A
// 103 osalTaskRec_t *newTask;
// 104 osalTaskRec_t *srchTask;
// 105 osalTaskRec_t **ptr;
// 106
// 107 newTask = osal_mem_alloc( sizeof( osalTaskRec_t ) );
; Setup parameters for call to function osal_mem_alloc
MOV R2,#0xc
MOV R3,#0x0
MOV DPTR,#(osal_mem_alloc & 0xffff)
MOV A,#((osal_mem_alloc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 108 if ( newTask )
MOV A,R2
JNZ ??osalTaskAdd_0
MOV A,R3
??osalTaskAdd_0:
JNZ $+5
LJMP ??osalTaskAdd_1 & 0xFFFF
// 109 {
// 110 // Fill in new task
// 111 newTask->pfnInit = pfnInit;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV ?V0 + 4,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 5,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 6,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
MOV A,?V0 + 4
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 5
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 6
LCALL ?Subroutine0 & 0xFFFF
// 112 newTask->pfnEventProcessor = pfnEventProcessor;
??CrossCallReturnLabel_2:
MOV A,?V0 + 0
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 1
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 2
MOVX @DPTR,A
// 113 newTask->taskID = taskIDs++;
MOV DPTR,#taskIDs
MOVX A,@DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
MOV DPTR,#taskIDs
MOVX A,@DPTR
INC A
MOVX @DPTR,A
// 114 newTask->taskPriority = taskPriority;
MOV A,R6
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -