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

📄 mac_loc.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 4 页
字号:
        MOVX	@DPTR,A
//  323    ieeeAddress[6] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 6);
        MOV	DPTR,#-0x2
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  324    ieeeAddress[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 7);
        MOV	DPTR,#-0x1
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  325 
//  326    // restore old bank settings
//  327    MEMCTR = bank;
        MOV	0xc7,R4
//  328 }
        LJMP	??Subroutine0_0
        CFI EndBlock cfiBlock6
//  329 
//  330 /******************************************************************************
//  331 *
//  332 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  333 void DataRequest(WORD a, UINT8 length, BYTE* pMsdu){
DataRequest:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function DataRequest
        FUNCALL DataRequest, mcpsDataRequest
        LOCFRAME XSTACK, 27, STACK
        ARGFRAME XSTACK, 27, STACK
        MOV	A,#-0xa
        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)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 8
        MOV	A,#-0x8
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  334    ADDRESS dest;
//  335    dest.Short = a;
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,R2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R3
        MOVX	@DPTR,A
//  336    dataConfirmStatus = INVALID_STATUS;
        MOV	A,#-0x80
        MOV	DPTR,#dataConfirmStatus
        MOVX	@DPTR,A
//  337    msduHandle = 1;
        MOV	A,#0x1
        MOV	DPTR,#msduHandle
        MOVX	@DPTR,A
//  338 
//  339    // Broadcasted messages and messages sent to PC should not be ack'ed
//  340    if(a == BROADCAST_ADDR || a == PC_SHORT){
        MOV	A,#-0x1
        XRL	A,R2
        JNZ	??DataRequest_0
        MOV	A,#-0x1
        XRL	A,R3
??DataRequest_0:
        JZ	??DataRequest_1
        MOV	A,#0x34
        XRL	A,R2
        JNZ	??DataRequest_2
        MOV	A,#0x12
        XRL	A,R3
??DataRequest_2:
        JNZ	??DataRequest_3
//  341       txOptions = TX_OPT_NONE;
??DataRequest_1:
        CLR	A
        SJMP	??DataRequest_4
//  342    }
//  343    else{
//  344       txOptions = TX_OPT_ACK_REQ;
??DataRequest_3:
        MOV	A,#0x1
??DataRequest_4:
        MOV	DPTR,#txOptions
        MOVX	@DPTR,A
//  345    }
//  346 
//  347    mcpsDataRequest(SRC_ADDR_SHORT | DEST_ADDR_SHORT,
//  348                    panId,
//  349                    (ADDRESS *) &myShortAddr,
//  350                    panId,
//  351                    &dest,
//  352                    length,
//  353                    pMsdu,
//  354                    msduHandle,
//  355                    txOptions);
        ; Setup parameters for call to function mcpsDataRequest
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 19)
        MOV	?V0 + 0,#0x1
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 20)
        MOV	?V0 + 0,R4
        MOV	?V0 + 1,R5
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 22)
        MOV	A,R1
        MOV	?V0 + 0,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 23)
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	?V0 + 0,DPL
        MOV	?V0 + 1,DPH
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 25)
        MOV	DPTR,#panId
        LCALL	?PUSH_XSTACK8_X_TWO
        CFI CFA_XSP16 add(XSP16, 27)
        MOV	R4,#(myShortAddr & 0xff)
        MOV	R5,#((myShortAddr >> 8) & 0xff)
        MOV	DPTR,#panId
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	R1,#-0x78
        LCALL	mcpsDataRequest & 0xFFFF
        MOV	A,#0x9
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  356 
//  357    WaitForPacketTransmission(msduHandle);
        MOV	DPTR,#msduHandle
        MOVX	A,@DPTR
        MOV	R2,A
??DataRequest_5:
        MOV	DPTR,#dataConfirmMsduHandle
        MOVX	A,@DPTR
        XRL	A,R2
        JNZ	??DataRequest_5
??DataRequest_6:
        MOV	DPTR,#dataConfirmStatus
        MOVX	A,@DPTR
        XRL	A,#0x80
        JZ	??DataRequest_6
//  358 }
        MOV	A,#0x8
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock7
//  359 
//  360 #ifdef SOC_BB
//  361 /******************************************************************************
//  362 * This function perform a test on SOC_BB. Connect a jumper between
//  363 * pin 19 and pin 20 on P10 to run the test. Press S1 and the led will lit
//  364 * if the test is OK.
//  365 ******************************************************************************/
//  366 void RunHWTest(void){
//  367    // setup P1_7 as pull-up input
//  368    IO_IMODE_PORT_PIN(0, 7, IO_IMODE_PUD);
//  369    IO_PUD_PORT(0, IO_PULLUP);
//  370    IO_DIR_PORT_PIN(0, 7, IO_IN);
//  371    halWait(100);
//  372 
//  373    while(P0_7 == 0) //If P0_7 == 0 then P0_7 is shorted to GND
//  374    {
//  375       LED1 = !BUTTON_PRESSED();
//  376    }
//  377 }
//  378 #endif
//  379 
//  380 
//  381 
//  382 /******************************************************************************
//  383 * Currently unused callbacks
//  384 ******************************************************************************/
//  385 #pragma diag_suppress=Pe550

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  386 ROOT void mlmeDisassociateIndication(ADDRESS deviceAddress, BYTE disassociateReason, BOOL securityUse, BOOL aclEntry){}
mlmeDisassociateIndication:
        CFI Block cfiBlock8 Using cfiCommon1
        CFI Function mlmeDisassociateIndication
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock8
//  387 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  388 ROOT void mlmeAssociateConfirm(WORD assocShortAddress, MAC_ENUM status){}
mlmeAssociateConfirm:
        CFI Block cfiBlock9 Using cfiCommon1
        CFI Function mlmeAssociateConfirm
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock9
//  389 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  390 ROOT void mlmeAssociateIndication(ADDRESS deviceAddress, BYTE capabilityInformation, BOOL securityUse, UINT8 aclEntry) {}
mlmeAssociateIndication:
        CFI Block cfiBlock10 Using cfiCommon1
        CFI Function mlmeAssociateIndication
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock10
//  391 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  392 ROOT void mlmeBeaconNotifyIndication(MLME_BEACON_NOTIFY_INDICATION *pMBNI) {
mlmeBeaconNotifyIndication:
        CFI Block cfiBlock11 Using cfiCommon1
        CFI Function mlmeBeaconNotifyIndication
        ; Saved register size: 0
        ; Auto size: 0
//  393    MLME_BEACON_NOTIFY_INDICATION   *mlmeBeaconNotifyIndication;
//  394 
//  395    mlmeBeaconNotifyIndication = pMBNI;
//  396 }
        RET
        CFI EndBlock cfiBlock11
//  397 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  398 ROOT void mlmeCommStatusIndication(WORD panId, BYTE srcAddrMode, ADDRESS *pSrcAddr, BYTE dstAddrMode, ADDRESS *pDstAddr, BYTE status) {
mlmeCommStatusIndication:
        CFI Block cfiBlock12 Using cfiCommon1
        CFI Function mlmeCommStatusIndication
        ; Saved register size: 0
        ; Auto size: 0
//  399    srcAddrMode = dstAddrMode = status = panId;
//  400    pDstAddr = pSrcAddr;
//  401 }
        RET
        CFI EndBlock cfiBlock12
//  402 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  403 ROOT void mlmeDisassociateConfirm(MAC_ENUM status) { status = 1; }
mlmeDisassociateConfirm:
        CFI Block cfiBlock13 Using cfiCommon1
        CFI Function mlmeDisassociateConfirm
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock13
//  404 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  405 ROOT void mlmeOrphanIndication(ADDRESS orphanAddress, BOOL securityUse, BOOL aclEntry) {
mlmeOrphanIndication:
        CFI Block cfiBlock14 Using cfiCommon1
        CFI Function mlmeOrphanIndication
        ; Saved register size: 0
        ; Auto size: 0
//  406    orphanAddress.Short = securityUse = aclEntry;
//  407 }
        RET
        CFI EndBlock cfiBlock14
//  408 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  409 ROOT void mlmeRxEnableConfirm(MAC_ENUM status) { status = 1; }
mlmeRxEnableConfirm:
        CFI Block cfiBlock15 Using cfiCommon1
        CFI Function mlmeRxEnableConfirm
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock15

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  410 ROOT void mlmeSyncLossIndication(MAC_ENUM lossReason) { lossReason = 1; }
mlmeSyncLossIndication:
        CFI Block cfiBlock16 Using cfiCommon1
        CFI Function mlmeSyncLossIndication
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock16

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  411 ROOT void mpmSetConfirm(BYTE status) { status = 1;}
mpmSetConfirm:
        CFI Block cfiBlock17 Using cfiCommon1
        CFI Function mpmSetConfirm
        ; Saved register size: 0
        ; Auto size: 0
        RET
        CFI EndBlock cfiBlock17

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "Chipcon">>`:
        DB "Chipcon"

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "Location Engine">`:
        DB "Location Engine"

        RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "Chipcon">`:
        DS 8
        REQUIRE `?<Initializer for <Constant "Chipcon">>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "Location Engine">`:
        DS 16
        REQUIRE `?<Initializer for <Constant "Location Engine">`
        REQUIRE __INIT_XDATA_I

        ASEGN SFR_AN:DATA:NOROOT,080H
// union <unnamed> volatile __sfr _A_P0
_A_P0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0b8H
// union <unnamed> volatile __sfr _A_IEN1
_A_IEN1:
        DS 1

        END
//  412 /*****************************************************************************/
//  413 
//  414 #pragma diag_default=Pe550
// 
// 557 bytes in segment BANKED_CODE
// 180 bytes in segment NEAR_CODE
//  10 bytes in segment SFR_AN
//  24 bytes in segment XDATA_I
//  24 bytes in segment XDATA_ID
// 145 bytes in segment XDATA_Z
// 
// 761 bytes of CODE  memory
//   0 bytes of DATA  memory (+ 10 bytes shared)
// 169 bytes of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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