📄 blind_node.lst
字号:
177 // can't try more, but we can do a calculation with the nodes reaced
178 blindNodeState = SETUP_DATA_COLLECTING;
\ 0001A6 7404 MOV A,#0x4
\ 0001A8 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:
\ 0001AA ; Setup parameters for call to function AddToSleepTimer
\ 0001AA 7AB8 MOV R2,#-0x48
\ 0001AC 7B0B MOV R3,#0xb
\ 0001AE 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 0001B1 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 0001B3 12.... LCALL ?BCALL ; Banked call to: DPTR()
184 INT_SETFLAG(INUM_ST, INT_CLR);
\ 0001B6 C2C7 CLR 0xc0.7
185 INT_ENABLE(INUM_ST, INT_ON);
\ 0001B8 D2AD SETB 0xa8.5
186 blindNodeState = SLEEP_STATE;
\ 0001BA 7408 MOV A,#0x8
\ 0001BC 02.... LJMP ??RunBlindNode_16 & 0xFFFF
187 }
188 }
189 break;
190 case SETUP_DATA_COLLECTING:
191 blindNodeState = REQUEST_REF_NODE_PACKET;
\ ??RunBlindNode_10:
\ 0001BF 7405 MOV A,#0x5
\ 0001C1 90.... MOV DPTR,#blindNodeState
\ 0001C4 F0 MOVX @DPTR,A
192 refNodeRequested = 0;
\ 0001C5 7F00 MOV R7,#0x0
193 nbrOfPacketsReceivedFromNode = 0;
\ 0001C7 7E00 MOV R6,#0x0
194 nbrOfReqTimeOuts = 0;
\ 0001C9 E4 CLR A
\ 0001CA 90.... MOV DPTR,#nbrOfReqTimeOuts
\ 0001CD F0 MOVX @DPTR,A
195 nbrOfRefNodesReceivedForCalculation = 0;
\ 0001CE F5.. MOV ?V0 + 4,A
\ 0001D0 02.... LJMP ??RunBlindNode_0 & 0xFFFF
196 break;
197 case REQUEST_REF_NODE_PACKET:
198 refNodeRequestShortAddress = refNodesForCalculation[refNodeRequested].shortAddress;
\ ??RunBlindNode_11:
\ 0001D3 8F.. MOV ?V0 + 0,R7
\ 0001D5 75..00 MOV ?V0 + 1,#0x0
\ 0001D8 7403 MOV A,#0x3
\ 0001DA 78.. MOV R0,#?V0 + 0
\ 0001DC 12.... LCALL ?S_SHL
\ 0001DF E5.. MOV A,?V0 + 0
\ 0001E1 24.. ADD A,#(refNodesForCalculation & 0xff)
\ 0001E3 F582 MOV DPL,A
\ 0001E5 E5.. MOV A,?V0 + 1
\ 0001E7 34.. ADDC A,#((refNodesForCalculation >> 8) & 0xff)
\ 0001E9 F583 MOV DPH,A
\ 0001EB E0 MOVX A,@DPTR
\ 0001EC F5.. MOV ?V0 + 0,A
\ 0001EE A3 INC DPTR
\ 0001EF E0 MOVX A,@DPTR
\ 0001F0 F5.. MOV ?V0 + 1,A
199 ReqSignals(refNodeRequestShortAddress);
\ 0001F2 ; Setup parameters for call to function ReqSignals
\ 0001F2 AA.. MOV R2,?V0 + 0
\ 0001F4 FB MOV R3,A
\ 0001F5 90.... MOV DPTR,#(ReqSignals & 0xffff)
\ 0001F8 74.. MOV A,#((ReqSignals >> 16) & 0xff)
\ 0001FA 12.... LCALL ?BCALL ; Banked call to: DPTR()
200
201 blindNodeState = RECEIVE_REF_NODES_PACKET;
\ 0001FD 7406 MOV A,#0x6
\ 0001FF 90.... MOV DPTR,#blindNodeState
\ 000202 F0 MOVX @DPTR,A
202 // starting sleep timer to go back to this state if no respons
203 AddToSleepTimer(BLIND_NODE_WAIT_FOR_REPLY);
\ 000203 ; Setup parameters for call to function AddToSleepTimer
\ 000203 7A64 MOV R2,#0x64
\ 000205 7B00 MOV R3,#0x0
\ 000207 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 00020A 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 00020C 12.... LCALL ?BCALL ; Banked call to: DPTR()
204 INT_SETFLAG(INUM_ST, INT_CLR);
\ ??RunBlindNode_18:
\ 00020F C2C7 CLR 0xc0.7
205 INT_ENABLE(INUM_ST, INT_ON);
\ 000211 D2AD SETB 0xa8.5
\ 000213 02.... LJMP ??RunBlindNode_0 & 0xFFFF
206 break;
207 case RECEIVE_REF_NODES_PACKET:
208 if (msgReceived){
\ ??RunBlindNode_12:
\ 000216 90.... MOV DPTR,#msgReceived
\ 000219 E0 MOVX A,@DPTR
\ 00021A 7003 JNZ $+5
\ 00021C 02.... LJMP ??RunBlindNode_19 & 0xFFFF
209 msgReceived = FALSE;
\ 00021F E4 CLR A
\ 000220 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)
\ 000221 90.... MOV DPTR,#(buffer + 27)
\ 000224 E0 MOVX A,@DPTR
\ 000225 6412 XRL A,#0x12
\ 000227 6003 JZ $+5
\ 000229 02.... LJMP ??RunBlindNode_4 & 0xFFFF
\ 00022C 90.... MOV DPTR,#(buffer + 4)
\ 00022F E0 MOVX A,@DPTR
\ 000230 65.. XRL A,?V0 + 0
\ 000232 7004 JNZ ??RunBlindNode_20
\ 000234 A3 INC DPTR
\ 000235 E0 MOVX A,@DPTR
\ 000236 65.. XRL A,?V0 + 1
\ ??RunBlindNode_20:
\ 000238 6003 JZ $+5
\ 00023A 02.... LJMP ??RunBlindNode_4 & 0xFFFF
214 {
215 nbrOfReqTimeOuts = 0;
\ 00023D E4 CLR A
\ 00023E 90.... MOV DPTR,#nbrOfReqTimeOuts
\ 000241 F0 MOVX @DPTR,A
216 if(nbrOfPacketsReceivedFromNode == 0)
\ 000242 85.... MOV ?V0 + 2,?V0 + 4
\ 000245 F5.. MOV ?V0 + 3,A
\ 000247 7403 MOV A,#0x3
\ 000249 78.. MOV R0,#?V0 + 2
\ 00024B 12.... LCALL ?S_SHL
\ 00024E E5.. MOV A,?V0 + 2
\ 000250 24.. ADD A,#(refNodesForCalculation & 0xff)
\ 000252 F8 MOV R0,A
\ 000253 E5.. MOV A,?V0 + 3
\ 000255 34.. ADDC A,#((refNodesForCalculation >> 8) & 0xff)
\ 000257 F9 MOV R1,A
\ 000258 E8 MOV A,R0
\ 000259 FC MOV R4,A
\ 00025A E9 MOV A,R1
\ 00025B FD MOV R5,A
\ 00025C EC MOV A,R4
\ 00025D 2406 ADD A,#0x6
\ 00025F F8 MOV R0,A
\ 000260 ED MOV A,R5
\ 000261 3400 ADDC A,#0x0
\ 000263 F9 MOV R1,A
\ 000264 E8 MOV A,R0
\ 000265 FA MOV R2,A
\ 000266 E9 MOV A,R1
\ 000267 FB MOV R3,A
\ 000268 EE MOV A,R6
\ 000269 703B JNZ ??RunBlindNode_21
217 {
218 // store x, y and addr
219 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].shortAddress = refNodeRequestShortAddress;
\ 00026B 8C82 MOV DPL,R4
\ 00026D 8D83 MOV DPH,R5
\ 00026F E5.. MOV A,?V0 + 0
\ 000271 F0 MOVX @DPTR,A
\ 000272 A3 INC DPTR
\ 000273 E5.. MOV A,?V0 + 1
\ 000275 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]);
\ 000276 90.... MOV DPTR,#(buffer + 28)
\ 000279 E0 MOVX A,@DPTR
\ 00027A F9 MOV R1,A
\ 00027B 90.... MOV DPTR,#(buffer + 29)
\ 00027E E0 MOVX A,@DPTR
\ 00027F 8C82 MOV DPL,R4
\ 000281 8D83 MOV DPH,R5
\ 000283 A3 INC DPTR
\ 000284 A3 INC DPTR
\ 000285 F0 MOVX @DPTR,A
\ 000286 A3 INC DPTR
\ 000287 E9 MOV A,R1
\ 000288 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]);
\ 000289 90.... MOV DPTR,#(buffer + 30)
\ 00028C E0 MOVX A,@DPTR
\ 00028D F9 MOV R1,A
\ 00028E 90.... MOV DPTR,#(buffer + 31)
\ 000291 E0 MOVX A,@DPTR
\ 000292 8C82 MOV DPL,R4
\ 000294 8D83 MOV DPH,R5
\ 000296 A3 INC DPTR
\ 000297 A3 INC DPTR
\ 000298 A3 INC DPTR
\ 000299 A3 INC DPTR
\ 00029A F0 MOVX @DPTR,A
\ 00029B A3 INC DPTR
\ 00029C E9 MOV A,R1
\ 00029D F0 MOVX @DPTR,A
222 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].rssiAcc = 0;
\ 00029E 8A82 MOV DPL,R2
\ 0002A0 8B83 MOV DPH,R3
\ 0002A2 E4 CLR A
\ 0002A3 F0 MOVX @DPTR,A
\ 0002A4 A3 INC DPTR
\ 0002A5 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:
\ 0002A6 90.... MOV DPTR,#(buffer + 23)
\ 0002A9 E0 MOVX A,@DPTR
\ 0002AA 13 RRC A
\ 0002AB 13 RRC A
\ 0002AC 543F ANL A,#0x3f
\ 0002AE F8 MOV R0,A
\ 0002AF 7494 MOV A,#-0x6c
\ 0002B1 28 ADD A,R0
\ 0002B2 F8 MOV R0,A
\ 0002B3 74FF MOV A,#-0x1
\ 0002B5 3400 ADDC A,#0x0
\ 0002B7 F9 MOV R1,A
\ 0002B8 C3 CLR C
\ 0002B9 E4 CLR A
\ 0002BA 98 SUBB A,R0
\ 0002BB F8 MOV R0,A
\ 0002BC E4 CLR A
\ 0002BD 99 SUBB A,R1
\ 0002BE F9 MOV R1,A
\ 0002BF 8A82 MOV DPL,R2
\ 0002C1 8B83 MOV DPH,R3
\ 0002C3 E0 MOVX A,@DPTR
\ 0002C4 28 ADD A,R0
\ 0002C5 F0 MOVX @DPTR,A
\ 0002C6 A3 INC DPTR
\ 0002C7 E0 MOVX A,@DPTR
\ 0002C8 39 ADDC A,R1
\ 0002C9 F0 MOVX @DPTR,A
226 nbrOfPacketsReceivedFromNode++;
\ 0002CA 0E INC R6
227
228 if(nbrOfPacketsReceivedFromNode < NBR_OF_PACKETS_TO_REQUEST)
\ 0002CB EE MOV A,R6
\ 0002CC C3 CLR C
\ 0002CD 9408 SUBB A,#0x8
\ 0002CF 5005 JNC ??RunBlindNode_22
229 {
230 blindNodeState = REQUEST_REF_NODE_PACKET;
\ ??RunBlindNode_23:
\ 0002D1 7405 MOV A,#0x5
\ 0002D3 02.... LJMP ??RunBlindNode_3 & 0xFFFF
231 }
232 else
233 {
234 // enough packet received
235
236 // divide rssi accumulator on number of packets to get average RSSI
237 refNodesForCalculation[nbrOfRefNodesReceivedForCalculation].rssiAcc >>= NBR_OF_PACKETS_TO_REQUEST_2POW;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -