📄 blind_node.lst
字号:
\ 0001AE E9 MOV A,R1
\ 0001AF F5.. MOV ?V0 + 5,A
174
175 if(nbrOfNodesToUse >= MIN_NBR_OF_REF_NODES)
\ 0001B1 C3 CLR C
\ 0001B2 9403 SUBB A,#0x3
\ 0001B4 4004 JC ??RunBlindNode_17
176 {
177 // can't try more, but we can do a calculation with the nodes reaced
178 blindNodeState = SETUP_DATA_COLLECTING;
\ 0001B6 7404 MOV A,#0x4
\ 0001B8 8082 SJMP ??RunBlindNode_16
179 }
180 else
181 {
182 // no we can't do a calculation, go to sleep...
183 AddToSleepTimer(BLIND_NODE_POWER_DOWN_PERIODE);
\ ??RunBlindNode_17:
\ 0001BA ; Setup parameters for call to function AddToSleepTimer
\ 0001BA 7AB8 MOV R2,#-0x48
\ 0001BC 7B0B MOV R3,#0xb
\ 0001BE 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 0001C1 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 0001C3 12.... LCALL ?BCALL ; Banked call to: DPTR()
184 INT_SETFLAG(INUM_ST, INT_CLR);
\ 0001C6 C2C7 CLR 0xc0.7
185 INT_ENABLE(INUM_ST, INT_ON);
\ 0001C8 D2AD SETB 0xa8.5
186 blindNodeState = SLEEP_STATE;
\ 0001CA 7408 MOV A,#0x8
\ 0001CC 02.... LJMP ??RunBlindNode_16 & 0xFFFF
187 }
188 }
189 break;
190 case SETUP_DATA_COLLECTING:
191 blindNodeState = REQUEST_REF_NODE_PACKET;
\ ??RunBlindNode_10:
\ 0001CF 7405 MOV A,#0x5
\ 0001D1 90.... MOV DPTR,#blindNodeState
\ 0001D4 F0 MOVX @DPTR,A
192 refNodeRequested = 0;
\ 0001D5 7F00 MOV R7,#0x0
193 nbrOfPacketsReceivedFromNode = 0;
\ 0001D7 7E00 MOV R6,#0x0
194 nbrOfReqTimeOuts = 0;
\ 0001D9 E4 CLR A
\ 0001DA 90.... MOV DPTR,#nbrOfReqTimeOuts
\ 0001DD F0 MOVX @DPTR,A
195 nbrOfRefNodesReceivedForCalculation = 0;
\ 0001DE F5.. MOV ?V0 + 4,A
\ 0001E0 02.... LJMP ??RunBlindNode_0 & 0xFFFF
196 break;
197 case REQUEST_REF_NODE_PACKET:
198 refNodeRequestShortAddress = refNodesForCalculation[refNodeRequested].shortAddress;
\ ??RunBlindNode_11:
\ 0001E3 8F.. MOV ?V0 + 0,R7
\ 0001E5 75..00 MOV ?V0 + 1,#0x0
\ 0001E8 7403 MOV A,#0x3
\ 0001EA 78.. MOV R0,#?V0 + 0
\ 0001EC 12.... LCALL ?S_SHL
\ 0001EF E5.. MOV A,?V0 + 0
\ 0001F1 24.. ADD A,#(refNodesForCalculation & 0xff)
\ 0001F3 F582 MOV DPL,A
\ 0001F5 E5.. MOV A,?V0 + 1
\ 0001F7 34.. ADDC A,#((refNodesForCalculation >> 8) & 0xff)
\ 0001F9 F583 MOV DPH,A
\ 0001FB E0 MOVX A,@DPTR
\ 0001FC F5.. MOV ?V0 + 0,A
\ 0001FE A3 INC DPTR
\ 0001FF E0 MOVX A,@DPTR
\ 000200 F5.. MOV ?V0 + 1,A
199 ReqSignals(refNodeRequestShortAddress);
\ 000202 ; Setup parameters for call to function ReqSignals
\ 000202 AA.. MOV R2,?V0 + 0
\ 000204 FB MOV R3,A
\ 000205 90.... MOV DPTR,#(ReqSignals & 0xffff)
\ 000208 74.. MOV A,#((ReqSignals >> 16) & 0xff)
\ 00020A 12.... LCALL ?BCALL ; Banked call to: DPTR()
200
201 blindNodeState = RECEIVE_REF_NODES_PACKET;
\ 00020D 7406 MOV A,#0x6
\ 00020F 90.... MOV DPTR,#blindNodeState
\ 000212 F0 MOVX @DPTR,A
202 // starting sleep timer to go back to this state if no respons
203 AddToSleepTimer(BLIND_NODE_WAIT_FOR_REPLY);
\ 000213 ; Setup parameters for call to function AddToSleepTimer
\ 000213 7A64 MOV R2,#0x64
\ 000215 7B00 MOV R3,#0x0
\ 000217 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 00021A 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 00021C 12.... LCALL ?BCALL ; Banked call to: DPTR()
204 INT_SETFLAG(INUM_ST, INT_CLR);
\ ??RunBlindNode_18:
\ 00021F C2C7 CLR 0xc0.7
205 INT_ENABLE(INUM_ST, INT_ON);
\ 000221 D2AD SETB 0xa8.5
\ 000223 02.... LJMP ??RunBlindNode_0 & 0xFFFF
206 break;
207 case RECEIVE_REF_NODES_PACKET:
208 if (msgReceived){
\ ??RunBlindNode_12:
\ 000226 90.... MOV DPTR,#msgReceived
\ 000229 E0 MOVX A,@DPTR
\ 00022A 7003 JNZ $+5
\ 00022C 02.... LJMP ??RunBlindNode_19 & 0xFFFF
209 msgReceived = FALSE;
\ 00022F E4 CLR A
\ 000230 F0 MOVX @DPTR,A
210
211 packetType = buffer.b.pMsdu[PACKET_INDEX_TYPE];
212 if (packetType == PACKET_TYPE_REF_NODE_POSITION &&
213 refNodeRequestShortAddress == buffer.b.srcAddr.Short)
\ 000231 90.... MOV DPTR,#(buffer + 27)
\ 000234 E0 MOVX A,@DPTR
\ 000235 6412 XRL A,#0x12
\ 000237 6003 JZ $+5
\ 000239 02.... LJMP ??RunBlindNode_4 & 0xFFFF
\ 00023C 90.... MOV DPTR,#(buffer + 4)
\ 00023F E0 MOVX A,@DPTR
\ 000240 65.. XRL A,?V0 + 0
\ 000242 7004 JNZ ??RunBlindNode_20
\ 000244 A3 INC DPTR
\ 000245 E0 MOVX A,@DPTR
\ 000246 65.. XRL A,?V0 + 1
\ ??RunBlindNode_20:
\ 000248 6003 JZ $+5
\ 00024A 02.... LJMP ??RunBlindNode_4 & 0xFFFF
214 {
215 nbrOfReqTimeOuts = 0;
\ 00024D E4 CLR A
\ 00024E 90.... MOV DPTR,#nbrOfReqTimeOuts
\ 000251 F0 MOVX @DPTR,A
216 if(nbrOfPacketsReceivedFromNode == 0)
\ 000252 85.... MOV ?V0 + 2,?V0 + 4
\ 000255 F5.. MOV ?V0 + 3,A
\ 000257 7403 MOV A,#0x3
\ 000259 78.. MOV R0,#?V0 + 2
\ 00025B 12.... LCALL ?S_SHL
\ 00025E E5.. MOV A,?V0 + 2
\ 000260 24.. ADD A,#(refNodesForCalculation & 0xff)
\ 000262 F8 MOV R0,A
\ 000263 E5.. MOV A,?V0 + 3
\ 000265 34.. ADDC A,#((refNodesForCalculation >> 8) & 0xff)
\ 000267 F9 MOV R1,A
\ 000268 E8 MOV A,R0
\ 000269 FC MOV R4,A
\ 00026A E9 MOV A,R1
\ 00026B FD MOV R5,A
\ 00026C EC MOV A,R4
\ 00026D 2406 ADD A,#0x6
\ 00026F F8 MOV R0,A
\ 000270 ED MOV A,R5
\ 000271 3400 ADDC A,#0x0
\ 000273 F9 MOV R1,A
\ 000274 E8 MOV A,R0
\ 000275 FA MOV R2,A
\ 000276 E9 MOV A,R1
\ 000277 FB MOV R3,A
\ 000278 EE MOV A,R6
\ 000279 703B JNZ ??RunBlindNode_21
217 {
218 // store x, y and addr
219 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].shortAddress = refNodeRequestShortAddress;
\ 00027B 8C82 MOV DPL,R4
\ 00027D 8D83 MOV DPH,R5
\ 00027F E5.. MOV A,?V0 + 0
\ 000281 F0 MOVX @DPTR,A
\ 000282 A3 INC DPTR
\ 000283 E5.. MOV A,?V0 + 1
\ 000285 F0 MOVX @DPTR,A
220 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].x = BYTES_TO_WORD(buffer.b.pMsdu[PACKET_INDEX_X_H], buffer.b.pMsdu[PACKET_INDEX_X_L]);
\ 000286 90.... MOV DPTR,#(buffer + 28)
\ 000289 E0 MOVX A,@DPTR
\ 00028A F9 MOV R1,A
\ 00028B 90.... MOV DPTR,#(buffer + 29)
\ 00028E E0 MOVX A,@DPTR
\ 00028F 8C82 MOV DPL,R4
\ 000291 8D83 MOV DPH,R5
\ 000293 A3 INC DPTR
\ 000294 A3 INC DPTR
\ 000295 F0 MOVX @DPTR,A
\ 000296 A3 INC DPTR
\ 000297 E9 MOV A,R1
\ 000298 F0 MOVX @DPTR,A
221 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].y = BYTES_TO_WORD(buffer.b.pMsdu[PACKET_INDEX_Y_H], buffer.b.pMsdu[PACKET_INDEX_Y_L]);
\ 000299 90.... MOV DPTR,#(buffer + 30)
\ 00029C E0 MOVX A,@DPTR
\ 00029D F9 MOV R1,A
\ 00029E 90.... MOV DPTR,#(buffer + 31)
\ 0002A1 E0 MOVX A,@DPTR
\ 0002A2 8C82 MOV DPL,R4
\ 0002A4 8D83 MOV DPH,R5
\ 0002A6 A3 INC DPTR
\ 0002A7 A3 INC DPTR
\ 0002A8 A3 INC DPTR
\ 0002A9 A3 INC DPTR
\ 0002AA F0 MOVX @DPTR,A
\ 0002AB A3 INC DPTR
\ 0002AC E9 MOV A,R1
\ 0002AD F0 MOVX @DPTR,A
222 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].rssiAcc = 0;
\ 0002AE 8A82 MOV DPL,R2
\ 0002B0 8B83 MOV DPH,R3
\ 0002B2 E4 CLR A
\ 0002B3 F0 MOVX @DPTR,A
\ 0002B4 A3 INC DPTR
\ 0002B5 F0 MOVX @DPTR,A
223 }
224 // add RSSI value to accumulator
225 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].rssiAcc += ED_2_RSSI(LQI_2_ED(buffer.b.mpduLinkQuality));
\ ??RunBlindNode_21:
\ 0002B6 90.... MOV DPTR,#(buffer + 23)
\ 0002B9 E0 MOVX A,@DPTR
\ 0002BA 13 RRC A
\ 0002BB 13 RRC A
\ 0002BC 543F ANL A,#0x3f
\ 0002BE F8 MOV R0,A
\ 0002BF 7494 MOV A,#-0x6c
\ 0002C1 28 ADD A,R0
\ 0002C2 F8 MOV R0,A
\ 0002C3 74FF MOV A,#-0x1
\ 0002C5 3400 ADDC A,#0x0
\ 0002C7 F9 MOV R1,A
\ 0002C8 C3 CLR C
\ 0002C9 E4 CLR A
\ 0002CA 98 SUBB A,R0
\ 0002CB F8 MOV R0,A
\ 0002CC E4 CLR A
\ 0002CD 99 SUBB A,R1
\ 0002CE F9 MOV R1,A
\ 0002CF 8A82 MOV DPL,R2
\ 0002D1 8B83 MOV DPH,R3
\ 0002D3 E0 MOVX A,@DPTR
\ 0002D4 28 ADD A,R0
\ 0002D5 F0 MOVX @DPTR,A
\ 0002D6 A3 INC DPTR
\ 0002D7 E0 MOVX A,@DPTR
\ 0002D8 39 ADDC A,R1
\ 0002D9 F0 MOVX @DPTR,A
226 nbrOfPacketsReceivedFromNode++;
\ 0002DA 0E INC R6
227
228 if(nbrOfPacketsReceivedFromNode < NBR_OF_PACKETS_TO_REQUEST)
\ 0002DB EE MOV A,R6
\ 0002DC C3 CLR C
\ 0002DD 9408 SUBB A,#0x8
\ 0002DF 5005 JNC ??RunBlindNode_22
229 {
230 blindNodeState = REQUEST_REF_NODE_PACKET;
\ ??RunBlindNode_23:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -