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

📄 mac_rx.s51

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