📄 ref_node.lst
字号:
104
105 if(resetCoordinates){
\ 00001B EE MOV A,R6
\ 00001C 6014 JZ ??RunRefNode_0
106 x = y = UNINITIALIZED_XY_VALUE;
\ ??RunRefNode_1:
\ 00001E 90.... MOV DPTR,#y
\ 000021 74FF MOV A,#-0x1
\ 000023 F0 MOVX @DPTR,A
\ 000024 A3 INC DPTR
\ 000025 F0 MOVX @DPTR,A
\ 000026 90.... MOV DPTR,#x
\ 000029 F0 MOVX @DPTR,A
\ 00002A A3 INC DPTR
\ 00002B F0 MOVX @DPTR,A
107 z = UNINITIALIZED_Z_VALUE;
\ 00002C 90.... MOV DPTR,#z
\ 00002F F0 MOVX @DPTR,A
\ 000030 8006 SJMP ??RunRefNode_2
108 }
109 else{
110 if( !getCoordinates() )
\ ??RunRefNode_0:
\ 000032 ; Setup parameters for call to function getCoordinates
\ 000032 12.... LCALL getCoordinates
\ 000035 E9 MOV A,R1
\ 000036 60E6 JZ ??RunRefNode_1
111 {
112 x = y = UNINITIALIZED_XY_VALUE;
113 z = UNINITIALIZED_Z_VALUE;
114 }
115 }
116
117 // Setting up to sleep at the appropriate time
118 refNodeState = AWAKE_STATE;
\ ??RunRefNode_2:
\ 000038 E4 CLR A
\ 000039 90.... MOV DPTR,#refNodeState
\ 00003C F0 MOVX @DPTR,A
119 AddToSleepTimer(REF_NODE_POWER_UP_TIME);
\ 00003D ; Setup parameters for call to function AddToSleepTimer
\ 00003D 7AFA MOV R2,#-0x6
\ 00003F FB MOV R3,A
\ 000040 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 000043 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 000045 12.... LCALL ?BCALL ; Banked call to: DPTR()
120 INT_SETFLAG(INUM_ST, INT_CLR);
\ 000048 C2C7 CLR 0xc0.7
121 INT_ENABLE(INUM_ST, INT_ON);
\ 00004A D2AD SETB 0xa8.5
122 msgTimerValueNextSend = 0;
\ 00004C 90.... MOV DPTR,#__Constant_0
\ 00004F 78.. MOV R0,#?V0 + 0
\ 000051 12.... LCALL ?L_MOV_X
123
124 #ifdef CC2430EB
125 PrintXY();
126 #endif
127
128 SET_BUFFER_EMPTY();
\ 000054 E4 CLR A
\ 000055 90.... MOV DPTR,#buffer
\ 000058 F0 MOVX @DPTR,A
129
130 WDT_SET_TIMEOUT_PERIOD(SEC_1);
\ 000059 53C9FC ANL 0xc9,#0xfc
\ 00005C E5C9 MOV A,0xc9
\ 00005E 85C9C9 MOV 0xc9,0xc9
131 WDT_ENABLE();
\ 000061 43C908 ORL 0xc9,#0x8
\ 000064 02.... LJMP ??RunRefNode_3
132
133 while(TRUE) {
134 WDT_RESET();
135
136 if (msgReceived){
137 msgReceived = FALSE;
138 packetType = buffer.b.pMsdu[PACKET_INDEX_TYPE];
139
140 if (packetType == PACKET_TYPE_BLIND_NODE_REQ_SIGNAL){
141 if( x != UNINITIALIZED_XY_VALUE || y != UNINITIALIZED_XY_VALUE)
142 {
143 #ifdef USE_LED
144 LED1 = LED_ON;
145 #endif
146 SendPosition(buffer.b.srcAddr.Short);
147 #ifdef USE_LED
148 LED1 = LED_OFF;
149 #endif
150 // Avoiding to be in Power Down next time a packet is for me by increasing awake time
151 AddToSleepTimer(REF_NODE_EXTENSION_UP_TIME);
152 }
153 }
154 SET_BUFFER_EMPTY();
155 }
156
157 // Check if xyz coordinates are to be written to FLASH
158 if(parametersReceived){
159 INT_ENABLE(INUM_ST, INT_OFF);
160 parametersReceived = FALSE;
161 SendPosition(PC_SHORT);
162
163 storeCoordinates();
164 #ifdef CC2430EB
165 PrintXY();
166 #endif
167 INT_SETFLAG(INUM_ST, INT_CLR);
168 INT_ENABLE(INUM_ST, INT_ON);
169 AddToSleepTimer(REF_NODE_EXTENSION_UP_TIME);
170 }
171
172 // Check if a blink led message is received
173 if (blinkLed){
174 blinkLed = FALSE;
175 LED1 = LED_ON;
176 ledBlinkCounter = 0;
177 refNodeState = BLINK_LED_STATE;
178 }
179
180 // Check if the node should send a message to PC
181 GetSleepTimer(&sleepTimerValue);
182 if( ( (msgTimerValue < msgTimerValueNextSend) && (sleepTimerValue > msgTimerValueNextSend) ) ||
183 ( (msgTimerValue < msgTimerValueNextSend) && (sleepTimerValue < msgTimerValue ) ) ||
184 ( (msgTimerValueNextSend < msgTimerValue) && (sleepTimerValue > msgTimerValueNextSend) && (sleepTimerValue < msgTimerValue) ) )
\ ??RunRefNode_4:
\ 000067 85..82 MOV DPL,?XSP + 0
\ 00006A 85..83 MOV DPH,?XSP + 1
\ 00006D 78.. MOV R0,#?V0 + 4
\ 00006F 12.... LCALL ?L_MOV_X
\ 000072 78.. MOV R0,#?V0 + 4
\ 000074 79.. MOV R1,#?V0 + 0
\ 000076 12.... LCALL ?UL_GT
\ 000079 5076 JNC ??RunRefNode_5
\ 00007B 7404 MOV A,#0x4
\ 00007D 12.... LCALL ?XSTACK_DISP0_8
\ 000080 78.. MOV R0,#?V0 + 4
\ 000082 12.... LCALL ?L_MOV_X
\ 000085 78.. MOV R0,#?V0 + 4
\ 000087 79.. MOV R1,#?V0 + 0
\ 000089 12.... LCALL ?UL_GT
\ 00008C 5063 JNC ??RunRefNode_5
\ 00008E 7404 MOV A,#0x4
\ 000090 12.... LCALL ?XSTACK_DISP0_8
\ 000093 C082 PUSH DPL
\ 000095 C083 PUSH DPH
\ 000097 85..82 MOV DPL,?XSP + 0
\ 00009A 85..83 MOV DPH,?XSP + 1
\ 00009D 78.. MOV R0,#?V0 + 4
\ 00009F 12.... LCALL ?L_MOV_X
\ 0000A2 D083 POP DPH
\ 0000A4 D082 POP DPL
\ 0000A6 78.. MOV R0,#?V0 + 4
\ 0000A8 12.... LCALL ?UL_GT_X
\ 0000AB 5044 JNC ??RunRefNode_5
185 {
186 SendPosition(PC_SHORT);
\ ??RunRefNode_6:
\ 0000AD ; Setup parameters for call to function SendPosition
\ 0000AD 7A34 MOV R2,#0x34
\ 0000AF 7B12 MOV R3,#0x12
\ 0000B1 90.... MOV DPTR,#(SendPosition & 0xffff)
\ 0000B4 74.. MOV A,#((SendPosition >> 16) & 0xff)
\ 0000B6 12.... LCALL ?BCALL ; Banked call to: DPTR()
187 msgTimerValue = sleepTimerValue;
\ 0000B9 7404 MOV A,#0x4
\ 0000BB 12.... LCALL ?XSTACK_DISP0_8
\ 0000BE 78.. MOV R0,#?V0 + 0
\ 0000C0 12.... LCALL ?L_MOV_X
\ 0000C3 85..82 MOV DPL,?XSP + 0
\ 0000C6 85..83 MOV DPH,?XSP + 1
\ 0000C9 78.. MOV R0,#?V0 + 0
\ 0000CB 12.... LCALL ?L_MOV_TO_X
188 msgTimerValueNextSend = msgTimerValue + (UINT32)REF_NODE_MSG_INTERVALL;
189 msgTimerValueNextSend &= ~0xFF000000;
\ 0000CE 85..82 MOV DPL,?XSP + 0
\ 0000D1 85..83 MOV DPH,?XSP + 1
\ 0000D4 C082 PUSH DPL
\ 0000D6 C083 PUSH DPH
\ 0000D8 90.... MOV DPTR,#__Constant_28488
\ 0000DB 78.. MOV R0,#?V0 + 0
\ 0000DD 12.... LCALL ?L_MOV_X
\ 0000E0 D083 POP DPH
\ 0000E2 D082 POP DPL
\ 0000E4 78.. MOV R0,#?V0 + 0
\ 0000E6 12.... LCALL ?L_ADD_X
\ 0000E9 90.... MOV DPTR,#__Constant_ffffff
\ 0000EC 78.. MOV R0,#?V0 + 0
\ 0000EE 12.... LCALL ?L_AND_X
190 }
191
192 if(refNodeState == AWAKE_STATE)
\ ??RunRefNode_5:
\ 0000F1 90.... MOV DPTR,#refNodeState
\ 0000F4 E0 MOVX A,@DPTR
\ 0000F5 600D JZ ??RunRefNode_3
193 {
194 #if defined CC2430EB && defined USE_LED
195 LED3 = LED_ON;
196 #elif defined CC2430DB && defined USE_LED
197 LED2 = LED_ON;
198 #endif
199 }
200 else if(refNodeState == SLEEP_STATE)
\ 0000F7 6401 XRL A,#0x1
\ 0000F9 7009 JNZ ??RunRefNode_3
201 {
202 #if defined CC2430EB && defined USE_LED
203 LED3 = LED_OFF;
204 #elif defined CC2430DB && defined USE_LED
205 LED2 = LED_OFF;
206 #endif
207
208 #ifdef USE_PM
209 // Go to sleep
210 mpmSetAndResumeMacAndCpuPowerMode (POWER_MODE_PM2, RESUME_MODE_PARTS_PRESERVED, FALSE);
\ 0000FB ; Setup parameters for call to function mpmSetAndResumeMacAndCpuPowerMode
\ 0000FB 7B00 MOV R3,#0x0
\ 0000FD 7A01 MOV R2,#0x1
\ 0000FF 7901 MOV R1,#0x1
\ 000101 12.... LCALL mpmSetAndResumeMacAndCpuPowerMode
211 #endif
212 }
\ ??RunRefNode_3:
\ 000104 740F MOV A,#0xf
\ 000106 55C9 ANL A,0xc9
\ 000108 44A0 ORL A,#0xa0
\ 00010A F5C9 MOV 0xc9,A
\ 00010C 740F MOV A,#0xf
\ 00010E 55C9 ANL A,0xc9
\ 000110 4450 ORL A,#0x50
\ 000112 F5C9 MOV 0xc9,A
\ 000114 90.... MOV DPTR,#msgReceived
\ 000117 E0 MOVX A,@DPTR
\ 000118 604B JZ ??RunRefNode_7
\ 00011A E4 CLR A
\ 00011B F0 MOVX @DPTR,A
\ 00011C 90.... MOV DPTR,#(buffer + 27)
\ 00011F E0 MOVX A,@DPTR
\ 000120 6411 XRL A,#0x11
\ 000122 703C JNZ ??RunRefNode_8
\ 000124 90.... MOV DPTR,#x
\ 000127 E0 MOVX A,@DPTR
\ 000128 64FF XRL A,#0xff
\ 00012A 7004 JNZ ??RunRefNode_9
\ 00012C A3 INC DPTR
\ 00012D E0 MOVX A,@DPTR
\ 00012E 64FF XRL A,#0xff
\ ??RunRefNode_9:
\ 000130 700E JNZ ??RunRefNode_10
\ 000132 90.... MOV DPTR,#y
\ 000135 E0 MOVX A,@DPTR
\ 000136 64FF XRL A,#0xff
\ 000138 7004 JNZ ??RunRefNode_11
\ 00013A A3 INC DPTR
\ 00013B E0 MOVX A,@DPTR
\ 00013C 64FF XRL A,#0xff
\ ??RunRefNode_11:
\ 00013E 6020 JZ ??RunRefNode_8
\ ??RunRefNode_10:
\ 000140 C290 CLR 0x90.0
\ 000142 ; Setup parameters for call to function SendPosition
\ 000142 90.... MOV DPTR,#(buffer + 4)
\ 000145 E0 MOVX A,@DPTR
\ 000146 FA MOV R2,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -