📄 blind_node.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 16/Jan/2007 15:30:41 #
# 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\apps\blind_node.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\apps\blind_node.c #
# List file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\List\blind_node.lst #
# Object file = E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
# ne\Test\mac\mac_loc\CC2430EB\Obj\blind_node.r51 #
# #
# #
##############################################################################
E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\apps\blind_node.c
1 /******************************************************************************
2 * *
3 * ********** *
4 * ************ *
5 * *** *** *
6 * *** ++ *** *
7 * *** + + *** CHIPCON *
8 * *** + *
9 * *** + + *** *
10 * *** ++ *** *
11 * *** *** *
12 * ************ *
13 * ********** *
14 * *
15 *******************************************************************************
16
17 Filename: blindNode.c
18 Target: cc2431
19 Author: KJA
20 Revised: 14/02-2005
21 Revision: 1.0
22
23 Description:
24 This file contains the main function used for blind node.
25
26 ******************************************************************************/
27
28 #include "mac_headers.h"
\ In segment SFR_AN, at 0xc9
\ unsigned char volatile __sfr WDCTL
\ WDCTL:
\ 000000 DS 1
29 #include "node.h"
30 #include "ioCC2431.h"
31 #ifdef CC2430EB
32 #include "lcd.h"
33 #endif
34 // flags
35 extern BOOL msgReceived;
36
37 // counters
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
38 UINT8 nbrOfBCastReplys, nbrOfRetries, nbrOfReqTimeOuts;
\ nbrOfBCastReplys:
\ 000000 DS 1
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
\ nbrOfRetries:
\ 000000 DS 1
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
\ nbrOfReqTimeOuts:
\ 000000 DS 1
39
40 // node parameters
41 extern MSG_BUFFER buffer;
42 extern UINT16_2 x;
43 extern UINT16_2 y;
44 extern UINT8 z;
45 extern BOOL parametersReceived;
46 extern BOOL blinkLed;
47 extern UINT8 ledBlinkCounter;
48
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
49 UINT8_1 a_val;
\ a_val:
\ 000000 DS 1
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
50 UINT8 n_index;
\ n_index:
\ 000000 DS 1
51
52 /* Buffer for storing of received data from ref. nodes */
\ In segment XDATA_N, align 1
53 __no_init RAW_REF_NODE_S refNodesForCalculation[LOC_ENGINE_NODE_CAPACITY];
\ refNodesForCalculation:
\ 000000 DS 64
54
55 /* Short address to all nodes that should be used will be placed in this struct */
\ In segment XDATA_N, align 1
56 __no_init WORD refNodesUsable[LOC_ENGINE_NODE_CAPACITY];
\ refNodesUsable:
\ 000000 DS 16
57
58 /* Buffer used as input to location engine */
\ In segment XDATA_N, align 1
59 __no_init LOC_REF_NODE_S refNodes[LOC_ENGINE_NODE_CAPACITY];
\ refNodes:
\ 000000 DS 24
60
61
62 enum {
63 INIT_BCAST,
64 BCAST_REQUEST,
65 RECEIVE_BCAST_REPLY,
66 CHECK_REPLIES,
67 SETUP_DATA_COLLECTING,
68 REQUEST_REF_NODE_PACKET,
69 RECEIVE_REF_NODES_PACKET,
70 ESTIMATE_LOCATION,
71 SLEEP_STATE,
72 BLINK_LED_STATE
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
73 } blindNodeState;
\ blindNodeState:
\ 000000 DS 1
74
75
76
77 /******************************************************************************
78 *
79 * This function is the main loop for Blind Node
80 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
81 void RunBlindNode(void){
\ RunBlindNode:
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 11
\ 000005 74F5 MOV A,#-0xb
\ 000007 12.... LCALL ?ALLOC_XSTACK8
82 BYTE packetType;
83 UINT8 refNodeRequested;
84 UINT8 nbrOfPacketsReceivedFromNode;
85 UINT8 nbrOfNodesToUse;
86 UINT8 nbrOfRefNodesReceivedForCalculation;
87 WORD refNodeRequestShortAddress;
88 UINT8_1 xLocValue, yLocValue;
89 UINT16_2 xUpperLeft, yUpperLeft, xStrongestNode, yStrongestNode;
90 UINT8 strongestRssi;
91
92 x = y = UNINITIALIZED_XY_VALUE;
\ 00000A 90.... MOV DPTR,#y
\ 00000D 74FF MOV A,#-0x1
\ 00000F F0 MOVX @DPTR,A
\ 000010 A3 INC DPTR
\ 000011 F0 MOVX @DPTR,A
\ 000012 90.... MOV DPTR,#x
\ 000015 F0 MOVX @DPTR,A
\ 000016 A3 INC DPTR
\ 000017 F0 MOVX @DPTR,A
93
94 a_val = DEFAULT_A_PARAM;
\ 000018 744E MOV A,#0x4e
\ 00001A 90.... MOV DPTR,#a_val
\ 00001D F0 MOVX @DPTR,A
95 n_index = DEFAULT_N_INDEX;
\ 00001E 7410 MOV A,#0x10
\ 000020 90.... MOV DPTR,#n_index
\ 000023 F0 MOVX @DPTR,A
96
97 blindNodeState = INIT_BCAST;
\ 000024 E4 CLR A
\ 000025 90.... MOV DPTR,#blindNodeState
\ 000028 F0 MOVX @DPTR,A
98
99 SET_BUFFER_EMPTY();
\ 000029 90.... MOV DPTR,#buffer
\ 00002C F0 MOVX @DPTR,A
100
101 // disable sleep timer
102 INT_ENABLE(INUM_ST, INT_OFF);
\ 00002D C2AD CLR 0xa8.5
103
104 // setup for sending A and N to PC after startup
105 parametersReceived = TRUE;
\ 00002F 7401 MOV A,#0x1
\ 000031 90.... MOV DPTR,#parametersReceived
\ 000034 F0 MOVX @DPTR,A
106
107 #ifdef CC2430EB
108 lcdUpdate("CC4231","Blind node");
\ 000035 ; Setup parameters for call to function lcdUpdate
\ 000035 7C.. MOV R4,#(`?<Constant "Blind node">` & 0xff)
\ 000037 7D.. MOV R5,#((`?<Constant "Blind node">` >> 8) & 0xff)
\ 000039 7A.. MOV R2,#(`?<Constant "CC4231">` & 0xff)
\ 00003B 7B.. MOV R3,#((`?<Constant "CC4231">` >> 8) & 0xff)
\ 00003D 90.... MOV DPTR,#(lcdUpdate & 0xffff)
\ 000040 74.. MOV A,#((lcdUpdate >> 16) & 0xff)
\ 000042 12.... LCALL ?BCALL ; Banked call to: DPTR()
109 #endif
110 SendText("Blind Node Powerup");
\ 000045 ; Setup parameters for call to function SendText
\ 000045 7A.. MOV R2,#(`?<Constant "Blind Node Powerup">` & 0xff)
\ 000047 7B.. MOV R3,#((`?<Constant "Blind Node Powerup">` >> 8) & 0xff)
\ 000049 90.... MOV DPTR,#(SendText & 0xffff)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -