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

📄 zmac_cb.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  147 
//  148   uint8 macEvent = pData->hdr.event;
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        MOV	?V0 + 6,A
//  149   uint16 msgLen = zmacCBSizeTable[macEvent] + getZMacDynamicSize(macEvent, pData);
        LCALL	?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_5:
        MOV	R6,A
        ; Setup parameters for call to function getZMacDynamicSize
        MOV	R1,?V0 + 6
        MOV	DPTR,#(getZMacDynamicSize & 0xffff)
        MOV	A,#((getZMacDynamicSize >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
        ADD	A,R6
        MOV	R6,A
        MOV	A,R3
        ADDC	A,#0x0
        MOV	R7,A
//  150   macCbackEvent_t *msgPtr;
//  151 
//  152   /* Allocate osal msg buffer */
//  153   if (msgLen > 0)
        MOV	A,R6
        JNZ	??MAC_CbackEvent_0
        MOV	A,R7
??MAC_CbackEvent_0:
        JNZ	$+5
        LJMP	??MAC_CbackEvent_1 & 0xFFFF
//  154   {
//  155     if (macEvent == MAC_MCPS_DATA_IND)
        MOV	A,#0xd
        XRL	A,?V0 + 6
        JNZ	??MAC_CbackEvent_2
//  156       msgPtr = pData;
        MOV	R6,?V0 + 4
        MOV	R7,?V0 + 5
        SJMP	??MAC_CbackEvent_3
//  157     else
//  158     {
//  159       if ( macEvent == MAC_MCPS_DATA_CNF )
??MAC_CbackEvent_2:
        MOV	A,#0xc
        XRL	A,?V0 + 6
        JNZ	??MAC_CbackEvent_4
//  160       {
//  161         osal_msg_deallocate( (uint8*)pData->dataCnf.pDataReq );
        ; Setup parameters for call to function osal_msg_deallocate
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(osal_msg_deallocate & 0xffff)
        MOV	A,#((osal_msg_deallocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  162       }
//  163       msgPtr = (macCbackEvent_t *)osal_msg_allocate(msgLen);
??MAC_CbackEvent_4:
        ; Setup parameters for call to function osal_msg_allocate
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#(osal_msg_allocate & 0xffff)
        MOV	A,#((osal_msg_allocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	R6,?V0 + 0
        MOV	R7,?V0 + 1
//  164     }
//  165 
//  166     if (msgPtr)
??MAC_CbackEvent_3:
        MOV	A,R6
        JNZ	??MAC_CbackEvent_5
        MOV	A,R7
??MAC_CbackEvent_5:
        JNZ	$+5
        LJMP	??MAC_CbackEvent_1 & 0xFFFF
//  167     {
//  168       if (macEvent != MAC_MCPS_DATA_IND)
        MOV	A,#0xd
        XRL	A,?V0 + 6
        JZ	??MAC_CbackEvent_6
//  169         osal_memcpy(msgPtr, pData, zmacCBSizeTable[macEvent]);
        ; Setup parameters for call to function osal_memcpy
        MOV	?V0 + 0,?V0 + 4
        MOV	?V0 + 1,?V0 + 5
        MOV	?V0 + 2,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	?V0 + 0,?V0 + 6
        MOV	A,?V0 + 0
        LCALL	?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_6:
        MOV	R4,A
        MOV	R5,#0x0
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#(osal_memcpy & 0xffff)
        MOV	A,#((osal_memcpy >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
//  170 
//  171       switch (macEvent) {
??MAC_CbackEvent_6:
        MOV	A,?V0 + 6
        LCALL	?UC_SWITCH_SPARSE
`?<Jumptable for MAC_CbackEvent>_0`:
        DB        0
        DB        4
        DB        5
        DW        ??MAC_CbackEvent_7
        DB        7
        DW        ??MAC_CbackEvent_8
        DB        8
        DW        ??MAC_CbackEvent_9
        DB        13
        DW        ??MAC_CbackEvent_10
        DW        ??MAC_CbackEvent_11
??MAC_CbackEvent_7:
        LCALL	?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_3:
        LCALL	??Subroutine0_0 & 0xFFFF
??CrossCallReturnLabel_2:
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	R4,#0x21
        MOV	R5,#0x0
        MOV	R2,?V0 + 4
        MOV	R3,?V0 + 5
//  172       case MAC_MLME_BEACON_NOTIFY_IND:
//  173         {
//  174           macMlmeBeaconNotifyInd_t *pBeacon;
//  175 
//  176           pBeacon = (macMlmeBeaconNotifyInd_t*)msgPtr;
//  177 
//  178           osal_memcpy(pBeacon + 1, pBeacon->pPanDesc, sizeof(macPanDesc_t));
        MOV	DPTR,#(osal_memcpy & 0xffff)
        MOV	A,#((osal_memcpy >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
//  179           pBeacon->pPanDesc = (macPanDesc_t *) (pBeacon + 1);
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOV	A,?V0 + 4
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,?V0 + 5
        MOVX	@DPTR,A
//  180           osal_memcpy(pBeacon->pPanDesc + 1, pBeacon->pSdu, pBeacon->sduLength);
        LCALL	?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_11:
        ; Setup parameters for call to function osal_memcpy
        MOV	DPL,?V0 + 4
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R4,A
        MOV	R5,#0x0
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        ADD	A,#0x21
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        LCALL	?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_13:
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
//  181           pBeacon->pSdu = (uint8 *) (pBeacon->pPanDesc + 1);
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        ADD	A,#0x21
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        LCALL	?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_9:
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        LJMP	??MAC_CbackEvent_12 & 0xFFFF
//  182         }
//  183         break;
//  184 
//  185       case MAC_MLME_SCAN_CNF:
//  186         {
//  187           macMlmeScanCnf_t *pScan = (macMlmeScanCnf_t*)msgPtr;
//  188 
//  189           if (ZMac_ScanBuf != NULL)
??MAC_CbackEvent_8:
        MOV	DPTR,#ZMac_ScanBuf
        MOVX	A,@DPTR
        JNZ	??MAC_CbackEvent_13
        INC	DPTR
        MOVX	A,@DPTR
??MAC_CbackEvent_13:
        JNZ	$+5
        LJMP	??MAC_CbackEvent_11 & 0xFFFF
//  190           {
//  191             if (pScan->scanType == ZMAC_ED_SCAN)
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        JNZ	??MAC_CbackEvent_14
//  192             {
//  193               pScan->result.pEnergyDetect = (uint8*) (pScan + 1);
        LCALL	?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_12:
        MOV	A,R6
        ADD	A,#0xb
        MOV	R0,A
        MOV	A,R7
        LCALL	?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_10:
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        LCALL	?Subroutine0 & 0xFFFF
//  194               osal_memcpy(pScan->result.pEnergyDetect, ZMac_ScanBuf, ZMAC_ED_SCAN_MAXCHANNELS);
??CrossCallReturnLabel_0:
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	R4,#0x1b
        MOV	R5,#0x0
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        SJMP	??MAC_CbackEvent_15
        CFI CFA_XSP16 add(XSP16, 21)
//  195             }
//  196             else
//  197             {
//  198               pScan->result.pPanDescriptor = (macPanDesc_t*) (pScan + 1);
??MAC_CbackEvent_14:
        LCALL	?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_4:
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOV	A,?V0 + 4
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,?V0 + 5
        LCALL	?Subroutine0 & 0xFFFF
//  199               osal_memcpy(pScan + 1, ZMac_ScanBuf, sizeof( ZMacPanDesc_t ) * pScan->resultListSize);
??CrossCallReturnLabel_1:
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	B,#0x21
        MUL	AB
        MOV	R4,A

⌨️ 快捷键说明

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