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

📄 osal_tasks.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
        INC	DPTR
        LCALL	?Subroutine0 & 0xFFFF
//  115       newTask->events            = 0;
??CrossCallReturnLabel_3:
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  116       newTask->next              = (osalTaskRec_t *)NULL;
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  117 
//  118       // 'ptr' is the address of the pointer to the new task when the new task is
//  119       // inserted. Initially it is set to address of 'tasksHead' in case the new
//  120       // task is higher priority than the existing head or the queue is empty.
//  121       ptr      = &tasksHead;
        MOV	R4,#(tasksHead & 0xff)
        MOV	R5,#((tasksHead >> 8) & 0xff)
//  122       srchTask = tasksHead;
        MOV	DPTR,#tasksHead
        SJMP	??osalTaskAdd_2
//  123       while (srchTask)  {
//  124           if (newTask->taskPriority > srchTask->taskPriority)  {
//  125               // insert here. New task has a higher priority than the task
//  126               // with which is being compared and a lower or equal priority
//  127               // to any task that precedes it.
//  128               newTask->next = srchTask;
//  129               *ptr          = newTask;
//  130               return;
//  131           }
//  132           // set 'ptr' to address of the pointer to 'next' in the current
//  133           // (soon to be previous) task control block
//  134           ptr      = &srchTask->next;
??osalTaskAdd_3:
        MOV	A,R0
        MOV	R4,A
        MOV	A,R1
        MOV	R5,A
//  135           srchTask = srchTask->next;
        MOV	DPL,R0
        MOV	DPH,R1
??osalTaskAdd_2:
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	A,R0
        JNZ	??osalTaskAdd_4
        MOV	A,R1
??osalTaskAdd_4:
        JZ	??osalTaskAdd_5
        MOV	DPL,R0
        MOV	DPH,R1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,R6
        JNC	??osalTaskAdd_3
        MOV	DPL,R2
        MOV	DPH,R3
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  136       }
//  137 
//  138 	  // We're at the end of the current queue. New task is not higher
//  139 	  // priority than any other already in the list. Make it the tail.
//  140       // (It is also the head if the queue was initially empty.)
//  141       *ptr = newTask;
??osalTaskAdd_5:
        MOV	A,R2
        MOV	R0,A
        MOV	A,R3
        MOV	R1,A
        MOV	DPL,R4
        MOV	DPH,R5
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
??osalTaskAdd_1:
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 15)
        MOV	R7,#0x7
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  142   }
//  143   return;
//  144 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiCond3 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_3
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 18)
        CFI Block cfiCond4 Using cfiCommon0
        CFI (cfiCond4) NoFunction
        CFI (cfiCond4) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond4) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond4) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond4) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond4) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond4) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond4) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond4) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond4) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond4) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond4) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond4) CFA_SP SP+0
        CFI (cfiCond4) CFA_XSP16 add(XSP16, 18)
        CFI Block cfiPicker5 Using cfiCommon1
        CFI (cfiPicker5) NoFunction
        CFI (cfiPicker5) Picker
        MOVX	@DPTR,A
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        CFI EndBlock cfiCond3
        CFI EndBlock cfiCond4
        CFI EndBlock cfiPicker5
        REQUIRE ?Subroutine4
        ; // Fall through to label ?Subroutine4

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine4:
        CFI Block cfiCond6 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_3
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 18)
        CFI Block cfiCond7 Using cfiCommon0
        CFI (cfiCond7) NoFunction
        CFI (cfiCond7) Conditional ??CrossCallReturnLabel_4
        CFI (cfiCond7) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond7) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond7) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond7) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond7) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond7) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond7) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond7) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond7) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond7) CFA_SP SP+0
        CFI (cfiCond7) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond8 Using cfiCommon0
        CFI (cfiCond8) NoFunction
        CFI (cfiCond8) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond8) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond8) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond8) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond8) CFA_SP SP+0
        CFI (cfiCond8) CFA_XSP16 add(XSP16, 18)
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_5
        CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond9) CFA_SP SP+0
        CFI (cfiCond9) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker10 Using cfiCommon1
        CFI (cfiPicker10) NoFunction
        CFI (cfiPicker10) Picker
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        RET
        CFI EndBlock cfiCond6
        CFI EndBlock cfiCond7
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9
        CFI EndBlock cfiPicker10
//  145 
//  146 /*********************************************************************
//  147  * @fn      osalInitTasks
//  148  *
//  149  * @brief   Call each of the tasks initailization functions.
//  150  *
//  151  * @param   none
//  152  *
//  153  * @return  none
//  154  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  155 void osalInitTasks( void )
osalInitTasks:
        CFI Block cfiBlock11 Using cfiCommon0
        CFI Function osalInitTasks
//  156 {
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
//  157   // Start at the beginning
//  158   activeTask = tasksHead;
        MOV	DPTR,#tasksHead
        SJMP	??CrossCallReturnLabel_1
//  159 
//  160   // Stop at the end
//  161   while ( activeTask )
//  162   {
//  163     if (  activeTask->pfnInit  )
??osalInitTasks_0:
        LCALL	?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_0:
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R4,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R5,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R6,A
        MOV	A,R4
        ORL	A,R5
        ORL	A,R6
        JZ	??osalInitTasks_1
//  164       activeTask->pfnInit( activeTask->taskID );
        ; Setup parameters for indirect call
        LCALL	?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_4:

⌨️ 快捷键说明

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