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

📄 hal_sleep.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000128   92E0         MOV     0xE0 /* A   */.0,C
   \   00012A   85..82       MOV     DPL,?XSP + 0
   \   00012D   85..83       MOV     DPH,?XSP + 1
   \   000130   F0           MOVX    @DPTR,A
   \   000131   C2AF         CLR     0xa8.7
    344          
    345              /* one last check for active OSAL task */
    346              if (osalNextActiveTask() == NULL)
   \   000133                ; Setup parameters for call to function osalNextActiveTask
   \   000133   90....       MOV     DPTR,#(osalNextActiveTask & 0xffff)
   \   000136   74..         MOV     A,#((osalNextActiveTask >> 16) & 0xff)
   \   000138   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00013B   EA           MOV     A,R2
   \   00013C   7001         JNZ     ??halSleep_6
   \   00013E   EB           MOV     A,R3
   \                     ??halSleep_6:
   \   00013F   6003         JZ      $+5
   \   000141   02....       LJMP    ??halSleep_7 & 0xFFFF
    347              {
    348                /* always use "deep sleep" to turn off radio VREG on CC2430 */
    349                if (MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS)
   \   000144                ; Setup parameters for call to function MAC_PwrOffReq
   \   000144   7902         MOV     R1,#0x2
   \   000146   90....       MOV     DPTR,#(MAC_PwrOffReq & 0xffff)
   \   000149   74..         MOV     A,#((MAC_PwrOffReq >> 16) & 0xff)
   \   00014B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00014E   E9           MOV     A,R1
   \   00014F   6003         JZ      $+5
   \   000151   02....       LJMP    ??halSleep_7 & 0xFFFF
    350                {
    351                  while ( (HAL_SLEEP_MS_TO_320US(halAccumulatedSleepTime) < timeout) || (timeout == 0) )
   \                     ??halSleep_8:
   \   000154   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   000157   78..         MOV     R0,#?V0 + 0
   \   000159   12....       LCALL   ?L_MOV_X
   \   00015C   90....       MOV     DPTR,#__Constant_64
   \   00015F   78..         MOV     R0,#?V0 + 4
   \   000161   12....       LCALL   ?L_MOV_X
   \   000164   78..         MOV     R0,#?V0 + 0
   \   000166   79..         MOV     R1,#?V0 + 4
   \   000168   12....       LCALL   ?L_MUL
   \   00016B   90....       MOV     DPTR,#__Constant_1f
   \   00016E   78..         MOV     R0,#?V0 + 0
   \   000170   12....       LCALL   ?L_ADD_X
   \   000173   7405         MOV     A,#0x5
   \   000175   78..         MOV     R0,#?V0 + 0
   \   000177   12....       LCALL   ?UL_SHR
   \   00017A   7401         MOV     A,#0x1
   \   00017C   12....       LCALL   ?XSTACK_DISP0_8
   \   00017F   78..         MOV     R0,#?V0 + 4
   \   000181   12....       LCALL   ?L_MOV_X
   \   000184   78..         MOV     R0,#?V0 + 4
   \   000186   79..         MOV     R1,#?V0 + 0
   \   000188   12....       LCALL   ?UL_GT
   \   00018B   401F         JC      ??halSleep_9
   \   00018D   7401         MOV     A,#0x1
   \   00018F   12....       LCALL   ?XSTACK_DISP0_8
   \   000192   C082         PUSH    DPL
   \   000194   C083         PUSH    DPH
   \   000196   90....       MOV     DPTR,#__Constant_0
   \   000199   78..         MOV     R0,#?V0 + 0
   \   00019B   12....       LCALL   ?L_MOV_X
   \   00019E   D083         POP     DPH
   \   0001A0   D082         POP     DPL
   \   0001A2   78..         MOV     R0,#?V0 + 0
   \   0001A4   12....       LCALL   ?L_EQ_X
   \   0001A7   6003         JZ      $+5
   \   0001A9   02....       LJMP    ??halSleep_10 & 0xFFFF
    352                  {
    353                    /* get peripherals ready for sleep */
    354                    HalKeyEnterSleep();
   \                     ??halSleep_9:
   \   0001AC                ; Setup parameters for call to function HalKeyEnterSleep
   \   0001AC   90....       MOV     DPTR,#(HalKeyEnterSleep & 0xffff)
   \   0001AF   74..         MOV     A,#((HalKeyEnterSleep >> 16) & 0xff)
   \   0001B1   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    355          
    356          #ifdef HAL_SLEEP_DEBUG_LED
    357                    HAL_TURN_OFF_LED3();
    358          #else
    359                    /* use this to turn LEDs off during sleep */
    360                    HalLedEnterSleep();
   \   0001B4                ; Setup parameters for call to function HalLedEnterSleep
   \   0001B4   90....       MOV     DPTR,#(HalLedEnterSleep & 0xffff)
   \   0001B7   74..         MOV     A,#((HalLedEnterSleep >> 16) & 0xff)
   \   0001B9   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    361          #endif
    362          
    363                    /* set main clock source to RC oscillator for Rev B and Rev D */
    364                    HAL_SLEEP_SET_MAIN_CLOCK_RC();
   \   0001BC   53BEFB       ANL     0xbe,#0xfb
   \                     ??halSleep_11:
   \   0001BF   E5BE         MOV     A,0xbe
   \   0001C1   A2E5         MOV     C,0xE0 /* A   */.5
   \   0001C3   50FA         JNC     ??halSleep_11
   \   0001C5   00           NOP
   \   0001C6   75C649       MOV     0xc6,#0x49
   \                     ??halSleep_12:
   \   0001C9   7449         MOV     A,#0x49
   \   0001CB   65C6         XRL     A,0xc6
   \   0001CD   70FA         JNZ     ??halSleep_12
   \   0001CF   43BE04       ORL     0xbe,#0x4
    365          
    366                    /* enable sleep timer interrupt */
    367                    if (timeout != 0)
   \   0001D2   7401         MOV     A,#0x1
   \   0001D4   12....       LCALL   ?XSTACK_DISP0_8
   \   0001D7   C082         PUSH    DPL
   \   0001D9   C083         PUSH    DPH
   \   0001DB   90....       MOV     DPTR,#__Constant_0
   \   0001DE   78..         MOV     R0,#?V0 + 0
   \   0001E0   12....       LCALL   ?L_MOV_X
   \   0001E3   D083         POP     DPH
   \   0001E5   D082         POP     DPL
   \   0001E7   78..         MOV     R0,#?V0 + 0
   \   0001E9   12....       LCALL   ?L_EQ_X
   \   0001EC   6051         JZ      ??halSleep_13
    368                    {
    369                      if (timeout > HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ))
   \   0001EE   7401         MOV     A,#0x1
   \   0001F0   12....       LCALL   ?XSTACK_DISP0_8
   \   0001F3   C082         PUSH    DPL
   \   0001F5   C083         PUSH    DPH
   \   0001F7   90....       MOV     DPTR,#__Constant_185197
   \   0001FA   78..         MOV     R0,#?V0 + 0
   \   0001FC   12....       LCALL   ?L_MOV_X
   \   0001FF   D083         POP     DPH
   \   000201   D082         POP     DPL
   \   000203   78..         MOV     R0,#?V0 + 0
   \   000205   12....       LCALL   ?UL_GT_X
   \   000208   4017         JC      ??halSleep_14
    370                      {
    371                        timeout -= HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME );
   \   00020A   90....       MOV     DPTR,#__Constant_ffe7ae6a
   \   00020D   78..         MOV     R0,#?V0 + 0
   \   00020F   12....       LCALL   ?L_MOV_X
   \   000212   7401         MOV     A,#0x1
   \   000214   12....       LCALL   ?XSTACK_DISP0_8
   \   000217   78..         MOV     R0,#?V0 + 0
   \   000219   12....       LCALL   ?L_ADD_TO_X
    372                        halSleepSetTimer(HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ));
   \   00021C                ; Setup parameters for call to function halSleepSetTimer
   \   00021C   90....       MOV     DPTR,#__Constant_185196
   \   00021F   8005         SJMP    ??halSleep_15
    373                      }
    374                      else
    375                      {
    376                        /* set sleep timer */
    377                        halSleepSetTimer(timeout);
   \                     ??halSleep_14:
   \   000221                ; Setup parameters for call to function halSleepSetTimer
   \   000221   7401         MOV     A,#0x1
   \   000223   12....       LCALL   ?XSTACK_DISP0_8
   \                     ??halSleep_15:
   \   000226   78..         MOV     R0,#?V0 + 0
   \   000228   12....       LCALL   ?L_MOV_X
   \   00022B   AA..         MOV     R2,?V0 + 0
   \   00022D   AB..         MOV     R3,?V0 + 1
   \   00022F   AC..         MOV     R4,?V0 + 2
   \   000231   AD..         MOV     R5,?V0 + 3
   \   000233   90....       MOV     DPTR,#(halSleepSetTimer & 0xffff)
   \   000236   74..         MOV     A,#((halSleepSetTimer >> 16) & 0xff)
   \   000238   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    378                      }
    379          
    380                      /* set up sleep timer interrupt */
    381                      HAL_SLEEP_TIMER_CLEAR_INT();
   \   00023B   C2C7         CLR     0xc0.7
    382                      HAL_SLEEP_TIMER_ENABLE_INT();
   \   00023D   D2AD         SETB    0xa8.5
    383                    }
    384          
    385          #ifdef HAL_SLEEP_DEBUG_LED
    386                    if (halPwrMgtMode == CC2430_PM1)
    387                    {
    388                      HAL_TURN_ON_LED1();
    389                    }
    390                    else
    391                    {
    392                      HAL_TURN_OFF_LED1();
    393                    }
    394          #endif
    395          
    396                    /* save interrupt enable registers and disable all interrupts */
    397                    HAL_SLEEP_IE_BACKUP_AND_DISABLE(ien0, ien1, ien2);
   \                     ??halSleep_13:
   \   00023F   E5A8         MOV     A,0xa8
   \   000241   F5..         MOV     ?V0 + 0,A
   \   000243   E5B8         MOV     A,0xb8
   \   000245   F5..         MOV     ?V0 + 1,A
   \   000247   E59A         MOV     A,0x9a
   \   000249   F5..         MOV     ?V0 + 2,A
   \   00024B   53A820       ANL     0xa8,#0x20
   \   00024E   E5A8         MOV     A,0xa8
   \   000250   53B820       ANL     0xb8,#0x20
   \   000253   E5B8         MOV     A,0xb8
   \   000255   539A12       ANL     0x9a,#0x12
   \   000258   E59A         MOV     A,0x9a
    398          
    399                    /* This is to check if the stack is exceeding the disappearing
    400                     * RAM boundary of 0xF000. If the stack does exceed the boundary
    401                     * (unlikely), do not enter sleep until the stack is back to normal.
    402                     */
    403                    if ( ((uint16)(*( __idata uint16*)(CSTK_PTR)) >= 0xF000) )
   \   00025A   78..         MOV     R0,#(SFB(XSP) & 0xff)
   \   00025C   C3           CLR     C
   \   00025D   E6           MOV     A,@R0
   \   00025E   9400         SUBB    A,#0x0
   \   000260   08           INC     R0
   \   000261   E6           MOV     A,@R0
   \   000262   94F0         SUBB    A,#-0x10
   \   000264   4053         JC      ??halSleep_16
    404                    {
    405                      HAL_EXIT_CRITICAL_SECTION(intState);
   \   000266   85..82       MOV     DPL,?XSP + 0
   \   000269   85..83       MOV     DPH,?XSP + 1
   \   00026C   E0           MOVX    A,@DPTR
   \   00026D   A2E0         MOV     C,0xE0 /* A   */.0
   \   00026F   92AF         MOV     0xa8.7,C
    406          
    407                      /* AN044 - DELAYING EXTERNAL INTERRUPTS, do not relocate this line.
    408                       * it has to stay as close to PCON.IDLE = 1 as possible.
    409                       */
    410                      EXTERNAL_INTERRUPT_DELAY();
   \   000271   43FD02       ORL     0xfd,#0x2
   \   000274   D281         SETB    0x80.1
   \   000276                ; Setup parameters for call to function halSleepWait
   \   000276   7AB4         MOV     R2,#-0x4c

⌨️ 快捷键说明

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