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 + -
显示快捷键?