📄 mac_rx.s51
字号:
??rxHaltCleanupFinalStep_1:
JZ ??rxHaltCleanupFinalStep_2
// 293 {
// 294 MEM_FREE((uint8 *) pRxBuf);
; Setup parameters for call to function macDataRxMemFree
MOV DPTR,#??pRxBuf
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#(macDataRxMemFree & 0xffff)
MOV A,#((macDataRxMemFree >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 295 }
// 296 pRxBuf = NULL; /* needed to indicate buffer is no longer allocated */
??rxHaltCleanupFinalStep_2:
MOV DPTR,#??pRxBuf
CLR A
MOVX @DPTR,A
INC DPTR
LCALL ?Subroutine1 & 0xFFFF
// 297
// 298 pFuncRxState = &rxStartIsr;
// 299
// 300 /* if receive was active, perform the post receive updates */
// 301 if (macRxActive || macRxOutgoingAckFlag)
??CrossCallReturnLabel_3:
MOV DPTR,#macRxActive
MOVX A,@DPTR
JNZ ??rxHaltCleanupFinalStep_3
MOV DPTR,#macRxOutgoingAckFlag
MOVX A,@DPTR
JZ ??rxHaltCleanupFinalStep_4
// 302 {
// 303 macRxActive = MAC_RX_ACTIVE_NO_ACTIVITY;
??rxHaltCleanupFinalStep_3:
CLR A
MOV DPTR,#macRxActive
MOVX @DPTR,A
// 304 macRxOutgoingAckFlag = 0;
MOV DPTR,#macRxOutgoingAckFlag
MOVX @DPTR,A
// 305
// 306 rxPostRxUpdates();
; Setup parameters for call to function rxPostRxUpdates
MOV DPTR,#(??rxPostRxUpdates & 0xffff)
MOV A,#((??rxPostRxUpdates >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 307 }
// 308 }
??rxHaltCleanupFinalStep_4:
SJMP ??Subroutine20_0
CFI EndBlock cfiBlock4
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine20:
CFI Block cfiBlock5 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
LCALL ?BCALL ; Banked call to: DPTR()
??Subroutine20_0:
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock5
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond6 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_2
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
CFI Block cfiCond7 Using cfiCommon0
CFI (cfiCond7) NoFunction
CFI (cfiCond7) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond7) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond7) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond7) CFA_SP SP+-5
CFI Block cfiPicker8 Using cfiCommon1
CFI (cfiPicker8) NoFunction
CFI (cfiPicker8) Picker
LCALL ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_36:
RET
CFI EndBlock cfiCond6
CFI EndBlock cfiCond7
CFI EndBlock cfiPicker8
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine16:
CFI Block cfiCond9 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_0
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 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, 9)
CFI Block cfiCond10 Using cfiCommon0
CFI (cfiCond10) NoFunction
CFI (cfiCond10) Conditional ??CrossCallReturnLabel_36, ??CrossCallReturnLabel_2
CFI (cfiCond10) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond10) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond10) CFA_SP SP+-5
CFI Block cfiCond11 Using cfiCommon0
CFI (cfiCond11) NoFunction
CFI (cfiCond11) Conditional ??CrossCallReturnLabel_37, ??CrossCallReturnLabel_1
CFI (cfiCond11) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond11) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond11) CFA_SP SP+-5
CFI (cfiCond11) CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond12 Using cfiCommon0
CFI (cfiCond12) NoFunction
CFI (cfiCond12) Conditional ??CrossCallReturnLabel_36, ??CrossCallReturnLabel_3
CFI (cfiCond12) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond12) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond12) CFA_SP SP+-5
CFI Block cfiPicker13 Using cfiCommon1
CFI (cfiPicker13) NoFunction
CFI (cfiPicker13) Picker
MOVX @DPTR,A
MOV DPTR,#??pFuncRxState
MOV A,#(??rxStartIsr & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((??rxStartIsr >> 8) & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((??rxStartIsr >> 16) & 0xff)
MOVX @DPTR,A
RET
CFI EndBlock cfiCond9
CFI EndBlock cfiCond10
CFI EndBlock cfiCond11
CFI EndBlock cfiCond12
CFI EndBlock cfiPicker13
// 309
// 310
// 311 /**************************************************************************************************
// 312 * @fn macRxThresholdIsr
// 313 *
// 314 * @brief Interrupt service routine called when bytes in FIFO reach threshold value.
// 315 * It implements a state machine for receiving a packet.
// 316 *
// 317 * @param none
// 318 *
// 319 * @return none
// 320 **************************************************************************************************
// 321 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 322 void macRxThresholdIsr(void)
macRxThresholdIsr:
CFI Block cfiBlock14 Using cfiCommon0
CFI Function macRxThresholdIsr
// 323 {
FUNCALL macRxThresholdIsr, ??rxHaltCleanupFinalStep
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
// 324 /* if currently reseting, do not execute receive ISR logic */
// 325 if (rxResetFlag)
MOV DPTR,#??rxResetFlag
MOVX A,@DPTR
JNZ ??macRxThresholdIsr_0
// 326 {
// 327 return;
// 328 }
// 329
// 330 /*
// 331 * Call the function that handles the current receive state.
// 332 * A flag is set for the duration of the call to indicate
// 333 * the ISR is executing. This is necessary for the reset
// 334 * logic so it does not perform a reset in the middle of
// 335 * executing the ISR.
// 336 */
// 337 rxIsrActiveFlag = 1;
MOV A,#0x1
MOV DPTR,#??rxIsrActiveFlag
MOVX @DPTR,A
// 338 (*pFuncRxState)();
; Setup parameters for indirect call
MOV DPTR,#??pFuncRxState
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPL,R1
MOV DPH,R2
LCALL ?BCALL ; Banked call to: DPTR()
// 339 rxIsrActiveFlag = 0;
CLR A
MOV DPTR,#??rxIsrActiveFlag
MOVX @DPTR,A
// 340
// 341 /* if a reset occurred during the ISR, peform cleanup here */
// 342 if (rxResetFlag)
MOV DPTR,#??rxResetFlag
MOVX A,@DPTR
JZ ??macRxThresholdIsr_0
// 343 {
// 344 rxHaltCleanupFinalStep();
; Setup parameters for call to function rxHaltCleanupFinalStep
MOV DPTR,#(??rxHaltCleanupFinalStep & 0xffff)
MOV A,#((??rxHaltCleanupFinalStep >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 345 rxResetFlag = 0;
CLR A
MOV DPTR,#??rxResetFlag
MOVX @DPTR,A
??macRxThresholdIsr_0:
SJMP ??Subroutine20_0
CFI EndBlock cfiBlock14
// 346 }
// 347 }
// 348
// 349
// 350 /*=================================================================================================
// 351 * @fn rxStartIsr
// 352 *
// 353 * @brief First ISR state for receiving a packet - compute packet length, allocate
// 354 * buffer, initialize buffer. Acknowledgements are handled immediately without
// 355 * allocating a buffer.
// 356 *
// 357 * @param none
// 358 *
// 359 * @return none
// 360 *=================================================================================================
// 361 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 362 static void rxStartIsr(void)
??rxStartIsr:
CFI Block cfiBlock15 Using cfiCommon0
CFI Function ??rxStartIsr
// 363 {
FUNCALL ??rxStartIsr, halAssertHandler
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, ??rxPostRxUpdates
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macCspForceTxDoneIfPending
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMcuAndRFIM
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMemReadRxFifo
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMemReadRxFifo
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macTxAckReceivedCallback
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macTxAckNotReceivedCallback
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, ??rxDone
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macTxAckNotReceivedCallback
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macDataRxMemAlloc
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macRxCheckPendingCallback
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, ??rxDiscardFrame
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMcuWriteRFIF
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMcuOrRFIM
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMcuOverflowCapture
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, macMcuTimerCapture
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL ??rxStartIsr, ??rxPrepPayload
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, 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)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -