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

📄 hal_sleep.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  219 #define UINT32_NDX3   3
//  220 #else
//  221 #define UINT32_NDX0   3
//  222 #define UINT32_NDX1   2
//  223 #define UINT32_NDX2   1
//  224 #define UINT32_NDX3   0
//  225 #endif
//  226 
//  227 /* ------------------------------------------------------------------------------------------------
//  228  *                                        Local Variables
//  229  * ------------------------------------------------------------------------------------------------
//  230  */
//  231 
//  232 /* HAL power management mode is set according to the power management state.
//  233  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  234 static uint8 halPwrMgtMode = HAL_SLEEP_OFF;
??halPwrMgtMode:
        DS 1
//  235 
//  236 /* stores the sleep timer count upon entering sleep */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  237 static uint32 halSleepTimerStart;
??halSleepTimerStart:
        DS 4
//  238 
//  239 /* stores the accumulated sleep time */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  240 static uint32 halAccumulatedSleepTime;
??halAccumulatedSleepTime:
        DS 4
//  241 
//  242 /* stores the deepest level the device is allowed to sleep
//  243  * See AN044 - COMBINING POWER MODES
//  244  */

        RSEG XDATA_I:XDATA:NOROOT(0)
//  245 static uint8 halSleepLevel = CC2430_PM2;
??halSleepLevel:
        DS 1
        REQUIRE `?<Initializer for halSleepLevel>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_0:
        DS 4
        REQUIRE `?<Initializer for __Constant_0>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_64:
        DS 4
        REQUIRE `?<Initializer for __Constant_64>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_1f:
        DS 4
        REQUIRE `?<Initializer for __Constant_1f>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_2d:
        DS 4
        REQUIRE `?<Initializer for __Constant_2d>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_185197:
        DS 4
        REQUIRE `?<Initializer for __Constant_185197>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffe7ae6a:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffe7ae6a>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_185196:
        DS 4
        REQUIRE `?<Initializer for __Constant_185196>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_29f:
        DS 4
        REQUIRE `?<Initializer for __Constant_29f>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffffffde:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffffffde>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffffff:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffffff>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffff80:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffff80>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffff7f:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffff7f>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_22:
        DS 4
        REQUIRE `?<Initializer for __Constant_22>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_7d:
        DS 4
        REQUIRE `?<Initializer for __Constant_7d>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_fff:
        DS 4
        REQUIRE `?<Initializer for __Constant_fff>`
        REQUIRE __INIT_XDATA_I
//  246 
//  247 #ifdef HAL_SLEEP_DEBUG_POWER_MODE
//  248 static bool halSleepInt = FALSE;
//  249 #endif
//  250 
//  251 /* ------------------------------------------------------------------------------------------------
//  252  *                                      Function Prototypes
//  253  * ------------------------------------------------------------------------------------------------
//  254  */
//  255 
//  256 void halSleepSetTimer(uint32 timeout);
//  257 uint32 HalTimerElapsed( void );
//  258 
//  259 /**************************************************************************************************
//  260  * @fn          halSleep
//  261  *
//  262  * @brief       This function is called from the OSAL task loop using and existing OSAL
//  263  *              interface.  It sets the low power mode of the MAC and the CC2430.
//  264  *
//  265  * input parameters
//  266  *
//  267  * @param       osal_timeout - Next OSAL timer timeout.
//  268  *
//  269  * output parameters
//  270  *
//  271  * None.
//  272  *
//  273  * @return      None.
//  274  **************************************************************************************************
//  275  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  276 void halSleep( uint16 osal_timeout )
halSleep:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function halSleep
//  277 {
        FUNCALL halSleep, MAC_PwrNextTimeout
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, MAC_PwrNextTimeout
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, osalNextActiveTask
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, MAC_PwrOffReq
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, HalKeyEnterSleep
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, HalLedEnterSleep
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, halSleepSetTimer
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, halSleepSetTimer
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, halSleepWait
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, halSleepWait
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, HalTimerElapsed
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, halSleepWait
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, HalLedExitSleep
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, HalKeyExitSleep
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, MAC_PwrOnReq
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        FUNCALL halSleep, osal_adjust_timers
        LOCFRAME XSTACK, 21, STACK
        ARGFRAME XSTACK, 21, STACK
        MOV	A,#-0x10
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 5
        MOV	A,#-0x5
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 21)
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  278   uint32        timeout;
//  279   uint32        macTimeout;
//  280   halIntState_t intState, ien0, ien1, ien2;
//  281 
//  282   halAccumulatedSleepTime = 0;
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPTR,#??halAccumulatedSleepTime
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  283 
//  284   /* get next OSAL timer expiration converted to 320 usec units */
//  285   timeout = HAL_SLEEP_MS_TO_320US(osal_timeout);
        MOV	?V0 + 4,R6
        MOV	?V0 + 5,R7
        MOV	?V0 + 6,#0x0
        MOV	?V0 + 7,#0x0
        MOV	DPTR,#__Constant_64
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?L_MUL
        MOV	DPTR,#__Constant_1f
        MOV	R0,#?V0 + 4
        LCALL	?L_ADD_X
        MOV	A,#0x5
        MOV	R0,#?V0 + 4
        LCALL	?UL_SHR
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_TO_X
//  286   if (timeout == 0)
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 0
        LCALL	?L_EQ_X
        MOV	DPTR,#(MAC_PwrNextTimeout & 0xffff)
        JNZ	??halSleep_0
//  287   {
//  288     timeout = MAC_PwrNextTimeout();
        ; Setup parameters for call to function MAC_PwrNextTimeout
        MOV	A,#((MAC_PwrNextTimeout >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,R4
        MOV	?V0 + 3,R5
        SJMP	??halSleep_1
//  289   }
//  290   else
//  291   {
//  292     /* get next MAC timer expiration */
//  293     macTimeout = MAC_PwrNextTimeout();
??halSleep_0:
        ; Setup parameters for call to function MAC_PwrNextTimeout
        MOV	A,#((MAC_PwrNextTimeout >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,R4
        MOV	?V0 + 3,R5
//  294 
//  295     /* get lesser of two timeouts */
//  296     if ((macTimeout != 0) && (macTimeout < timeout))
        MOV	DPTR,#__Constant_0

⌨️ 快捷键说明

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