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

📄 mac_rx.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  164 static uint8  rxNextLen;
??rxNextLen:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  165 static uint8  rxPayloadLen;
??rxPayloadLen:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  166 static uint8  rxFilter;
??rxFilter:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  167 static uint8  rxPromiscuousMode;
??rxPromiscuousMode:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  168 static uint8  rxIsrActiveFlag;
??rxIsrActiveFlag:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  169 static uint8  rxResetFlag;
??rxResetFlag:
        DS 1
//  170 
//  171 
//  172 /**************************************************************************************************
//  173  * @fn          macRxInit
//  174  *
//  175  * @brief       Initialize receive variable states.
//  176  *
//  177  * @param       none
//  178  *
//  179  * @return      none
//  180  **************************************************************************************************
//  181  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  182 void macRxInit(void)
macRxInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function macRxInit
//  183 {
        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
//  184   macRxFilter          = RX_FILTER_OFF;
        CLR	A
        MOV	DPTR,#macRxFilter
        MOVX	@DPTR,A
//  185   rxPromiscuousMode    = PROMISCUOUS_MODE_OFF;
        MOV	DPTR,#??rxPromiscuousMode
        MOVX	@DPTR,A
//  186   pRxBuf               = NULL; /* required for macRxReset() to function correctly */
        MOV	DPTR,#??pRxBuf
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  187   macRxActive          = MAC_RX_ACTIVE_NO_ACTIVITY;
        MOV	DPTR,#macRxActive
        LCALL	?Subroutine1 & 0xFFFF
//  188   pFuncRxState         = &rxStartIsr;
//  189   macRxOutgoingAckFlag = 0;
??CrossCallReturnLabel_2:
        CLR	A
        MOV	DPTR,#macRxOutgoingAckFlag
        MOVX	@DPTR,A
//  190   rxIsrActiveFlag      = 0;
        MOV	DPTR,#??rxIsrActiveFlag
        MOVX	@DPTR,A
//  191   rxResetFlag          = 0;
        MOV	DPTR,#??rxResetFlag
        MOVX	@DPTR,A
//  192 }
        LJMP	??Subroutine20_0 & 0xFFFF
        CFI EndBlock cfiBlock0
//  193 
//  194 
//  195 /**************************************************************************************************
//  196  * @fn          macRxRadioPowerUpInit
//  197  *
//  198  * @brief       Initialization for after radio first powers up.
//  199  *
//  200  * @param       none
//  201  *
//  202  * @return      none
//  203  **************************************************************************************************
//  204  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  205 void macRxRadioPowerUpInit(void)
macRxRadioPowerUpInit:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function macRxRadioPowerUpInit
//  206 {
        FUNCALL macRxRadioPowerUpInit, macMcuOrRFIM
        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
//  207   /* set threshold at initial value */
//  208   MAC_RADIO_SET_RX_THRESHOLD(RX_THRESHOLD_START_LEN);
        MOV	A,#0x5
        MOV	DPTR,#-0x20b1
        MOVX	@DPTR,A
//  209 
//  210   /* clear any accidental threshold interrupt that happened as part of power up sequence */
//  211   MAC_RADIO_CLEAR_RX_THRESHOLD_INTERRUPT_FLAG();
        MOV	0xe9,#-0x21
//  212 
//  213   /* enable threshold interrupts */
//  214   MAC_RADIO_ENABLE_RX_THRESHOLD_INTERRUPT();
        ; Setup parameters for call to function macMcuOrRFIM
        MOV	R1,#0x20
        MOV	DPTR,#(macMcuOrRFIM & 0xffff)
        MOV	A,#((macMcuOrRFIM >> 16) & 0xff)
        LJMP	?Subroutine20 & 0xFFFF
        CFI EndBlock cfiBlock1
//  215 }
//  216 
//  217 
//  218 /**************************************************************************************************
//  219  * @fn          macRxTxReset
//  220  *
//  221  * @brief       Reset the receive state.
//  222  *
//  223  * @param       none
//  224  *
//  225  * @return      none
//  226  **************************************************************************************************
//  227  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  228 void macRxTxReset(void)
macRxTxReset:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function macRxTxReset
//  229 {
        FUNCALL macRxTxReset, macRxHardDisable
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL macRxTxReset, macRxPromiscuousMode
        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
//  230   /* forces receiver off, cleans up by calling macRxHaltCleanup() and macTxHaltCleanup() */
//  231   macRxHardDisable();
        ; Setup parameters for call to function macRxHardDisable
        MOV	DPTR,#(macRxHardDisable & 0xffff)
        MOV	A,#((macRxHardDisable >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  232 
//  233   /*
//  234    *   Note : transmit does not require any reset logic
//  235    *          beyond what macRxHardDisable() provides.
//  236    */
//  237 
//  238   /* restore deault filter mode to off */
//  239   macRxFilter = RX_FILTER_OFF;
        CLR	A
        MOV	DPTR,#macRxFilter
        MOVX	@DPTR,A
//  240 
//  241   /* return promiscuous mode to default off state */
//  242   macRxPromiscuousMode(MAC_PROMISCUOUS_MODE_OFF);
        ; Setup parameters for call to function macRxPromiscuousMode
        MOV	R1,A
        MOV	DPTR,#(macRxPromiscuousMode & 0xffff)
        MOV	A,#((macRxPromiscuousMode >> 16) & 0xff)
        SJMP	?Subroutine20
        CFI EndBlock cfiBlock2
//  243 }
//  244 
//  245 
//  246 /**************************************************************************************************
//  247  * @fn          macRxHaltCleanup
//  248  *
//  249  * @brief       Cleanup up the receive logic after receiver is forced off.
//  250  *
//  251  * @param       none
//  252  *
//  253  * @return      none
//  254  **************************************************************************************************
//  255  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  256 void macRxHaltCleanup(void)
macRxHaltCleanup:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function macRxHaltCleanup
//  257 {
        FUNCALL macRxHaltCleanup, ??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
//  258   rxResetFlag = 1;
        MOV	A,#0x1
        MOV	DPTR,#??rxResetFlag
        MOVX	@DPTR,A
//  259   if (!rxIsrActiveFlag)
        MOV	DPTR,#??rxIsrActiveFlag
        MOVX	A,@DPTR
        JNZ	??macRxHaltCleanup_0
//  260   {
//  261     rxHaltCleanupFinalStep();
        ; Setup parameters for call to function rxHaltCleanupFinalStep
        MOV	DPTR,#(??rxHaltCleanupFinalStep & 0xffff)
        MOV	A,#((??rxHaltCleanupFinalStep >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  262     rxResetFlag = 0;
        CLR	A
        MOV	DPTR,#??rxResetFlag
        MOVX	@DPTR,A
//  263   }
//  264 }
??macRxHaltCleanup_0:
        SJMP	??Subroutine20_0
        CFI EndBlock cfiBlock3
//  265 
//  266 
//  267 /*=================================================================================================
//  268  * @fn          rxHaltCleanupFinalStep
//  269  *
//  270  * @brief       Required cleanup if receiver is halted in the middle of a receive.
//  271  *
//  272  * @param       none
//  273  *
//  274  * @return      none
//  275  *=================================================================================================
//  276  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  277 static void rxHaltCleanupFinalStep(void)
??rxHaltCleanupFinalStep:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function ??rxHaltCleanupFinalStep
//  278 {
        FUNCALL ??rxHaltCleanupFinalStep, macMcuAndRFIM
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??rxHaltCleanupFinalStep, macDataRxMemFree
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??rxHaltCleanupFinalStep, ??rxPostRxUpdates
        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
//  279   /* cancel any upcoming ACK transmit complete callback */
//  280   MAC_RADIO_CANCEL_ACK_TX_DONE_CALLBACK();
        ; Setup parameters for call to function macMcuAndRFIM
        MOV	R1,#-0x11
        MOV	DPTR,#(macMcuAndRFIM & 0xffff)
        MOV	A,#((macMcuAndRFIM >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  281 
//  282   /* set start of frame threshold */
//  283   MAC_RADIO_SET_RX_THRESHOLD(RX_THRESHOLD_START_LEN);
        MOV	A,#0x5
        MOV	DPTR,#-0x20b1
        MOVX	@DPTR,A
//  284 
//  285   /* flush the receive FIFO */
//  286   MAC_RADIO_FLUSH_RX_FIFO();
        MOV	0xe1,#-0x1a
        MOV	0xe1,#-0x1a
//  287 
//  288   /* clear any receive interrupt that happened to squeak through */
//  289   MAC_RADIO_CLEAR_RX_THRESHOLD_INTERRUPT_FLAG();
        MOV	0xe9,#-0x21
//  290 
//  291   /* if data buffer has been allocated, free it */
//  292   if (pRxBuf != NULL)
        MOV	DPTR,#??pRxBuf
        MOVX	A,@DPTR
        JNZ	??rxHaltCleanupFinalStep_1
        INC	DPTR
        MOVX	A,@DPTR

⌨️ 快捷键说明

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