mac_backoff_timer.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,453 行 · 第 1/5 页

S51
1,453
字号
        ARGFRAME XSTACK, 12, STACK
        FUNCALL macBackoffTimerInit, macBackoffTimerSetRollover
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL macBackoffTimerInit, macMcuOrT2PEROF2
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        MOV	A,#-0xc
        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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 0
//  127   compareState = COMPARE_STATE_ROLLOVER;
        MOV	A,#0x1
        MOV	DPTR,#??compareState
        MOVX	@DPTR,A
//  128   MAC_RADIO_BACKOFF_SET_COUNT(0);
        ; Setup parameters for call to function macMcuOverflowSetCount
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	R2,?V0 + 0
        MOV	R3,?V0 + 1
        MOV	R4,?V0 + 2
        MOV	R5,?V0 + 3
        MOV	DPTR,#(macMcuOverflowSetCount & 0xffff)
        MOV	A,#((macMcuOverflowSetCount >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  129   macBackoffTimerSetRollover(MAC_BACKOFF_TIMER_DEFAULT_ROLLOVER);
        ; Setup parameters for call to function macBackoffTimerSetRollover
        MOV	DPTR,#__Constant_c0000
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	R2,?V0 + 0
        MOV	R3,?V0 + 1
        MOV	R4,?V0 + 2
        MOV	R5,?V0 + 3
        MOV	DPTR,#(macBackoffTimerSetRollover & 0xffff)
        MOV	A,#((macBackoffTimerSetRollover >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  130   MAC_RADIO_BACKOFF_COMPARE_CLEAR_INTERRUPT();
        MOV	0xc3,#-0x3d
//  131   MAC_RADIO_BACKOFF_COMPARE_ENABLE_INTERRUPT();
        ; Setup parameters for call to function macMcuOrT2PEROF2
        MOV	R1,#0x20
        MOV	DPTR,#(macMcuOrT2PEROF2 & 0xffff)
        MOV	A,#((macMcuOrT2PEROF2 >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  132 }
        LJMP	?Subroutine1 & 0xFFFF
        CFI EndBlock cfiBlock0
//  133 
//  134 
//  135 /**************************************************************************************************
//  136  * @fn          macBackoffTimerReset
//  137  *
//  138  * @brief       Resets backoff timer.
//  139  *
//  140  * @param       none
//  141  *
//  142  * @return      none
//  143  **************************************************************************************************
//  144  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  145 void macBackoffTimerReset(void)
macBackoffTimerReset:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function macBackoffTimerReset
//  146 {
        FUNCALL macBackoffTimerReset, macMcuAndT2PEROF2
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL macBackoffTimerReset, macBackoffTimerInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        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
//  147   MAC_RADIO_BACKOFF_COMPARE_DISABLE_INTERRUPT();
        ; Setup parameters for call to function macMcuAndT2PEROF2
        MOV	R1,#-0x21
        MOV	DPTR,#(macMcuAndT2PEROF2 & 0xffff)
        MOV	A,#((macMcuAndT2PEROF2 >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  148   macBackoffTimerInit();
        ; Setup parameters for call to function macBackoffTimerInit
        MOV	DPTR,#(macBackoffTimerInit & 0xffff)
        MOV	A,#((macBackoffTimerInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  149 }
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock1
//  150 
//  151 
//  152 /**************************************************************************************************
//  153  * @fn          macBackoffTimerSetRollover
//  154  *
//  155  * @brief       Set rollover count of backoff timer.
//  156  *
//  157  * @param       rolloverBackoff - backoff count where count is reset to zero
//  158  *
//  159  * @return      none
//  160  **************************************************************************************************
//  161  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  162 void macBackoffTimerSetRollover(uint32 rolloverBackoff)
macBackoffTimerSetRollover:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function macBackoffTimerSetRollover
//  163 {
        FUNCALL macBackoffTimerSetRollover, macMcuOverflowCount
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL macBackoffTimerSetRollover, halAssertHandler
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL macBackoffTimerSetRollover, macMcuOverflowSetCompare
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        MOV	A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 0
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,R4
        MOV	?V0 + 3,R5
//  164   halIntState_t  s;
//  165 
//  166   MAC_ASSERT(rolloverBackoff > MAC_RADIO_BACKOFF_COUNT());  /* rollover value must be greater than count */
        ; Setup parameters for call to function macMcuOverflowCount
        MOV	DPTR,#(macMcuOverflowCount & 0xffff)
        MOV	A,#((macMcuOverflowCount >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 4,R2
        MOV	?V0 + 5,R3
        MOV	?V0 + 6,R4
        MOV	?V0 + 7,R5
        MOV	R0,#?V0 + 0
        MOV	R1,#?V0 + 4
        LCALL	?UL_GT
        JC	??macBackoffTimerSetRollover_0
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  167 
//  168   HAL_ENTER_CRITICAL_SECTION(s);
??macBackoffTimerSetRollover_0:
        MOV	C,0xa8.7
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R6,A
        CLR	0xa8.7
//  169   backoffTimerRollover = rolloverBackoff;
        MOV	DPTR,#??backoffTimerRollover
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  170   MAC_RADIO_BACKOFF_SET_COMPARE(rolloverBackoff);
        ; Setup parameters for call to function macMcuOverflowSetCompare
        LJMP	?Subroutine2 & 0xFFFF
        CFI EndBlock cfiBlock2
//  171   HAL_EXIT_CRITICAL_SECTION(s);
//  172 }
//  173 
//  174 
//  175 /**************************************************************************************************
//  176  * @fn          macBackoffTimerSetCount
//  177  *
//  178  * @brief       Sets the count of the backoff timer.
//  179  *
//  180  * @param       backoff - new count
//  181  *
//  182  * @return      none
//  183  **************************************************************************************************
//  184  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  185 void macBackoffTimerSetCount(uint32 backoff)
macBackoffTimerSetCount:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function macBackoffTimerSetCount
//  186 {
        FUNCALL macBackoffTimerSetCount, halAssertHandler
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL macBackoffTimerSetCount, halAssertHandler
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL macBackoffTimerSetCount, macMcuOverflowSetCount
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        MOV	A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 0
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,R4
        MOV	?V0 + 3,R5
//  187   halIntState_t  s;
//  188 
//  189   MAC_ASSERT(compareState == COMPARE_STATE_ROLLOVER);   /* trigger cannot be active if changing count */
        MOV	DPTR,#??compareState
        MOVX	A,@DPTR
        XRL	A,#0x1
        JZ	??macBackoffTimerSetCount_0
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  190   MAC_ASSERT(backoff < backoffTimerRollover);  /* count must be less than rollover value */
??macBackoffTimerSetCount_0:
        MOV	DPTR,#??backoffTimerRollover
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?UL_GT
        JC	??macBackoffTimerSetCount_1
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  191 
//  192   HAL_ENTER_CRITICAL_SECTION(s);
??macBackoffTimerSetCount_1:
        MOV	C,0xa8.7
        CLR	A

⌨️ 快捷键说明

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