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

📄 hal_sleep.lst

📁 CC2431无线定位程序非常有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
    343              HAL_ENTER_CRITICAL_SECTION(intState);
   \                     ??halSleep_5:
   \   000132   A2AF         MOV     C,0xa8.7
   \   000134   E4           CLR     A
   \   000135   92E0         MOV     0xE0 /* A   */.0,C
   \   000137   85..82       MOV     DPL,?XSP + 0
   \   00013A   85..83       MOV     DPH,?XSP + 1
   \   00013D   F0           MOVX    @DPTR,A
   \   00013E   C2AF         CLR     0xa8.7
    344          
    345              /* one last check for active OSAL task */
    346              if (osalNextActiveTask() == NULL)
   \   000140                ; Setup parameters for call to function osalNextActiveTask
   \   000140   90....       MOV     DPTR,#(osalNextActiveTask & 0xffff)
   \   000143   74..         MOV     A,#((osalNextActiveTask >> 16) & 0xff)
   \   000145   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000148   EA           MOV     A,R2
   \   000149   7001         JNZ     ??halSleep_8
   \   00014B   EB           MOV     A,R3
   \                     ??halSleep_8:
   \   00014C   6003         JZ      $+5
   \   00014E   02....       LJMP    ??halSleep_9 & 0xFFFF
    347              {
    348                /* always use "deep sleep" to turn off radio VREG on CC2430 */
    349                if (MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS)
   \   000151                ; Setup parameters for call to function MAC_PwrOffReq
   \   000151   7902         MOV     R1,#0x2
   \   000153   90....       MOV     DPTR,#(MAC_PwrOffReq & 0xffff)
   \   000156   74..         MOV     A,#((MAC_PwrOffReq >> 16) & 0xff)
   \   000158   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00015B   E9           MOV     A,R1
   \   00015C   6003         JZ      $+5
   \   00015E   02....       LJMP    ??halSleep_9 & 0xFFFF
    350                {
    351                  while ( (HAL_SLEEP_MS_TO_320US(halAccumulatedSleepTime) < timeout) || (timeout == 0) )
   \                     ??halSleep_10:
   \   000161   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   000164   78..         MOV     R0,#?V0 + 0
   \   000166   12....       LCALL   ?L_MOV_X
   \   000169   90....       MOV     DPTR,#__Constant_64
   \   00016C   78..         MOV     R0,#?V0 + 4
   \   00016E   12....       LCALL   ?L_MOV_X
   \   000171   78..         MOV     R0,#?V0 + 0
   \   000173   79..         MOV     R1,#?V0 + 4
   \   000175   12....       LCALL   ?L_MUL
   \   000178   90....       MOV     DPTR,#__Constant_1f
   \   00017B   78..         MOV     R0,#?V0 + 0
   \   00017D   12....       LCALL   ?L_ADD_X
   \   000180   7405         MOV     A,#0x5
   \   000182   78..         MOV     R0,#?V0 + 0
   \   000184   12....       LCALL   ?UL_SHR
   \   000187   7401         MOV     A,#0x1
   \   000189   12....       LCALL   ?XSTACK_DISP0_8
   \   00018C   78..         MOV     R0,#?V0 + 4
   \   00018E   12....       LCALL   ?L_MOV_X
   \   000191   78..         MOV     R0,#?V0 + 4
   \   000193   79..         MOV     R1,#?V0 + 0
   \   000195   12....       LCALL   ?UL_GT
   \   000198   401F         JC      ??halSleep_11
   \   00019A   7401         MOV     A,#0x1
   \   00019C   12....       LCALL   ?XSTACK_DISP0_8
   \   00019F   C082         PUSH    DPL
   \   0001A1   C083         PUSH    DPH
   \   0001A3   90....       MOV     DPTR,#__Constant_0
   \   0001A6   78..         MOV     R0,#?V0 + 0
   \   0001A8   12....       LCALL   ?L_MOV_X
   \   0001AB   D083         POP     DPH
   \   0001AD   D082         POP     DPL
   \   0001AF   78..         MOV     R0,#?V0 + 0
   \   0001B1   12....       LCALL   ?L_EQ_X
   \   0001B4   6003         JZ      $+5
   \   0001B6   02....       LJMP    ??halSleep_12 & 0xFFFF
    352                  {
    353                    /* get peripherals ready for sleep */
    354                    HalKeyEnterSleep();
   \                     ??halSleep_11:
   \   0001B9                ; Setup parameters for call to function HalKeyEnterSleep
   \   0001B9   90....       MOV     DPTR,#(HalKeyEnterSleep & 0xffff)
   \   0001BC   74..         MOV     A,#((HalKeyEnterSleep >> 16) & 0xff)
   \   0001BE   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();
   \   0001C1                ; Setup parameters for call to function HalLedEnterSleep
   \   0001C1   90....       MOV     DPTR,#(HalLedEnterSleep & 0xffff)
   \   0001C4   74..         MOV     A,#((HalLedEnterSleep >> 16) & 0xff)
   \   0001C6   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();
   \   0001C9   53BEFB       ANL     0xbe,#0xfb
   \                     ??halSleep_13:
   \   0001CC   E5BE         MOV     A,0xbe
   \   0001CE   A2E5         MOV     C,0xE0 /* A   */.5
   \   0001D0   50FA         JNC     ??halSleep_13
   \   0001D2   00           NOP
   \   0001D3   75C649       MOV     0xc6,#0x49
   \                     ??halSleep_14:
   \   0001D6   7449         MOV     A,#0x49
   \   0001D8   65C6         XRL     A,0xc6
   \   0001DA   70FA         JNZ     ??halSleep_14
   \   0001DC   43BE04       ORL     0xbe,#0x4
    365          
    366                    /* enable sleep timer interrupt */
    367                    if (timeout != 0)
   \   0001DF   7401         MOV     A,#0x1
   \   0001E1   12....       LCALL   ?XSTACK_DISP0_8
   \   0001E4   C082         PUSH    DPL
   \   0001E6   C083         PUSH    DPH
   \   0001E8   90....       MOV     DPTR,#__Constant_0
   \   0001EB   78..         MOV     R0,#?V0 + 0
   \   0001ED   12....       LCALL   ?L_MOV_X
   \   0001F0   D083         POP     DPH
   \   0001F2   D082         POP     DPL
   \   0001F4   78..         MOV     R0,#?V0 + 0
   \   0001F6   12....       LCALL   ?L_EQ_X
   \   0001F9   6051         JZ      ??halSleep_15
    368                    {
    369                      if (timeout > HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ))
   \   0001FB   7401         MOV     A,#0x1
   \   0001FD   12....       LCALL   ?XSTACK_DISP0_8
   \   000200   C082         PUSH    DPL
   \   000202   C083         PUSH    DPH
   \   000204   90....       MOV     DPTR,#__Constant_185197
   \   000207   78..         MOV     R0,#?V0 + 0
   \   000209   12....       LCALL   ?L_MOV_X
   \   00020C   D083         POP     DPH
   \   00020E   D082         POP     DPL
   \   000210   78..         MOV     R0,#?V0 + 0
   \   000212   12....       LCALL   ?UL_GT_X
   \   000215   4017         JC      ??halSleep_16
    370                      {
    371                        timeout -= HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME );
   \   000217   90....       MOV     DPTR,#__Constant_ffe7ae6a
   \   00021A   78..         MOV     R0,#?V0 + 0
   \   00021C   12....       LCALL   ?L_MOV_X
   \   00021F   7401         MOV     A,#0x1
   \   000221   12....       LCALL   ?XSTACK_DISP0_8
   \   000224   78..         MOV     R0,#?V0 + 0
   \   000226   12....       LCALL   ?L_ADD_TO_X
    372                        halSleepSetTimer(HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ));
   \   000229                ; Setup parameters for call to function halSleepSetTimer
   \   000229   90....       MOV     DPTR,#__Constant_185196
   \   00022C   8005         SJMP    ??halSleep_17
    373                      }
    374                      else
    375                      {
    376                        /* set sleep timer */
    377                        halSleepSetTimer(timeout);
   \                     ??halSleep_16:
   \   00022E                ; Setup parameters for call to function halSleepSetTimer
   \   00022E   7401         MOV     A,#0x1
   \   000230   12....       LCALL   ?XSTACK_DISP0_8
   \                     ??halSleep_17:
   \   000233   78..         MOV     R0,#?V0 + 0
   \   000235   12....       LCALL   ?L_MOV_X
   \   000238   AA..         MOV     R2,?V0 + 0
   \   00023A   AB..         MOV     R3,?V0 + 1
   \   00023C   AC..         MOV     R4,?V0 + 2
   \   00023E   AD..         MOV     R5,?V0 + 3
   \   000240   90....       MOV     DPTR,#(halSleepSetTimer & 0xffff)
   \   000243   74..         MOV     A,#((halSleepSetTimer >> 16) & 0xff)
   \   000245   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    378                      }
    379          
    380                      /* set up sleep timer interrupt */
    381                      HAL_SLEEP_TIMER_CLEAR_INT();
   \   000248   C2C7         CLR     0xc0.7
    382                      HAL_SLEEP_TIMER_ENABLE_INT();
   \   00024A   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_15:
   \   00024C   E5A8         MOV     A,0xa8
   \   00024E   F5..         MOV     ?V0 + 0,A
   \   000250   E5B8         MOV     A,0xb8
   \   000252   F5..         MOV     ?V0 + 1,A
   \   000254   E59A         MOV     A,0x9a
   \   000256   F5..         MOV     ?V0 + 2,A
   \   000258   53A820       ANL     0xa8,#0x20
   \   00025B   E5A8         MOV     A,0xa8
   \   00025D   53B820       ANL     0xb8,#0x20
   \   000260   E5B8         MOV     A,0xb8
   \   000262   539A12       ANL     0x9a,#0x12
   \   000265   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) )
   \   000267   78..         MOV     R0,#(SFB(XSP) & 0xff)
   \   000269   C3           CLR     C
   \   00026A   E6           MOV     A,@R0
   \   00026B   9400         SUBB    A,#0x0
   \   00026D   08           INC     R0
   \   00026E   E6           MOV     A,@R0
   \   00026F   94F0         SUBB    A,#-0x10
   \   000271   4053         JC      ??halSleep_18
    404                    {
    405                      HAL_EXIT_CRITICAL_SECTION(intState);
   \   000273   85..82       MOV     DPL,?XSP + 0
   \   000276   85..83       MOV     DPH,?XSP + 1
   \   000279   E0           MOVX    A,@DPTR
   \   00027A   A2E0         MOV     C,0xE0 /* A   */.0
   \   00027C   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();
   \   00027E   43FD02       ORL     0xfd,#0x2

⌨️ 快捷键说明

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