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

📄 mac.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
??mlmeStartRequest_1:
        ; Setup parameters for call to function msupChannelValid
        LCALL	msupChannelValid
        MOV	A,R1
        JZ	??mlmeStartRequest_3
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,#0x10
        JNC	??mlmeStartRequest_3
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,?V0 + 3
        JNC	??mlmeStartRequest_4
        MOV	A,#0xf
        XRL	A,?V0 + 3
        JZ	??mlmeStartRequest_4
//  339         return INVALID_PARAMETER;
??mlmeStartRequest_3:
        MOV	R1,#-0x18
        LJMP	??mlmeStartRequest_2
//  340 
//  341     // Go ahead...
//  342     } else {
//  343 
//  344         // Transmit coordinator realignment?
//  345         if (coordRealignment) {
??mlmeStartRequest_4:
        MOV	A,?V0 + 0
        JNZ	$+5
        LJMP	??mlmeStartRequest_5
//  346 
//  347             // Reserve a packet to use with the TX engine
//  348             do {
//  349                 pPacket = mtxpReservePacket();
??mlmeStartRequest_6:
        ; Setup parameters for call to function mtxpReservePacket
        LCALL	mtxpReservePacket
        MOV	?V0 + 4,R2
        MOV	?V0 + 5,R3
//  350             } while (!pPacket);
        MOV	A,R2
        JNZ	??mlmeStartRequest_7
        MOV	A,R3
??mlmeStartRequest_7:
        JZ	??mlmeStartRequest_6
//  351 
//  352             // Prepare the packet data
//  353             mbcnPrepareCoordinatorRealignment(pPacket, NULL, 0xFFFF, securityEnable, panId, logicalChannel);
        ; Setup parameters for call to function mbcnPrepareCoordinatorRealignment
        MOV	A,R6
        MOV	?V0 + 0,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 19)
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        LCALL	?PUSH_XSTACK8_X_TWO
        CFI CFA_XSP16 add(XSP16, 21)
        MOV	?V0 + 0,#-0x1
        MOV	?V0 + 1,#-0x1
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 23)
        MOV	A,R7
        MOV	R1,A
        MOV	R4,#0x0
        MOV	R5,#0x0
        MOV	DPTR,#(mbcnPrepareCoordinatorRealignment & 0xffff)
        MOV	A,#((mbcnPrepareCoordinatorRealignment >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x5
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  354 #if MAC_OPT_SECURITY
//  355             // In case of frame counter overflow or missing key
//  356             // Generate error with FAILED_SECURITY_CHECK or UNAVAILABLE_KEY
//  357             if (pPacket->securitySuite >= 8) {
//  358                 mtxpReleasePacket(pPacket);
//  359                 return pPacket->securitySuite;
//  360             }
//  361 #endif
//  362 
//  363             // Initiate the transmission
//  364             do {
//  365                 taskNumber = mschReserveTask();
??mlmeStartRequest_8:
        ; Setup parameters for call to function mschReserveTask
        LCALL	mschReserveTask
//  366             } while (taskNumber == NO_TASK);
        MOV	A,#-0x1
        XRL	A,R1
        JZ	??mlmeStartRequest_8
//  367             mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
        ; Setup parameters for call to function mschAddTask
        MOV	?V0 + 0,#(mtxScheduleTransmission & 0xff)
        MOV	?V0 + 1,#((mtxScheduleTransmission >> 8) & 0xff)
        MOV	?V0 + 2,#((mtxScheduleTransmission >> 16) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 21)
        MOV	R4,?V0 + 4
        MOV	R5,?V0 + 5
        MOV	R2,#0x0
        LCALL	mschAddTask
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  368 
//  369             // Dirty trick: Create another task to tell us when the transmission task has completed
//  370             do {
//  371                 taskNumber = mschReserveTask();
??mlmeStartRequest_9:
        ; Setup parameters for call to function mschReserveTask
        LCALL	mschReserveTask
//  372             } while (taskNumber == NO_TASK);
        MOV	A,#-0x1
        XRL	A,R1
        JZ	??mlmeStartRequest_9
//  373             waiting = TRUE;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x1
        MOVX	@DPTR,A
//  374             mschAddTask(taskNumber, MAC_TASK_PRI_LOW, msupWaitTask, (WORD) &waiting);
        ; Setup parameters for call to function mschAddTask
        MOV	?V0 + 0,#(msupWaitTask & 0xff)
        MOV	?V0 + 1,#((msupWaitTask >> 8) & 0xff)
        MOV	?V0 + 2,#((msupWaitTask >> 16) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 21)
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x0
        LCALL	mschAddTask
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  375             while (waiting);
??mlmeStartRequest_10:
        MOVX	A,@DPTR
        JNZ	??mlmeStartRequest_10
//  376         }
//  377 
//  378         // Set beacon and superframe order
//  379         firstBeaconNow = (BOOL)!GET_MF(MF_TRANSMIT_BEACON);
??mlmeStartRequest_5:
        MOV	DPTR,#(macInfo + 6)
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.3
        JC	??mlmeStartRequest_11
        SETB	B.0
        SJMP	??mlmeStartRequest_12
??mlmeStartRequest_11:
        CLR	B.0
??mlmeStartRequest_12:
        MOV	C,B.0
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	?V0 + 0,A
//  380         mlmeSetRequest(MAC_BEACON_ORDER, &beaconOrder);
        ; Setup parameters for call to function mlmeSetRequest
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x47
        LCALL	mlmeSetRequest
//  381 
//  382         if (beaconOrder == 15) {
        MOVX	A,@DPTR
        XRL	A,#0xf
        JNZ	??mlmeStartRequest_13
//  383             mpib.macSuperframeOrder = 15;
        MOV	A,#0xf
        MOV	DPTR,#(mpib + 34)
        MOVX	@DPTR,A
//  384             CLEAR_MF(MF_TRANSMIT_BEACON);
        MOV	DPTR,#(macInfo + 6)
        MOVX	A,@DPTR
        CLR	0xE0 /* A   */.3
        MOVX	@DPTR,A
//  385             firstBeaconNow = FALSE;
        MOV	?V0 + 0,#0x0
//  386 
//  387             // Release task number and TX packet, if reserved
//  388             if (mbcnInfo.txTaskNumber != NO_TASK) {
        MOV	DPTR,#mbcnInfo
        MOVX	A,@DPTR
        XRL	A,#0xff
        JZ	??mlmeStartRequest_14
//  389                 mschReleaseTask(mbcnInfo.txTaskNumber);
        ; Setup parameters for call to function mschReleaseTask
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschReleaseTask
//  390                 mbcnInfo.txTaskNumber = NO_TASK;
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  391             }
//  392             if (mbcnInfo.pTxPacket != NULL) {
??mlmeStartRequest_14:
        MOV	DPTR,#(mbcnInfo + 2)
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	A,R2
        JNZ	??mlmeStartRequest_15
        MOV	A,R3
??mlmeStartRequest_15:
        JZ	??mlmeStartRequest_16
//  393                 mtxpReleasePacket(mbcnInfo.pTxPacket);
        ; Setup parameters for call to function mtxpReleasePacket
        LCALL	mtxpReleasePacket
//  394                 mbcnInfo.pTxPacket = NULL;
        MOV	DPTR,#(mbcnInfo + 2)
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        SJMP	??mlmeStartRequest_17
//  395             }
//  396         } else {
//  397             mpib.macSuperframeOrder = superframeOrder;
??mlmeStartRequest_13:
        MOV	A,?V0 + 3
        MOV	DPTR,#(mpib + 34)
??mlmeStartRequest_17:
        MOVX	@DPTR,A
//  398         }
//  399 
//  400         // Prepare to modify the CC2430 PAN coordinator bit
//  401         mdmctrl0 = MDMCTRL0_NO_PAN_COORDINATOR;
??mlmeStartRequest_16:
        MOV	R3,#0xa
//  402 
//  403         // PAN coordinator?
//  404         if (panCoordinator) {
        MOV	A,?V0 + 6
        JZ	??mlmeStartRequest_18
//  405             // Set the PAN ID
//  406             mlmeSetRequest(MAC_PAN_ID, &panId);
        ; Setup parameters for call to function mlmeSetRequest
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x50
        LCALL	mlmeSetRequest
//  407 
//  408             // Change the RF channel
//  409             msupSetChannel(logicalChannel, TRUE);
        ; Setup parameters for call to function msupSetChannel
        MOV	R2,#0x1
        MOV	A,R6
        MOV	R1,A
        LCALL	msupSetChannel
//  410 
//  411             // Set PAN coordinator flags
//  412             SET_MF(MF_PAN_COORDINATOR);
        MOV	DPTR,#(macInfo + 6)
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.1
        MOVX	@DPTR,A
//  413             mdmctrl0 |= PAN_COORDINATOR_BM;
        MOV	R3,#0x1a
        SJMP	??mlmeStartRequest_19
//  414 
//  415         } else {
//  416 
//  417             // Just clear the flag
//  418             CLEAR_MF(MF_PAN_COORDINATOR);
??mlmeStartRequest_18:
        MOV	DPTR,#(macInfo + 6)
        MOVX	A,@DPTR
        CLR	0xE0 /* A   */.1
        MOVX	@DPTR,A
//  419         }
//  420 
//  421         // Set the coordinator flag (used in addition to the PAN coordinator flag)
//  422         SET_MF(MF_COORDINATOR);
??mlmeStartRequest_19:
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.0
        MOVX	@DPTR,A
//  423 
//  424         // Set the MDMCTRL0.PAN_COORDINATOR bit (affects address regocnition)
//  425         WRITE_RFR16(MDMCTRL0, mdmctrl0);
        MOV	A,R3
        MOV	DPTR,#-0x20fe
        MOVX	@DPTR,A
        MOV	A,#-0x1e
        MOV	DPTR,#-0x20fd
        MOVX	@DPTR,A
//  426 
//  427         // Other parameters
//  428         if (securityEnable) {
        MOV	A,R7
        MOV	DPTR,#(macInfo + 6)
        JZ	??mlmeStartRequest_20
//  429             SET_MF(MF_BEACON_SECURITY);
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.2
        SJMP	??mlmeStartRequest_21
//  430         } else {
//  431             CLEAR_MF(MF_BEACON_SECURITY);
??mlmeStartRequest_20:
        MOVX	A,@DPTR
        CLR	0xE0 /* A   */.2
??mlmeStartRequest_21:
        MOVX	@DPTR,A
//  432         }
//  433 
//  434         // Set battery life extension
//  435         mlmeSetRequest(MAC_BATT_LIFE_EXT, &batteryLifeExtension);
        ; Setup parameters for call to function mlmeSetRequest
        MOV	A,#0x13
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x43
        LCALL	mlmeSetRequest
//  436 
//  437         // Beacon now?
//  438         if (beaconOrder == 15) {
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0xf
        JNZ	??mlmeStartRequest_22
//  439             mtimCancelCallback(mbcnExpirePacketsNonBeacon);
        ; Setup parameters for call to function mtimCancelCallback
        MOV	R1,#(mbcnExpirePacketsNonBeacon & 0xff)
        MOV	R2,#((mbcnExpirePacketsNonBeacon >> 8) & 0xff)
        MOV	R3,#((mbcnExpirePacketsNonBeacon >> 16) & 0xff)
        LCALL	mtimCancelCallback
//  440             mtimSetCallback(mbcnExpirePacketsNonBeacon, (UINT32)(aBaseSuperframeDuration / aUnitBackoffPeriod));
        ; Setup parameters for call to function mtimSetCallback
        MOV	DPTR,#__Constant_30
        LCALL	?PUSH_XSTACK8_X_FOUR
        CFI CFA_XSP16 add(XSP16, 22)
        MOV	R1,#(mbcnExpirePacketsNonBeacon & 0xff)
        MOV	R2,#((mbcnExpirePacketsNonBeacon >> 8) & 0xff)
        MOV	R3,#((mbcnExpireP

⌨️ 快捷键说明

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