📄 mac_power_management.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 16/Jan/2007 15:30:03 #
# Copyright 2004-2006 IAR Systems. All rights reserved. #
# #
# Core = plain #
# Code model = banked #
# Data model = large #
# Calling convention = xdata reentrant #
# Constant location = data #
# Dptr setup = 1,16 #
# Source file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\lib\mac\CC2430\mac_power_management.c #
# Command line = -I "C:\Program Files\IAR Systems\Embedded #
# Workbench 4.05 Evaluation version\8051\INC\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\SRC\LIB\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\INC\CLIB\" -I #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\..\..\..\include\ -I #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\..\..\..\include\mac\cc2430\ #
# -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_E #
# ngine\Test\mac\mac_loc\..\..\..\include\hal\cc243 #
# 0\ -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LO #
# C_Engine\Test\mac\mac_loc\..\..\..\apps\ -D #
# CC2430EB -D USE_LED -lCN #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\ -lA #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\ -o #
# E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\Obj\ -e -s9 --debug #
# --core=plain --dptr=16,1 --data_model=large #
# --code_model=banked --calling_convention=xdata_re #
# entrant --place_constants=data --nr_virtual_regs #
# 8 E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_En #
# gine\lib\mac\CC2430\mac_power_management.c #
# List file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\mac_power_manag #
# ement.lst #
# Object file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\Obj\mac_power_manage #
# ment.r51 #
# #
# #
##############################################################################
E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_power_management.c
1 /*******************************************************************************************************
2 * *
3 * ********** *
4 * ************ *
5 * *** *** *
6 * *** +++ *** *
7 * *** + + *** *
8 * *** + CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY *
9 * *** + + *** CC2430 Power Management *
10 * *** +++ *** *
11 * *** *** *
12 * ************ *
13 * ********** *
14 * *
15 *******************************************************************************************************
16 * CONFIDENTIAL *
17 * The use of this file is restricted by the signed MAC software license agreement. *
18 * *
19 * Copyright Chipcon AS, 2005 *
20 *******************************************************************************************************
21 * This module contains functions to be used by the higher layer to power down the CC2430. *
22 *******************************************************************************************************/
23 #include <mac_headers.h>
\ In segment SFR_AN, at 0x87
\ unsigned char volatile __sfr PCON
\ PCON:
\ 000000 DS 1
\ In segment SFR_AN, at 0xbe
\ unsigned char volatile __sfr SLEEP
\ SLEEP:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc3
\ unsigned char volatile __sfr T2CNF
\ T2CNF:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc6
\ unsigned char volatile __sfr CLKCON
\ CLKCON:
\ 000000 DS 1
\ In segment SFR_AN, at 0xe1
\ unsigned char volatile __sfr RFST
\ RFST:
\ 000000 DS 1
24
25 //-------------------------------------------------------------------------------------------------------
26 // Internal module data
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
27 MPM_INFO mpmInfo;
\ mpmInfo:
\ 000000 DS 2
28 //-------------------------------------------------------------------------------------------------------
29 void mpmSetTask(MAC_TASK_INFO *pTask);
30
31 static void ResumeCoordinatorAfterPowerDown (RESUME_MODE resumeMode, BOOL synchronousStart);
32 static void ResumeDeviceAfterPowerDown (RESUME_MODE resumeMode, BOOL synchronousStart);
33
34 //-------------------------------------------------------------------------------------------------------
35 // Simple power up/down functions
\ In segment NEAR_CODE, align 1, keep-with-next
36 ROOT void mpmTurnOnVregAndReset(void)
\ mpmTurnOnVregAndReset:
37 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
38 DISABLE_GLOBAL_INT ();
\ 000004 C2AF CLR 0xa8.7
39 //RFR_MAINH = RESET_RF_CHIP_ON;
40 RFPWR = VREG_POWER_UP;
\ 000006 7404 MOV A,#0x4
\ 000008 90DF17 MOV DPTR,#-0x20e9
\ 00000B F0 MOVX @DPTR,A
41 CLKCON = 0;
\ 00000C 75C600 MOV 0xc6,#0x0
42 halMacWait (0xFF);
\ 00000F ; Setup parameters for call to function halMacWait
\ 00000F 7AFF MOV R2,#-0x1
\ 000011 7B00 MOV R3,#0x0
\ 000013 12.... LCALL halMacWait
43 ENABLE_GLOBAL_INT ();
\ 000016 02.... LJMP ?Subroutine0
44 }
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 D2AF SETB 0xa8.7
\ ??Subroutine0_0:
\ 000002 D083 POP DPH
\ 000004 D082 POP DPL
\ 000006 22 RET
45
\ In segment NEAR_CODE, align 1, keep-with-next
46 ROOT void mpmTurnOffReset(void)
\ mpmTurnOffReset:
47 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
48 DISABLE_GLOBAL_INT();
\ 000000 C2AF CLR 0xa8.7
49 //RFR_MAINH = RESET_RF_CHIP_OFF;
50 ENABLE_GLOBAL_INT();
\ 000002 D2AF SETB 0xa8.7
51 }
\ 000004 22 RET
52
\ In segment NEAR_CODE, align 1, keep-with-next
53 ROOT void mpmTurnOnXosc(void)
\ mpmTurnOnXosc:
54 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
55 DISABLE_GLOBAL_INT();
\ 000000 C2AF CLR 0xa8.7
56 ISRXON; // TBD: Must be WRONG
\ 000002 75E1E2 MOV 0xe1,#-0x1e
57 ENABLE_GLOBAL_INT();
\ 000005 D2AF SETB 0xa8.7
58 }
\ 000007 22 RET
59
\ In segment NEAR_CODE, align 1, keep-with-next
60 ROOT void mpmTurnOffVreg(void)
\ mpmTurnOffVreg:
61 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
62 DISABLE_GLOBAL_INT();
\ 000004 C2AF CLR 0xa8.7
63 //RFR_MAINH = RESET_RF_CHIP_ON;
64 RFPWR = VREG_POWER_DOWN;
\ 000006 7404 MOV A,#0x4
\ 000008 90DF17 MOV DPTR,#-0x20e9
\ 00000B F0 MOVX @DPTR,A
65 ENABLE_GLOBAL_INT();
\ 00000C 80.. SJMP ?Subroutine0
66 }
67
\ In segment NEAR_CODE, align 1, keep-with-next
68 ROOT void mpmTurnOffXosc(void)
\ mpmTurnOffXosc:
69 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
70 DISABLE_GLOBAL_INT();
\ 000000 C2AF CLR 0xa8.7
71 ISRFOFF;
\ 000002 75E1E5 MOV 0xe1,#-0x1b
72 ENABLE_GLOBAL_INT();
\ 000005 D2AF SETB 0xa8.7
73 }
\ 000007 22 RET
74
75 //-------------------------------------------------------------------------------------------------------
76
77
78
79
80 //-------------------------------------------------------------------------------------------------------
81 // void mpmRestoreRegsAndRam(void)
82 //
83 // DESCRIPTION:
84 // Restores all CC2430 registers and RAM, assuming that there was no activity in the MAC layer at
85 // power-down. That includes:
86 // MDMCTRL0 (register) (PAN coordinator bit)
87 // MDMCTRL1 (register) (Correlation threshold, only required by old chip revisions, see data
88 // sheets)
89 // SECCTRL0 (register)
90 // PANID (RAM)
91 // IEEEADDR (RAM)
92 // SHORTADDR (RAM)
93 // FSCTRL (register)
94 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
95 ROOT void mpmRestoreRegsAndRam(void) {
\ mpmRestoreRegsAndRam:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -