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

📄 zmac_cb.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOV	R5,B
        MOV	R2,?V0 + 4
        MOV	R3,?V0 + 5
??MAC_CbackEvent_15:
        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)
//  200             }
//  201 
//  202             osal_mem_free(ZMac_ScanBuf);
        ; Setup parameters for call to function osal_mem_free
        MOV	DPTR,#ZMac_ScanBuf
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(osal_mem_free & 0xffff)
        MOV	A,#((osal_mem_free >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  203             ZMac_ScanBuf = NULL;
        MOV	DPTR,#ZMac_ScanBuf
        LJMP	??CrossCallReturnLabel_8 & 0xFFFF
//  204           }
//  205         }
//  206         break;
//  207 
//  208       case MAC_MLME_START_CNF:
//  209         msgPtr->hdr.status = pData->startCnf.hdr.status;
??MAC_CbackEvent_9:
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPL,R6
        MOV	DPH,R7
        LJMP	??MAC_CbackEvent_16 & 0xFFFF
//  210         break;
//  211 
//  212       case MAC_MCPS_DATA_IND:
//  213         {
//  214           /* Data Ind is unconventional: to save an alloc/copy, reuse the MAC
//  215              buffer and re-organize the contents into ZMAC format. */
//  216           uint16 shortAddr = INVALID_SHORT_ADDR;
??MAC_CbackEvent_10:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,#-0x2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  217           ZMacDataInd_t *pDataInd = (ZMacDataInd_t *) pData;
//  218           uint8 event, status, len, *msdu;
//  219 
//  220           MAC_MlmeGetReq( MAC_SHORT_ADDRESS, &shortAddr );
        ; Setup parameters for call to function MAC_MlmeGetReq
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x53
        MOV	DPTR,#(MAC_MlmeGetReq & 0xffff)
        MOV	A,#((MAC_MlmeGetReq >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  221           if ( shortAddr == INVALID_SHORT_ADDR || shortAddr == BROADCAST_ADDR )
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0xfe
        JNZ	??MAC_CbackEvent_17
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,#0xff
??MAC_CbackEvent_17:
        JZ	??MAC_CbackEvent_18
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0xff
        JNZ	??MAC_CbackEvent_19
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,#0xff
??MAC_CbackEvent_19:
        JNZ	??MAC_CbackEvent_20
//  222           {
//  223             osal_msg_deallocate( (uint8 *)msgPtr );
??MAC_CbackEvent_18:
        ; Setup parameters for call to function osal_msg_deallocate
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#(osal_msg_deallocate & 0xffff)
        MOV	A,#((osal_msg_deallocate >> 16) & 0xff)
        LJMP	??MAC_CbackEvent_21 & 0xFFFF
//  224             return;
//  225           }
//  226 
//  227           /* Store parameters */
//  228           event = pData->hdr.event;
??MAC_CbackEvent_20:
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        LCALL	?Subroutine7 & 0xFFFF
//  229           status = pData->hdr.status;
??CrossCallReturnLabel_15:
        MOVX	A,@DPTR
        MOV	?V0 + 7,A
//  230           len = pData->dataInd.msdu.len;
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 3,A
//  231           msdu = pData->dataInd.msdu.p;
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  232 
//  233           /* Copy header */
//  234 #if defined ( ZBIT )
//  235           // ZBIT requires two copies to handle 32 bit alignment  
//  236           osal_memcpy(&pDataInd->SrcAddr, &pData->dataInd.mac, sizeof(zAddrType_t) * 2 );
//  237           osal_memcpy(&pDataInd->Timestamp, &pData->dataInd.mac.timestamp, sizeof(macDataInd_t) - sizeof(ZMacEventHdr_t) - sizeof(zAddrType_t) * 2);
//  238 #else
//  239           osal_memcpy(&pDataInd->SrcAddr, &pData->dataInd.mac, sizeof(macDataInd_t) - sizeof(ZMacEventHdr_t));
        ; Setup parameters for call to function osal_memcpy
        MOV	A,?V0 + 4
        ADD	A,#0x12
        MOV	?V0 + 0,A
        MOV	A,?V0 + 5
        ADDC	A,#0x0
        MOV	?V0 + 1,A
        MOV	?V0 + 2,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 24)
        MOV	R4,#0x1e
        MOV	R5,#0x0
        MOV	A,?V0 + 4
        ADD	A,#0x2
        MOV	R2,A
        MOV	A,?V0 + 5
        LCALL	?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_14:
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
//  240 #endif
//  241           /* Security - set to zero for now */
//  242           pDataInd->Sec.SecurityLevel = false;
        MOV	A,?V0 + 4
        ADD	A,#0x2a
        MOV	DPL,A
        MOV	A,?V0 + 5
        ADDC	A,#0x0
        MOV	DPH,A
        CLR	A
        LCALL	?Subroutine7 & 0xFFFF
//  243 
//  244           /* Restore parameters */
//  245           pDataInd->hdr.Status = status;
??CrossCallReturnLabel_16:
        MOV	A,?V0 + 7
        MOVX	@DPTR,A
//  246           pDataInd->hdr.Event = event;
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPL,?V0 + 4
        MOV	DPH,?V0 + 5
        MOVX	@DPTR,A
//  247           pDataInd->msduLength = len;
        MOV	A,?V0 + 4
        ADD	A,#0x2d
        MOV	DPL,A
        MOV	A,?V0 + 5
        ADDC	A,#0x0
        MOV	DPH,A
        MOV	A,?V0 + 3
        MOVX	@DPTR,A
//  248 
//  249           if (len)
        JZ	??MAC_CbackEvent_22
//  250             pDataInd->msdu = msdu;
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_7:
        LJMP	??CrossCallReturnLabel_9 & 0xFFFF
//  251           else
//  252             pDataInd->msdu = NULL;
??MAC_CbackEvent_22:
        LCALL	?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_8:
        CLR	A
        MOVX	@DPTR,A
??MAC_CbackEvent_16:
        INC	DPTR
??MAC_CbackEvent_12:
        MOVX	@DPTR,A
//  253 
//  254           break;
//  255         }
//  256       }
//  257 
//  258       msgPtr->hdr.event = zmacCBEventTable[macEvent];
??MAC_CbackEvent_11:
        MOV	A,?V0 + 6
        ADD	A,#(zmacCBEventTable & 0xff)
        MOV	DPL,A
        CLR	A
        ADDC	A,#((zmacCBEventTable >> 8) & 0xff)
        MOV	DPH,A
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R6
        MOV	DPH,R7
        MOVX	@DPTR,A
//  259       osal_msg_send( NWK_TaskID, (uint8 *)msgPtr );
        ; Setup parameters for call to function osal_msg_send
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#NWK_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_msg_send & 0xffff)
        MOV	A,#((osal_msg_send >> 16) & 0xff)
??MAC_CbackEvent_21:
        LCALL	?BCALL               ; Banked call to: DPTR()
??MAC_CbackEvent_1:
        MOV	A,#0x5
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 16)
        MOV	R7,#0x8
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock1
//  260     }
//  261   }
//  262 #endif
//  263 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine7:
        CFI Block cfiCond2 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_16
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V7 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, 21)
        CFI Block cfiCond3 Using cfiCommon0
        CFI (cfiCond3) NoFunction
        CFI (cfiCond3) Conditional ??CrossCallReturnLabel_15
        CFI (cfiCond3) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI (cfiCond3) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI (cfiCond3) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond3) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond3) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond3) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond3) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond3) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond3) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond3) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond3) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond3) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond3) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond3) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond3) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond3) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond3) CFA_SP SP+0

⌨️ 快捷键说明

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