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

📄 osal_tasks.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
        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 + -