📄 blind_node.lst
字号:
\ 000046 85C9C9 MOV 0xc9,0xc9
114 WDT_ENABLE();
\ 000049 43C908 ORL 0xc9,#0x8
\ 00004C 8044 SJMP ??RunBlindNode_0
115
116 while(TRUE) {
117 WDT_RESET();
118
119 if(parametersReceived){
120 // ack to pc with packet contains A and N
121 SendConfiguration();
\ ??RunBlindNode_1:
\ 00004E ; Setup parameters for call to function SendConfiguration
\ 00004E 90.... MOV DPTR,#(SendConfiguration & 0xffff)
\ 000051 74.. MOV A,#((SendConfiguration >> 16) & 0xff)
\ 000053 12.... LCALL ?BCALL ; Banked call to: DPTR()
122 parametersReceived = FALSE;
\ 000056 E4 CLR A
\ 000057 90.... MOV DPTR,#parametersReceived
\ 00005A F0 MOVX @DPTR,A
123 // start a new calculation with new parameters
124 blindNodeState = INIT_BCAST;
\ 00005B 90.... MOV DPTR,#blindNodeState
\ 00005E F0 MOVX @DPTR,A
125 }
126
127 switch (blindNodeState){
128 case INIT_BCAST:
129 nbrOfBCastReplys = 0;
\ ??RunBlindNode_2:
\ 00005F E4 CLR A
\ 000060 90.... MOV DPTR,#nbrOfBCastReplys
\ 000063 F0 MOVX @DPTR,A
130 nbrOfRetries = 0;
\ 000064 90.... MOV DPTR,#nbrOfRetries
\ 000067 F0 MOVX @DPTR,A
131 memset(refNodesForCalculation, 0, sizeof(refNodesForCalculation));
\ 000068 ; Setup parameters for call to function memset
\ 000068 75..40 MOV ?V0 + 2,#0x40
\ 00006B F5.. MOV ?V0 + 3,A
\ 00006D 78.. MOV R0,#?V0 + 2
\ 00006F 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000072 7C00 MOV R4,#0x0
\ 000074 7D00 MOV R5,#0x0
\ 000076 7A.. MOV R2,#(refNodesForCalculation & 0xff)
\ 000078 7B.. MOV R3,#((refNodesForCalculation >> 8) & 0xff)
\ 00007A 90.... MOV DPTR,#(memset & 0xffff)
\ 00007D 74.. MOV A,#((memset >> 16) & 0xff)
\ 00007F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000082 7402 MOV A,#0x2
\ 000084 12.... LCALL ?DEALLOC_XSTACK8
132 blindNodeState = BCAST_REQUEST;
\ 000087 7401 MOV A,#0x1
\ ??RunBlindNode_3:
\ 000089 90.... MOV DPTR,#blindNodeState
\ 00008C F0 MOVX @DPTR,A
133 SET_BUFFER_EMPTY();
\ ??RunBlindNode_4:
\ 00008D E4 CLR A
\ 00008E 90.... MOV DPTR,#buffer
\ ??RunBlindNode_5:
\ 000091 F0 MOVX @DPTR,A
\ ??RunBlindNode_0:
\ 000092 740F MOV A,#0xf
\ 000094 55C9 ANL A,0xc9
\ 000096 44A0 ORL A,#0xa0
\ 000098 F5C9 MOV 0xc9,A
\ 00009A 740F MOV A,#0xf
\ 00009C 55C9 ANL A,0xc9
\ 00009E 4450 ORL A,#0x50
\ 0000A0 F5C9 MOV 0xc9,A
\ 0000A2 90.... MOV DPTR,#parametersReceived
\ 0000A5 E0 MOVX A,@DPTR
\ 0000A6 70A6 JNZ ??RunBlindNode_1
\ 0000A8 90.... MOV DPTR,#blindNodeState
\ 0000AB E0 MOVX A,@DPTR
\ 0000AC 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for RunBlindNode>_0`:
\ 0000AF 00 DB 0
\ 0000B0 09 DB 9
\ 0000B1 .... DW ??RunBlindNode_6
\ 0000B3 .... DW ??RunBlindNode_2
\ 0000B5 .... DW ??RunBlindNode_7
\ 0000B7 .... DW ??RunBlindNode_8
\ 0000B9 .... DW ??RunBlindNode_9
\ 0000BB .... DW ??RunBlindNode_10
\ 0000BD .... DW ??RunBlindNode_11
\ 0000BF .... DW ??RunBlindNode_12
\ 0000C1 .... DW ??RunBlindNode_13
\ 0000C3 .... DW ??RunBlindNode_14
\ 0000C5 .... DW ??RunBlindNode_14
134 break;
135 case BCAST_REQUEST:
136 #ifdef USE_LED
137 LED1 = LED_ON;
\ ??RunBlindNode_7:
\ 0000C7 C290 CLR 0x90.0
138 #endif
139 ReqSignals(BROADCAST_ADDR);
\ 0000C9 ; Setup parameters for call to function ReqSignals
\ 0000C9 7AFF MOV R2,#-0x1
\ 0000CB 7BFF MOV R3,#-0x1
\ 0000CD 90.... MOV DPTR,#(ReqSignals & 0xffff)
\ 0000D0 74.. MOV A,#((ReqSignals >> 16) & 0xff)
\ 0000D2 12.... LCALL ?BCALL ; Banked call to: DPTR()
140 nbrOfRetries++;
\ 0000D5 90.... MOV DPTR,#nbrOfRetries
\ 0000D8 E0 MOVX A,@DPTR
\ 0000D9 04 INC A
\ 0000DA F0 MOVX @DPTR,A
141
142 blindNodeState = RECEIVE_BCAST_REPLY;
\ 0000DB 7402 MOV A,#0x2
\ 0000DD 90.... MOV DPTR,#blindNodeState
\ 0000E0 F0 MOVX @DPTR,A
143 AddToSleepTimer(BLIND_NODE_WAIT_FOR_BCAST_REPLY);
\ 0000E1 ; Setup parameters for call to function AddToSleepTimer
\ 0000E1 7A64 MOV R2,#0x64
\ 0000E3 7B00 MOV R3,#0x0
\ 0000E5 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 0000E8 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 0000EA 12.... LCALL ?BCALL ; Banked call to: DPTR()
144 INT_SETFLAG(INUM_ST, INT_CLR);
\ 0000ED C2C7 CLR 0xc0.7
145 INT_ENABLE(INUM_ST, INT_ON);
\ 0000EF D2AD SETB 0xa8.5
146 #ifdef USE_LED
147 LED1 = LED_OFF;
\ 0000F1 D290 SETB 0x90.0
\ 0000F3 809D SJMP ??RunBlindNode_0
148 #endif
149 break;
150 case RECEIVE_BCAST_REPLY:
151 if (msgReceived)
\ ??RunBlindNode_8:
\ 0000F5 90.... MOV DPTR,#msgReceived
\ 0000F8 E0 MOVX A,@DPTR
\ 0000F9 6097 JZ ??RunBlindNode_0
152 {
153 msgReceived = FALSE;
\ 0000FB E4 CLR A
\ 0000FC F0 MOVX @DPTR,A
154 packetType = buffer.b.pMsdu[PACKET_INDEX_TYPE];
155 if (packetType == PACKET_TYPE_REF_NODE_POSITION)
\ 0000FD 90.... MOV DPTR,#(buffer + 27)
\ 000100 E0 MOVX A,@DPTR
\ 000101 6412 XRL A,#0x12
\ 000103 7088 JNZ ??RunBlindNode_4
156 {
157 HandleBCastReply(buffer.b.srcAddr.Short, buffer.b.mpduLinkQuality, buffer.b.pMsdu);
\ 000105 ; Setup parameters for call to function HandleBCastReply
\ 000105 7C.. MOV R4,#((buffer + 27) & 0xff)
\ 000107 7D.. MOV R5,#(((buffer + 27) >> 8) & 0xff)
\ 000109 90.... MOV DPTR,#(buffer + 23)
\ 00010C E0 MOVX A,@DPTR
\ 00010D F9 MOV R1,A
\ 00010E 90.... MOV DPTR,#(buffer + 4)
\ 000111 E0 MOVX A,@DPTR
\ 000112 FA MOV R2,A
\ 000113 A3 INC DPTR
\ 000114 E0 MOVX A,@DPTR
\ 000115 FB MOV R3,A
\ 000116 90.... MOV DPTR,#(HandleBCastReply & 0xffff)
\ 000119 74.. MOV A,#((HandleBCastReply >> 16) & 0xff)
\ 00011B 12.... LCALL ?BCALL ; Banked call to: DPTR()
158 }
159 SET_BUFFER_EMPTY();
\ 00011E 02.... LJMP ??RunBlindNode_4 & 0xFFFF
160 }
161 // state transition handled by Sleep Timer
162 break;
163 case CHECK_REPLIES:
164 if(nbrOfRetries < MAX_NBR_OF_REQUESTS)
\ ??RunBlindNode_9:
\ 000121 90.... MOV DPTR,#nbrOfRetries
\ 000124 E0 MOVX A,@DPTR
\ 000125 C3 CLR C
\ 000126 9408 SUBB A,#0x8
\ 000128 5008 JNC ??RunBlindNode_15
165 {
166 // Do a new broadcast
167 blindNodeState = BCAST_REQUEST;
\ 00012A 7401 MOV A,#0x1
\ ??RunBlindNode_16:
\ 00012C 90.... MOV DPTR,#blindNodeState
\ 00012F 02.... LJMP ??RunBlindNode_5 & 0xFFFF
168 }
169 else{
170 // Calculate upper left corner of 64x64 square, node with highest RSSI is
171 // placed in the midle of this square
172 CalculateUpperLeft(&xUpperLeft, &yUpperLeft, &xStrongestNode, &yStrongestNode, &strongestRssi);
\ ??RunBlindNode_15:
\ 000132 ; Setup parameters for call to function CalculateUpperLeft
\ 000132 7406 MOV A,#0x6
\ 000134 12.... LCALL ?XSTACK_DISP0_8
\ 000137 8582.. MOV ?V0 + 2,DPL
\ 00013A 8583.. MOV ?V0 + 3,DPH
\ 00013D 78.. MOV R0,#?V0 + 2
\ 00013F 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000142 740B MOV A,#0xb
\ 000144 12.... LCALL ?XSTACK_DISP0_8
\ 000147 8582.. MOV ?V0 + 2,DPL
\ 00014A 8583.. MOV ?V0 + 3,DPH
\ 00014D 78.. MOV R0,#?V0 + 2
\ 00014F 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000152 740B MOV A,#0xb
\ 000154 12.... LCALL ?XSTACK_DISP0_8
\ 000157 8582.. MOV ?V0 + 2,DPL
\ 00015A 8583.. MOV ?V0 + 3,DPH
\ 00015D 78.. MOV R0,#?V0 + 2
\ 00015F 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000162 7408 MOV A,#0x8
\ 000164 12.... LCALL ?XSTACK_DISP0_8
\ 000167 AC82 MOV R4,DPL
\ 000169 AD83 MOV R5,DPH
\ 00016B 7406 MOV A,#0x6
\ 00016D 12.... LCALL ?XSTACK_DISP0_8
\ 000170 AA82 MOV R2,DPL
\ 000172 AB83 MOV R3,DPH
\ 000174 90.... MOV DPTR,#(CalculateUpperLeft & 0xffff)
\ 000177 74.. MOV A,#((CalculateUpperLeft >> 16) & 0xff)
\ 000179 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00017C 7406 MOV A,#0x6
\ 00017E 12.... LCALL ?DEALLOC_XSTACK8
173 nbrOfNodesToUse = ChooseNodesToUse(xUpperLeft, yUpperLeft);
\ 000181 ; Setup parameters for call to function ChooseNodesToUse
\ 000181 7402 MOV A,#0x2
\ 000183 12.... LCALL ?XSTACK_DISP0_8
\ 000186 E0 MOVX A,@DPTR
\ 000187 FC MOV R4,A
\ 000188 A3 INC DPTR
\ 000189 E0 MOVX A,@DPTR
\ 00018A FD MOV R5,A
\ 00018B 85..82 MOV DPL,?XSP + 0
\ 00018E 85..83 MOV DPH,?XSP + 1
\ 000191 E0 MOVX A,@DPTR
\ 000192 FA MOV R2,A
\ 000193 A3 INC DPTR
\ 000194 E0 MOVX A,@DPTR
\ 000195 FB MOV R3,A
\ 000196 90.... MOV DPTR,#(ChooseNodesToUse & 0xffff)
\ 000199 74.. MOV A,#((ChooseNodesToUse >> 16) & 0xff)
\ 00019B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00019E E9 MOV A,R1
\ 00019F F5.. MOV ?V0 + 5,A
174
175 if(nbrOfNodesToUse >= MIN_NBR_OF_REF_NODES)
\ 0001A1 C3 CLR C
\ 0001A2 9403 SUBB A,#0x3
\ 0001A4 4004 JC ??RunBlindNode_17
176 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -