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

📄 mac_power_management.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOV	R3,A
        MOV	R2,?V0 + 0
        MOV	A,R7
        MOV	R1,A
        LCALL	mpmResumeMacAfterPowerDown
//  332 
//  333 }
        MOV	A,#0x1
        CFI EndBlock cfiBlock9
        REQUIRE ?Subroutine1
        ; // Fall through to label ?Subroutine1

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI Invalid
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 8)
        CFI Valid
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock10
//  334 
//  335 
//  336 //-------------------------------------------------------------------------------------------------------
//  337 //  ROOT void mpmPowerDownMac (BYTE *rxOnWhenIdle)
//  338 //
//  339 //  DESCRIPTION:
//  340 //      Stops MAC prosessing and turns the radio off.
//  341 //
//  342 //  ARGUMENTS:
//  343 //      BYTE rxOnWhenIdle
//  344 //          Contains the value of rxOnWhenIdle prior to power down
//  345 //
//  346 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  347 ROOT void mpmPowerDownMac (BYTE *rxOnWhenIdle)
mpmPowerDownMac:
        CFI Block cfiBlock11 Using cfiCommon0
        CFI Function mpmPowerDownMac
//  348 {
        FUNCALL mpmPowerDownMac, mlmeGetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL mpmPowerDownMac, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL mpmPowerDownMac, mpmSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        ; Saved register size: 2
        ; Auto size: 1
        MOV	A,#-0x1
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 1)
//  349     BYTE setAttributeValue;
//  350 
//  351     mlmeGetRequest (MAC_RX_ON_WHEN_IDLE, rxOnWhenIdle);
        ; Setup parameters for call to function mlmeGetRequest
        MOV	R1,#0x52
        LCALL	mlmeGetRequest
//  352 
//  353     setAttributeValue = FALSE;
        CLR	A
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  354     mlmeSetRequest (MAC_RX_ON_WHEN_IDLE, &setAttributeValue);
        ; Setup parameters for call to function mlmeSetRequest
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x52
        LCALL	mlmeSetRequest
//  355 
//  356     // Power down
//  357     mpmSetRequest(MPM_CC2430_XOSC_AND_VREG_OFF);
        ; Setup parameters for call to function mpmSetRequest
        MOV	R1,#0x2
        LCALL	mpmSetRequest
//  358     while (mpmGetState() != MPM_CC2430_XOSC_AND_VREG_OFF);
??mpmPowerDownMac_0:
        MOV	DPTR,#mpmInfo
        MOVX	A,@DPTR
        XRL	A,#0x2
        JNZ	??mpmPowerDownMac_0
//  359 
//  360 }
        MOV	A,#0x1
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 XSP16+0
        LJMP	??Subroutine0_0
        CFI EndBlock cfiBlock11
//  361 
//  362 //-------------------------------------------------------------------------------------------------------
//  363 //  void mpmResumeMacAfterPowerDown (RESUME_MODE resumeMode,
//  364 //                                   BOOL        synchronousStart,
//  365 //                                   BOOL        rxOnWhenIdle)
//  366 //
//  367 //  DESCRIPTION:
//  368 //      Resumes the mac protocol after a power down
//  369 //
//  370 //  ARGUMENTS:
//  371 //      RESUME_MODE resumeMode
//  372 //          Depends on how much of the MAC variables that was preserved during power down. In power control
//  373 //          PM1 or when all data are places in upper 4 kRAM, RESUME_MODE_ALL_PRESERVED can be used. The
//  374 //          XDATA segment and the PM0_XDATA segment must be located in upper 4 kRAM.
//  375 //          If the PM0_XDATA segment is located in lower 4 kRAM and XDATA in upper 4 kRAM,
//  376 //          the RESUME_MODE_PARTS_PRESERVED must be used.
//  377 //          RESUME_MODE_ALL_PRESERVED,      restarts only timer2. The fastest and less power consuming mode
//  378 //          RESUME_MODE_PARTS_PRESERVED     restarts timer2, the task and memory pool system
//  379 //
//  380 //      BOOL synchronousStart
//  381 //          FALSE  Start timer2 immediate
//  382 //          TRUE   Start timer2 synchronous with external 32.768 kHz clock
//  383 //
//  384 //      BOOL rxOnWhenIdle
//  385 //          FALSE  RX is off
//  386 //          TRUE   Turn RX on
//  387 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  388 ROOT void mpmResumeMacAfterPowerDown (RESUME_MODE resumeMode,
mpmResumeMacAfterPowerDown:
        CFI Block cfiBlock12 Using cfiCommon0
        CFI Function mpmResumeMacAfterPowerDown
//  389                                       BOOL        synchronousStart,
//  390                                       BOOL        rxOnWhenIdle)
//  391 {
        FUNCALL mpmResumeMacAfterPowerDown, mtimStartSync
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mpmSetRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, InitializeCommonStorage
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, InitializeDma
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, InitializeRfInterrupts
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mschInit
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mtimInit
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mpmSetRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mrxpInit
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mtxpInit
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, miqInit
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mschReserveTask
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mtimSetCallback
        LOCFRAME XSTACK, 14, STACK
        ARGFRAME XSTACK, 14, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mlmeSetRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mlmeSyncRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, EnableRfInterrupts
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL mpmResumeMacAfterPowerDown, mlmeSetRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        MOV	A,#-0x8
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 2
        MOV	A,#-0x2
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        MOV	A,R1
        MOV	R7,A
        MOV	?V0 + 0,R2
        MOV	A,R3
        MOV	R6,A
//  392     BYTE setAttributeValue;
//  393     WORD  mdmctrl0;
//  394 
//  395     switch (resumeMode)
        MOV	A,R7
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for mpmResumeMacAfterPowerDown>_0`:
        DB        0
        DB        1
        DW        ??mpmResumeMacAfterPowerDown_0
        DW        ??mpmResumeMacAfterPowerDown_1
        DW        ??mpmResumeMacAfterPowerDown_2
//  396     {
//  397         case RESUME_MODE_ALL_PRESERVED:
//  398             DISABLE_GLOBAL_INT();
??mpmResumeMacAfterPowerDown_1:
        CLR	0xa8.7
//  399 
//  400             if (synchronousStart == FALSE)
        MOV	A,R2
        JNZ	??mpmResumeMacAfterPowerDown_3
//  401                 T2_START_NOSYNC ();
        ANL	0xc3,#0xfd
        ORL	0xc3,#0x1
        SJMP	??mpmResumeMacAfterPowerDown_4
//  402             else
//  403                 mtimStartSync ();
??mpmResumeMacAfterPowerDown_3:
        ; Setup parameters for call to function mtimStartSync
        LCALL	mtimStartSync
//  404 
//  405             ENABLE_TIMER2_INT();
??mpmResumeMacAfterPowerDown_4:
        SETB	0xb8.2
//  406             macInfo.state = MAC_STATE_DEFAULT;
        CLR	A
        MOV	DPTR,#macInfo
        MOVX	@DPTR,A
//  407 
//  408             // Power up radio
//  409             mpmSetRequest(MPM_CC2430_ON);
        ; Setup parameters for call to function mpmSetRequest
        MOV	R1,A
        LCALL	mpmSetRequest
//  410             while (mpmGetState() != MPM_CC2430_ON);
??mpmResumeMacAfterPowerDown_5:
        MOV	DPTR,#mpmInfo
        MOVX	A,@DPTR
        JNZ	??mpmResumeMacAfterPowerDown_5
//  411             DISABLE_TIMER2_INT();
        CLR	0xb8.2
        SJMP	??mpmResumeMacAfterPowerDown_0
//  412             break;
//  413 
//  414         case RESUME_MODE_PARTS_PRESERVED:
//  415             DISABLE_GLOBAL_INT();
??mpmResumeMacAfterPowerDown_2:
        CLR	0xa8.7
//  416             InitializeCommonStorage ();
        ; Setup parameters for call to function InitializeCommonStorage
        LCALL	InitializeCommonStorage
//  417             InitializeDma ();
        ; Setup parameters for call to function InitializeDma
        LCALL	InitializeDma
//  418             InitializeRfInterrupts ();
        ; Setup parameters for call to function InitializeRfInterrupts
        LCALL	InitializeRfInterrupts
//  419             mschInit();
        ; Setup parameters for call to function mschInit
        LCALL	mschInit
//  420             mtimInit(synchronousStart);
        ; Setup parameters for call to function mtimInit
        MOV	R1,?V0 + 0
        LCALL	mtimInit
//  421             ENABLE_TIMER2_INT();
        SETB	0xb8.2
//  422             macInfo.state = MAC_STATE_DEFAULT;
        CLR	A
        MOV	DPTR,#macInfo
        MOVX	@DPTR,A
//  423 
//  424             // Power up radio
//  425             mpmSetRequest(MPM_CC2430_ON);
        ; Setup parameters for call to function mpmSetRequest
        MOV	R1,A
        LCALL	mpmSetRequest
//  426             while (mpmGetState() != MPM_CC2430_ON);
??mpmResumeMacAfterPowerDown_6:
        MOV	DPTR,#mpmInfo
        MOVX	A,@DPTR
        JNZ	??mpmResumeMacAfterPowerDown_6
//  427 
//  428             DISABLE_TIMER2_INT();
        CLR	0xb8.2
//  429 
//  430            // Initialize variables in the various modules
//  431            mrxpInit();
        ; Setup parameters for call to function mrxpInit
        LCALL	mrxpInit
//  432            mtxpInit();
        ; Setup parameters for call to function mtxpInit
        LCALL	mtxpInit
//  433 #if MAC_OPT_FFD
//  434            miqInit();
        ; Setup parameters for call to function miqInit
        LCALL	miqInit
//  435 #endif
//  436            mtxInfo.startTxTask = mschReserveTask();
        ; Setup parameters for call to function mschReserveTask
        LCALL	mschReserveTask
        MOV	A,R1
        MOV	DPTR,#(mtxInfo + 12)
        MOVX	@DPTR,A
//  437            mrxInfo.state = MRX_STATE_LEN_FCF_SEQ;
        CLR	A
        MOV	DPTR,#(mrxInfo + 12)
        MOVX	@DPTR,A
//  438            mbcnInfo.rxTaskNumber = NO_TASK;
        MOV	A,#-0x1
        MOV	DPTR,#(mbcnInfo + 1)
        MOVX	@DPTR,A
//  439            mbcnInfo.txTaskNumber = NO_TASK;

⌨️ 快捷键说明

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