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

📄 mac_power_management.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
     96          
     97              // Write default register values
     98              DISABLE_GLOBAL_INT();
   \   000004   C2AF         CLR     0xa8.7
     99          #if MAC_OPT_FFD
    100              WRITE_RFR16(MDMCTRL0, GET_MF(MF_PAN_COORDINATOR) ? MDMCTRL0_PAN_COORDINATOR : MDMCTRL0_NO_PAN_COORDINATOR);
   \   000006   90....       MOV     DPTR,#(macInfo + 6)
   \   000009   E0           MOVX    A,@DPTR
   \   00000A   A2E1         MOV     C,0xE0 /* A   */.1
   \   00000C   5004         JNC     ??mpmRestoreRegsAndRam_0
   \   00000E   791A         MOV     R1,#0x1a
   \   000010   8002         SJMP    ??mpmRestoreRegsAndRam_1
   \                     ??mpmRestoreRegsAndRam_0:
   \   000012   790A         MOV     R1,#0xa
   \                     ??mpmRestoreRegsAndRam_1:
   \   000014   E9           MOV     A,R1
   \   000015   90DF02       MOV     DPTR,#-0x20fe
   \   000018   F0           MOVX    @DPTR,A
   \   000019   90....       MOV     DPTR,#(macInfo + 6)
   \   00001C   E0           MOVX    A,@DPTR
   \   00001D   A2E1         MOV     C,0xE0 /* A   */.1
   \   00001F   74E2         MOV     A,#-0x1e
   \   000021   90DF03       MOV     DPTR,#-0x20fd
   \   000024   F0           MOVX    @DPTR,A
    101          #endif
    102              ENABLE_AUTOACK();
   \   000025   E0           MOVX    A,@DPTR
   \   000026   D2E4         SETB    0xE0 /* A   */.4
   \   000028   F0           MOVX    @DPTR,A
    103              WRITE_RFR16(MDMCTRL1, 0x1400);
   \   000029   7414         MOV     A,#0x14
   \   00002B   90DF04       MOV     DPTR,#-0x20fc
   \   00002E   F0           MOVX    @DPTR,A
   \   00002F   E4           CLR     A
   \   000030   90DF05       MOV     DPTR,#-0x20fb
   \   000033   F0           MOVX    @DPTR,A
    104              SET_FIFOP_THRESHOLD(4);
   \   000034   7403         MOV     A,#0x3
   \   000036   90DF4F       MOV     DPTR,#-0x20b1
   \   000039   F0           MOVX    @DPTR,A
    105              ENABLE_GLOBAL_INT();
   \   00003A   D2AF         SETB    0xa8.7
    106          
    107              // PAN ID, extended and short addresses
    108              WRITE_RFR16(PANID, mpib.macPANId);
   \   00003C   90....       MOV     DPTR,#(mpib + 29)
   \   00003F   E0           MOVX    A,@DPTR
   \   000040   90DF4B       MOV     DPTR,#-0x20b5
   \   000043   F0           MOVX    @DPTR,A
   \   000044   90....       MOV     DPTR,#(mpib + 28)
   \   000047   E0           MOVX    A,@DPTR
   \   000048   90DF4C       MOV     DPTR,#-0x20b4
   \   00004B   F0           MOVX    @DPTR,A
    109              WRITE_RFR16(SHORTADDR, mpib.macShortAddress);
   \   00004C   90....       MOV     DPTR,#(mpib + 33)
   \   00004F   E0           MOVX    A,@DPTR
   \   000050   90DF4D       MOV     DPTR,#-0x20b3
   \   000053   F0           MOVX    @DPTR,A
   \   000054   90....       MOV     DPTR,#(mpib + 32)
   \   000057   E0           MOVX    A,@DPTR
   \   000058   90DF4E       MOV     DPTR,#-0x20b2
   \   00005B   F0           MOVX    @DPTR,A
    110              msupWriteExtendedAddress(aExtendedAddress);
   \   00005C                ; Setup parameters for call to function msupWriteExtendedAddress
   \   00005C   7A..         MOV     R2,#(aExtendedAddress & 0xff)
   \   00005E   7B..         MOV     R3,#((aExtendedAddress >> 8) & 0xff)
   \   000060   12....       LCALL   msupWriteExtendedAddress
    111          
    112              // Frequency word
    113              msupSetChannel(ppib.phyCurrentChannel, TRUE);
   \   000063                ; Setup parameters for call to function msupSetChannel
   \   000063   7A01         MOV     R2,#0x1
   \   000065   90....       MOV     DPTR,#ppib
   \   000068   E0           MOVX    A,@DPTR
   \   000069   F9           MOV     R1,A
   \   00006A   12....       LCALL   msupSetChannel
    114          
    115          } // mpmRestoreRegsAndRam
   \   00006D   80..         SJMP    ??Subroutine0_0
    116          
    117          
    118          
    119          
    120          //-------------------------------------------------------------------------------------------------------
    121          //  void mpmSetTask(MAC_TASK_INFO *pTask)
    122          //
    123          //  DESCRIPTION:
    124          //      This task is responsible for controlling CC2430 power, as requested by the higher layer through
    125          //      mpmSetRequest. Power-down is currently only supported for non-beacon PANs.
    126          //
    127          //  TASK DATA:
    128          //      The new power mode (MPM_CC2430_ON, MPM_CC2430_XOSC_OFF, or MPM_CC2430_XOSC_AND_VREG_OFF)
    129          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    130          void mpmSetTask(MAC_TASK_INFO   *pTask) NEAR {
   \                     mpmSetTask:
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    131          
    132              // Powerdown is not permitted in non-beacon mode when "RX on when idle" is enabled
    133              if ((mpib.macBeaconOrder == 15) && mpib.macRxOnWhenIdle) {
   \   000005   EA           MOV     A,R2
   \   000006   2408         ADD     A,#0x8
   \   000008   FE           MOV     R6,A
   \   000009   EB           MOV     A,R3
   \   00000A   3400         ADDC    A,#0x0
   \   00000C   FF           MOV     R7,A
   \   00000D   90....       MOV     DPTR,#(mpib + 8)
   \   000010   E0           MOVX    A,@DPTR
   \   000011   640F         XRL     A,#0xf
   \   000013   7015         JNZ     ??mpmSetTask_0
   \   000015   90....       MOV     DPTR,#(mpib + 31)
   \   000018   E0           MOVX    A,@DPTR
   \   000019   600F         JZ      ??mpmSetTask_0
    134                  mschRemoveTask(pTask->priority, 0);
   \   00001B                ; Setup parameters for call to function mschRemoveTask
   \   00001B   7A00         MOV     R2,#0x0
   \   00001D   8E82         MOV     DPL,R6
   \   00001F   8F83         MOV     DPH,R7
   \   000021   E0           MOVX    A,@DPTR
   \   000022   F9           MOV     R1,A
   \   000023   12....       LCALL   mschRemoveTask & 0xFFFF
    135                  mpmSetConfirm(ERR_RX_ON_WHEN_IDLE);
   \   000026                ; Setup parameters for call to function mpmSetConfirm
   \   000026   7902         MOV     R1,#0x2
   \   000028   806D         SJMP    ??mpmSetTask_1
    136                  return;
    137              }
    138          
    139              // Come back later if we're not in the default MAC state (there's something going on...)
    140              if (macInfo.state != MAC_STATE_DEFAULT) {
   \                     ??mpmSetTask_0:
   \   00002A   90....       MOV     DPTR,#macInfo
   \   00002D   E0           MOVX    A,@DPTR
   \   00002E   6007         JZ      ??mpmSetTask_2
    141                  mschRescheduleTask(pTask, 0);
   \   000030                ; Setup parameters for call to function mschRescheduleTask
   \   000030   7900         MOV     R1,#0x0
   \   000032   12....       LCALL   mschRescheduleTask & 0xFFFF
    142                  return;
   \   000035   8063         SJMP    ??mpmSetTask_3
    143              }
    144          
    145              // Switch to the new power mode
    146              mpmInfo.selectedMode = (BYTE) pTask->taskData;
   \                     ??mpmSetTask_2:
   \   000037   8A82         MOV     DPL,R2
   \   000039   8B83         MOV     DPH,R3
   \   00003B   A3           INC     DPTR
   \   00003C   A3           INC     DPTR
   \   00003D   A3           INC     DPTR
   \   00003E   E0           MOVX    A,@DPTR
   \   00003F   90....       MOV     DPTR,#(mpmInfo + 1)
   \   000042   F0           MOVX    @DPTR,A
    147          
    148              // In a beacon-enabled network the beacon handler will control powerup and powerdown
    149              // In a non-beacon network the changes will be made directly from here:
    150              switch (mpmInfo.selectedMode) {
   \   000043   12....       LCALL   ?UC_SWITCH_DENSE
   \                     `?<Jumptable for mpmSetTask>_0`:
   \   000046   00           DB        0
   \   000047   02           DB        2
   \   000048   ....         DW        ??mpmSetTask_4
   \   00004A   ....         DW        ??mpmSetTask_5
   \   00004C   ....         DW        ??mpmSetTask_6
   \   00004E   ....         DW        ??mpmSetTask_7
    151              case MPM_CC2430_ON:
    152          
    153                  // Turn on VREG?
    154                  if (mpmInfo.currentState == MPM_CC2430_XOSC_AND_VREG_OFF) {
   \                     ??mpmSetTask_5:
   \   000050   90....       MOV     DPTR,#mpmInfo
   \   000053   E0           MOVX    A,@DPTR
   \   000054   6402         XRL     A,#0x2
   \   000056   7003         JNZ     ??mpmSetTask_8
    155                      mpmTurnOnVregAndReset();
   \   000058                ; Setup parameters for call to function mpmTurnOnVregAndReset
   \   000058   12....       LCALL   mpmTurnOnVregAndReset & 0xFFFF
    156                  }
    157          
    158                  /*
    159                  // Restore registers and RAM if the voltage regulator was turned off
    160                  if (mpmInfo.currentState == MPM_CC2430_XOSC_AND_VREG_OFF) {
    161                      mpmRestoreRegsAndRam();
    162                  }
    163                  */
    164          
    165                  // Turn on XOSC?
    166                  if (mpmInfo.currentState != MPM_CC2430_ON) {
   \                     ??mpmSetTask_8:
   \   00005B   E0           MOVX    A,@DPTR
   \   00005C   6003         JZ      ??mpmSetTask_9
    167                      mpmTurnOnXosc();
   \   00005E                ; Setup parameters for call to function mpmTurnOnXosc
   \   00005E   12....       LCALL   mpmTurnOnXosc & 0xFFFF
    168                  }
    169          
    170                  mrxInfo.keepFifopIntOff = FALSE;
   \                     ??mpmSetTask_9:
   \   000061   E4           CLR     A
   \   000062   90....       MOV     DPTR,#(mrxInfo + 15)
   \   000065   F0           MOVX    @DPTR,A
    171          
    172                  mpmInfo.currentState = MPM_CC2430_ON;
   \   000066   801A         SJMP    ??mpmSetTask_4
    173                  break;
    174          
    175              case MPM_CC2430_XOSC_OFF:
    176                  T2_STOP();
   \                     ??mpmSetTask_6:
   \   000068   53C3FE       ANL     0xc3,#0xfe
    177                  mrxInfo.keepFifopIntOff = TRUE;
   \   00006B   7401         MOV     A,#0x1
   \   00006D   90....       MOV     DPTR,#(mrxInfo + 15)
   \   000070   F0           MOVX    @DPTR,A
    178                  mpmTurnOffXosc();
   \   000071                ; Setup parameters for call to function mpmTurnOffXosc
   \   000071   12....       LCALL   mpmTurnOffXosc & 0xFFFF
   \   000074   800C         SJMP    ??mpmSetTask_4
    179                  break;
    180          
    181              case MPM_CC2430_XOSC_AND_VREG_OFF:
    182                  T2_STOP();
   \                     ??mpmSetTask_7:
   \   000076   53C3FE       ANL     0xc3,#0xfe
    183                  mrxInfo.keepFifopIntOff = TRUE;
   \   000079   7401         MOV     A,#0x1
   \   00007B   90....       MOV     DPTR,#(mrxInfo + 15)
   \   00007E   F0           MOVX    @DPTR,A
    184                  mpmTurnOffVreg();
   \   00007F                ; Setup parameters for call to function mpmTurnOffVreg
   \   00007F   12....       LCALL   mpmTurnOffVreg & 0xFFFF
    185                  break;
    186              }

⌨️ 快捷键说明

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