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

📄 hal_sleep.lst

📁 CC2431无线定位程序非常有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000281   D281         SETB    0x80.1
   \   000283                ; Setup parameters for call to function halSleepWait
   \   000283   7AB4         MOV     R2,#-0x4c
   \   000285   7B00         MOV     R3,#0x0
   \   000287   90....       MOV     DPTR,#(halSleepWait & 0xffff)
   \   00028A   74..         MOV     A,#((halSleepWait >> 16) & 0xff)
   \   00028C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00028F   53FDFD       ANL     0xfd,#0xfd
   \   000292   438F02       ORL     0x8f,#0x2
    411          
    412                      /* set CC2430 power mode */
    413                      HAL_SLEEP_SET_POWER_MODE(halPwrMgtMode);
   \   000295   90DF60       MOV     DPTR,#-0x20a0
   \   000298   E0           MOVX    A,@DPTR
   \   000299   C3           CLR     C
   \   00029A   9404         SUBB    A,#0x4
   \   00029C   53BEFC       ANL     0xbe,#0xfc
   \   00029F   E5BE         MOV     A,0xbe
   \   0002A1   90....       MOV     DPTR,#??halPwrMgtMode
   \   0002A4   E0           MOVX    A,@DPTR
   \   0002A5   45BE         ORL     A,0xbe
   \   0002A7   F5BE         MOV     0xbe,A
   \   0002A9   4009         JC      ??halSleep_19
   \   0002AB   00           NOP
   \   0002AC   00           NOP
   \   0002AD   00           NOP
   \   0002AE   7403         MOV     A,#0x3
   \   0002B0   55BE         ANL     A,0xbe
   \   0002B2   6004         JZ      ??halSleep_20
   \                     ??halSleep_19:
   \   0002B4   438701       ORL     0x87,#0x1
   \   0002B7   00           NOP
    414                      /* wake up from sleep */
    415          
    416                      HAL_ENTER_CRITICAL_SECTION(intState);
   \                     ??halSleep_20:
   \   0002B8   A2AF         MOV     C,0xa8.7
   \   0002BA   E4           CLR     A
   \   0002BB   92E0         MOV     0xE0 /* A   */.0,C
   \   0002BD   85..82       MOV     DPL,?XSP + 0
   \   0002C0   85..83       MOV     DPH,?XSP + 1
   \   0002C3   F0           MOVX    @DPTR,A
   \   0002C4   C2AF         CLR     0xa8.7
    417                    }
    418          
    419                    /* restore interrupt enable registers */
    420                    HAL_SLEEP_IE_RESTORE(ien0, ien1, ien2);
   \                     ??halSleep_18:
   \   0002C6   85..A8       MOV     0xa8,?V0 + 0
   \   0002C9   85..B8       MOV     0xb8,?V0 + 1
   \   0002CC   85..9A       MOV     0x9a,?V0 + 2
    421          
    422                    /* disable sleep timer interrupt */
    423                    HAL_SLEEP_TIMER_DISABLE_INT();
   \   0002CF   C2AD         CLR     0xa8.5
    424          
    425                    /* set main clock source to crystal for Rev B and Rev D only */
    426                    HAL_SLEEP_SET_MAIN_CLOCK_CRYSTAL();
   \   0002D1   53BEFB       ANL     0xbe,#0xfb
   \                     ??halSleep_21:
   \   0002D4   E5BE         MOV     A,0xbe
   \   0002D6   A2E6         MOV     C,0xE0 /* A   */.6
   \   0002D8   50FA         JNC     ??halSleep_21
   \   0002DA   00           NOP
   \   0002DB                ; Setup parameters for call to function halSleepWait
   \   0002DB   7A3F         MOV     R2,#0x3f
   \   0002DD   7B00         MOV     R3,#0x0
   \   0002DF   90....       MOV     DPTR,#(halSleepWait & 0xffff)
   \   0002E2   74..         MOV     A,#((halSleepWait >> 16) & 0xff)
   \   0002E4   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   0002E7   75C600       MOV     0xc6,#0x0
   \                     ??halSleep_22:
   \   0002EA   E5C6         MOV     A,0xc6
   \   0002EC   70FC         JNZ     ??halSleep_22
   \   0002EE   43BE04       ORL     0xbe,#0x4
    427          
    428                    /* Calculate timer elasped */
    429                    halAccumulatedSleepTime += (HalTimerElapsed() / TICK_COUNT);
   \   0002F1                ; Setup parameters for call to function HalTimerElapsed
   \   0002F1   90....       MOV     DPTR,#(HalTimerElapsed & 0xffff)
   \   0002F4   74..         MOV     A,#((HalTimerElapsed >> 16) & 0xff)
   \   0002F6   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   0002F9   8A..         MOV     ?V0 + 0,R2
   \   0002FB   8B..         MOV     ?V0 + 1,R3
   \   0002FD   8C..         MOV     ?V0 + 2,R4
   \   0002FF   8D..         MOV     ?V0 + 3,R5
   \   000301   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   000304   78..         MOV     R0,#?V0 + 0
   \   000306   12....       LCALL   ?L_ADD_TO_X
    430          
    431                    /* deduct the sleep time for the next iteration */
    432                    if ( osal_timeout > halAccumulatedSleepTime)
   \   000309   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   00030C   8E..         MOV     ?V0 + 0,R6
   \   00030E   8F..         MOV     ?V0 + 1,R7
   \   000310   75..00       MOV     ?V0 + 2,#0x0
   \   000313   75..00       MOV     ?V0 + 3,#0x0
   \   000316   78..         MOV     R0,#?V0 + 0
   \   000318   12....       LCALL   ?UL_GT_X
   \   00031B   5011         JNC     ??halSleep_23
    433                    {
    434                      osal_timeout -= halAccumulatedSleepTime;
   \   00031D   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   000320   78..         MOV     R0,#?V0 + 0
   \   000322   12....       LCALL   ?L_MOV_X
   \   000325   C3           CLR     C
   \   000326   EE           MOV     A,R6
   \   000327   95..         SUBB    A,?V0 + 0
   \   000329   FE           MOV     R6,A
   \   00032A   EF           MOV     A,R7
   \   00032B   95..         SUBB    A,?V0 + 1
   \   00032D   FF           MOV     R7,A
    435                    }
    436          
    437                    /* if the remaining time is less than the PM_MIN_SLEEP_TIME
    438                     * burn the remaining time in a delay loop
    439                     * AN044 - MINIMUM SLEEP PERIODS WITH PULL-DOWN RESISTOR
    440                     */
    441                    if ( osal_timeout < PM_MIN_SLEEP_TIME )
   \                     ??halSleep_23:
   \   00032E   C3           CLR     C
   \   00032F   EE           MOV     A,R6
   \   000330   940E         SUBB    A,#0xe
   \   000332   EF           MOV     A,R7
   \   000333   9400         SUBB    A,#0x0
   \   000335   503F         JNC     ??halSleep_24
    442                    {
    443                      halSleepWait(osal_timeout*1000);
   \   000337                ; Setup parameters for call to function halSleepWait
   \   000337   EE           MOV     A,R6
   \   000338   FA           MOV     R2,A
   \   000339   EF           MOV     A,R7
   \   00033A   FB           MOV     R3,A
   \   00033B   EA           MOV     A,R2
   \   00033C   75F0E8       MOV     B,#-0x18
   \   00033F   A4           MUL     AB
   \   000340   CA           XCH     A,R2
   \   000341   ACF0         MOV     R4,B
   \   000343   75F003       MOV     B,#0x3
   \   000346   A4           MUL     AB
   \   000347   2C           ADD     A,R4
   \   000348   FC           MOV     R4,A
   \   000349   75F0E8       MOV     B,#-0x18
   \   00034C   EB           MOV     A,R3
   \   00034D   A4           MUL     AB
   \   00034E   2C           ADD     A,R4
   \   00034F   FB           MOV     R3,A
   \   000350   90....       MOV     DPTR,#(halSleepWait & 0xffff)
   \   000353   74..         MOV     A,#((halSleepWait >> 16) & 0xff)
   \   000355   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    444                      halAccumulatedSleepTime += osal_timeout;
   \   000358   8E..         MOV     ?V0 + 0,R6
   \   00035A   8F..         MOV     ?V0 + 1,R7
   \   00035C   75..00       MOV     ?V0 + 2,#0x0
   \   00035F   75..00       MOV     ?V0 + 3,#0x0
   \   000362   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   000365   78..         MOV     R0,#?V0 + 0
   \   000367   12....       LCALL   ?L_ADD_TO_X
    445                      osal_timeout = halAccumulatedSleepTime;
   \   00036A   90....       MOV     DPTR,#??halAccumulatedSleepTime
   \   00036D   78..         MOV     R0,#?V0 + 0
   \   00036F   12....       LCALL   ?L_MOV_X
   \   000372   AE..         MOV     R6,?V0 + 0
   \   000374   AF..         MOV     R7,?V0 + 1
    446                    }
    447          
    448          #ifdef HAL_SLEEP_DEBUG_LED
    449                    HAL_TURN_ON_LED3();
    450          #else
    451                    /* use this to turn LEDs back on after sleep */
    452                    HalLedExitSleep();
   \                     ??halSleep_24:
   \   000376                ; Setup parameters for call to function HalLedExitSleep
   \   000376   90....       MOV     DPTR,#(HalLedExitSleep & 0xffff)
   \   000379   74..         MOV     A,#((HalLedExitSleep >> 16) & 0xff)
   \   00037B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    453          #endif
    454          
    455                    /* handle peripherals; exit loop if key presses */
    456                    if ( HalKeyExitSleep() )
   \   00037E                ; Setup parameters for call to function HalKeyExitSleep
   \   00037E   90....       MOV     DPTR,#(HalKeyExitSleep & 0xffff)
   \   000381   74..         MOV     A,#((HalKeyExitSleep >> 16) & 0xff)
   \   000383   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000386   E9           MOV     A,R1
   \   000387   701F         JNZ     ??halSleep_12
    457                    {
    458          #if defined (PM2_HOLDOFF_TIME) && (PM2_HOLDOFF_TIME > 0)
    459                      /* The deepest sleep alowwed is PM1 until after the timer expired
    460                       * AN044 - COMBINING POWER MODES
    461                       */
    462                      halSleepLevel = CC2430_PM1;
    463                      osal_stop_timerEx (Hal_TaskID, HAL_SLEEP_TIMER_EVENT);
    464                      osal_start_timerEx (Hal_TaskID, HAL_SLEEP_TIMER_EVENT, PM2_HOLDOFF_TIME);
    465          #endif /* (PM2_HOLDOFF_TIME > 0) */
    466                      break;
    467                    }
    468          
    469                    /* exit loop if no timer active */
    470                    if ( timeout == 0 ) break;
   \   000389   7401         MOV     A,#0x1
   \   00038B   12....       LCALL   ?XSTACK_DISP0_8
   \   00038E   C082         PUSH    DPL
   \   000390   C083         PUSH    DPH
   \   000392   90....       MOV     DPTR,#__Constant_0
   \   000395   78..         MOV     R0,#?V0 + 0
   \   000397   12....       LCALL   ?L_MOV_X
   \   00039A   D083         POP     DPH
   \   00039C   D082         POP     DPL
   \   00039E   78..         MOV     R0,#?V0 + 0
   \   0003A0   12....       LCALL   ?L_EQ_X
   \   0003A3   6003         JZ      $+5
   \   0003A5   02....       LJMP    ??halSleep_10 & 0xFFFF
    471                  }
    472          
    473                  /* power on the MAC; blocks until completion */
    474                  MAC_PwrOnReq();
   \                     ??halSleep_12:
   \   0003A8                ; Setup parameters for call to function MAC_PwrOnReq
   \   0003A8   90....       MOV     DPTR,#(MAC_PwrOnReq & 0xffff)
   \   0003AB   74..         MOV     A,#((MAC_PwrOnReq >> 16) & 0xff)
   \   0003AD   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    475          
    476                  /* adjust OSAL timers */
    477     

⌨️ 快捷键说明

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