📄 mac_timer.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 16/Jan/2007 15:33:54 #
# 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_timer.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 #
# USE_LED -D SOC_BB -lCN "E:\公司产品资料\Zigbee\cc #
# 2431\cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_B #
# B, hex\List\" -lA "E:\公司产品资料\Zigbee\cc2431\ #
# cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_BB, #
# hex\List\" -o "E:\公司产品资料\Zigbee\cc2431\cc24 #
# 31定位\LOC_Engine\Test\mac\mac_loc\SOC_BB, #
# hex\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_timer.c #
# List file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\SOC_BB, #
# hex\List\mac_timer.lst #
# Object file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\SOC_BB, hex\Obj\mac_timer.r51 #
# #
# #
##############################################################################
E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_timer.c
1 /*******************************************************************************************************
2 * *
3 * ********** *
4 * ************ *
5 * *** *** *
6 * *** +++ *** *
7 * *** + + *** *
8 * *** + CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY *
9 * *** + + *** Low-Level Timing Functions *
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 the MAC callback timer, which is used to handle timer events, and start the *
22 * execution of tasks. handles. The timer generates a T1.COMPA interrupt at every *
23 * 320 usecs = 20 symbols = 1 backoff slot. *
24 * *
25 * Command strobes that need to be aligned with backoff slot boundary must use the WAIT_FOR_BOUNADRY() *
26 * macro. *
27 * *
28 * NOTE: These functions are meant to be used with an 32MHz crystal oscillator! *
29 *******************************************************************************************************/
30 #include "mac_headers.h"
\ In segment SFR_AN, at 0x94
\ unsigned char volatile __sfr T2CMP
\ T2CMP:
\ 000000 DS 1
\ In segment SFR_AN, at 0x9c
\ unsigned char volatile __sfr T2PEROF0
\ T2PEROF0:
\ 000000 DS 1
\ In segment SFR_AN, at 0x9d
\ unsigned char volatile __sfr T2PEROF1
\ T2PEROF1:
\ 000000 DS 1
\ In segment SFR_AN, at 0x9e
\ unsigned char volatile __sfr T2PEROF2
\ T2PEROF2:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa1
\ unsigned char volatile __sfr T2OF0
\ T2OF0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa2
\ unsigned char volatile __sfr T2OF1
\ T2OF1:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa3
\ unsigned char volatile __sfr T2OF2
\ T2OF2:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa4
\ unsigned char volatile __sfr T2CAPLPL
\ T2CAPLPL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa5
\ unsigned char volatile __sfr T2CAPHPH
\ T2CAPHPH:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa6
\ unsigned char volatile __sfr T2TLD
\ T2TLD:
\ 000000 DS 1
\ In segment SFR_AN, at 0xa7
\ unsigned char volatile __sfr T2THD
\ T2THD:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc3
\ unsigned char volatile __sfr T2CNF
\ T2CNF:
\ 000000 DS 1
31
32 //-------------------------------------------------------------------------------------------------------
33 // Callback table and other timer-related variables
\ In segment XDATA_AN, at 0xe000
34 __no_init MAC_CALLBACK_INFO __xdata pMtimCallbacks[MAC_CALLBACK_COUNT] @ 0xE000;
\ pMtimCallbacks:
\ 000000 DS 108
\ In segment PM0_XDATA, align 1
35 __no_init MAC_TIMER_INFO mtimInfo @ "PM0_XDATA";
\ mtimInfo:
\ 000000 DS 11
\ In segment DATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_DATA_Z
36 UINT8 __data firstCallback;
\ firstCallback:
\ 000000 DS 1
\ In segment DATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_DATA_Z
37 UINT8 __data intAlreadyOff;
\ intAlreadyOff:
\ 000000 DS 1
38 //-------------------------------------------------------------------------------------------------------
39
40
41
42
43 //-------------------------------------------------------------------------------------------------------
44 // void mtimInit(void)
45 //
46 // DESCRIPTION:
47 // Initializes Timer 2 for interrupts at every backoff slot
48 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
49 ROOT void mtimInit(BOOL synchronousStart) {
\ mtimInit:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
50 UINT8 n;
51
52 // Initialize the callback table
53 for (n = 0; n < MAC_CALLBACK_COUNT; n++) {
\ 000004 758205 MOV DPL,#0x5
\ 000007 7583E0 MOV DPH,#-0x20
\ 00000A 7A0C MOV R2,#0xc
54 pMtimCallbacks[n].occupied = FALSE;
\ ??mtimInit_0:
\ 00000C E4 CLR A
\ 00000D F0 MOVX @DPTR,A
55 }
\ 00000E E582 MOV A,DPL
\ 000010 2409 ADD A,#0x9
\ 000012 F582 MOV DPL,A
\ 000014 E583 MOV A,DPH
\ 000016 3400 ADDC A,#0x0
\ 000018 F583 MOV DPH,A
\ 00001A 1A DEC R2
\ 00001B EA MOV A,R2
\ 00001C 70EE JNZ ??mtimInit_0
56
57 // Set head of queue
58 firstCallback = NO_CALLBACK;
\ 00001E 75..FF MOV firstCallback,#-0x1
59
60 // Configure the timer registers
61 T2_STOP();
\ 000021 53C3FE ANL 0xc3,#0xfe
62 T2_SET_COUNTER(0);
\ 000024 75A600 MOV 0xa6,#0x0
\ 000027 75A700 MOV 0xa7,#0x0
63 T2_SET_COUNTER_RELOAD_VALUE(32 * 320); // 320 us at 32 MHz
\ 00002A 75A400 MOV 0xa4,#0x0
\ 00002D 75A528 MOV 0xa5,#0x28
64 T2_SET_COUNTER_COMPARE_VALUE(HIBYTE(32 * (320 - 32)), FALSE); // 90 %
\ 000030 759424 MOV 0x94,#0x24
\ 000033 53C3F7 ANL 0xc3,#0xf7
65 T2_SET_OVERFLOW_COUNTER(0);
\ 000036 75A100 MOV 0xa1,#0x0
\ 000039 75A200 MOV 0xa2,#0x0
\ 00003C 75A300 MOV 0xa3,#0x0
66 T2_SET_OVERFLOW_COUNTER_COMPARE_VALUE(0);
\ 00003F 759C00 MOV 0x9c,#0x0
\ 000042 759D00 MOV 0x9d,#0x0
\ 000045 539EF0 ANL 0x9e,#0xf0
\ 000048 E59E MOV A,0x9e
67
68 if (synchronousStart == FALSE)
\ 00004A E9 MOV A,R1
\ 00004B 7008 JNZ ??mtimInit_1
69 T2_START_NOSYNC();
\ 00004D 53C3FD ANL 0xc3,#0xfd
\ 000050 43C301 ORL 0xc3,#0x1
\ 000053 8003 SJMP ??mtimInit_2
70 else
71 mtimStartSync ();
\ ??mtimInit_1:
\ 000055 ; Setup parameters for call to function mtimStartSync
\ 000055 12.... LCALL mtimStartSync
72
73 // Enable the timer 2 counter overflow flag
74 T2_CLEAR_COUNTER_OVERFLOW_FLAG();
\ ??mtimInit_2:
\ 000058 53C3BF ANL 0xc3,#0xbf
75 T2_ENABLE_COUNTER_OVERFLOW_FLAG();
\ 00005B 439E40 ORL 0x9e,#0x40
76 CLEAR_TIMER2_INT();
\ 00005E C2C2 CLR 0xc0.2
77
78 } // mtimInit
\ 000060 D083 POP DPH
\ 000062 D082 POP DPL
\ 000064 22 RET
79
80
81
82
83 //-------------------------------------------------------------------------------------------------------
84 // BOOL mtimSetCallback(VFPTR pFunc, INT32 timeout)
85 //
86 // DESCRIPTION:
87 // Activates a timed callback. The callback will happen at [timeout] backoff slots from now.
88 // Note: There can only be MAC_CALLBACK_COUNT active callbacks.
89 //
90 // PARAMETERS:
91 // VFPTR pFunc
92 // A pointer to the callback function
93 // INT32 timeout
94 // The number of backoff slots to count before calling pFunc(). If this value is negative, the
95 // function will not be executed.
96 //
97 // RETURN VALUE:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -