📄 ref_node.lst
字号:
\ 000018 12.... LCALL setUpDmaToFlash
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();
\ 000054 ; Setup parameters for call to function PrintXY
\ 000054 90.... MOV DPTR,#(PrintXY & 0xffff)
\ 000057 74.. MOV A,#((PrintXY >> 16) & 0xff)
\ 000059 12.... LCALL ?BCALL ; Banked call to: DPTR()
126 #endif
127
128 SET_BUFFER_EMPTY();
\ 00005C E4 CLR A
\ 00005D 90.... MOV DPTR,#buffer
\ 000060 F0 MOVX @DPTR,A
129
130 WDT_SET_TIMEOUT_PERIOD(SEC_1);
\ 000061 53C9FC ANL 0xc9,#0xfc
\ 000064 E5C9 MOV A,0xc9
\ 000066 85C9C9 MOV 0xc9,0xc9
131 WDT_ENABLE();
\ 000069 43C908 ORL 0xc9,#0x8
\ 00006C 8002 SJMP ??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) ) )
185 {
186 SendPosition(PC_SHORT);
187 msgTimerValue = sleepTimerValue;
188 msgTimerValueNextSend = msgTimerValue + (UINT32)REF_NODE_MSG_INTERVALL;
189 msgTimerValueNextSend &= ~0xFF000000;
190 }
191
192 if(refNodeState == AWAKE_STATE)
193 {
194 #if defined CC2430EB && defined USE_LED
195 LED3 = LED_ON;
\ ??RunRefNode_4:
\ 00006E C293 CLR 0x90.3
196 #elif defined CC2430DB && defined USE_LED
197 LED2 = LED_ON;
198 #endif
199 }
\ ??RunRefNode_3:
\ 000070 740F MOV A,#0xf
\ 000072 55C9 ANL A,0xc9
\ 000074 44A0 ORL A,#0xa0
\ 000076 F5C9 MOV 0xc9,A
\ 000078 740F MOV A,#0xf
\ 00007A 55C9 ANL A,0xc9
\ 00007C 4450 ORL A,#0x50
\ 00007E F5C9 MOV 0xc9,A
\ 000080 90.... MOV DPTR,#msgReceived
\ 000083 E0 MOVX A,@DPTR
\ 000084 604B JZ ??RunRefNode_5
\ 000086 E4 CLR A
\ 000087 F0 MOVX @DPTR,A
\ 000088 90.... MOV DPTR,#(buffer + 27)
\ 00008B E0 MOVX A,@DPTR
\ 00008C 6411 XRL A,#0x11
\ 00008E 703C JNZ ??RunRefNode_6
\ 000090 90.... MOV DPTR,#x
\ 000093 E0 MOVX A,@DPTR
\ 000094 64FF XRL A,#0xff
\ 000096 7004 JNZ ??RunRefNode_7
\ 000098 A3 INC DPTR
\ 000099 E0 MOVX A,@DPTR
\ 00009A 64FF XRL A,#0xff
\ ??RunRefNode_7:
\ 00009C 700E JNZ ??RunRefNode_8
\ 00009E 90.... MOV DPTR,#y
\ 0000A1 E0 MOVX A,@DPTR
\ 0000A2 64FF XRL A,#0xff
\ 0000A4 7004 JNZ ??RunRefNode_9
\ 0000A6 A3 INC DPTR
\ 0000A7 E0 MOVX A,@DPTR
\ 0000A8 64FF XRL A,#0xff
\ ??RunRefNode_9:
\ 0000AA 6020 JZ ??RunRefNode_6
\ ??RunRefNode_8:
\ 0000AC C290 CLR 0x90.0
\ 0000AE ; Setup parameters for call to function SendPosition
\ 0000AE 90.... MOV DPTR,#(buffer + 4)
\ 0000B1 E0 MOVX A,@DPTR
\ 0000B2 FA MOV R2,A
\ 0000B3 A3 INC DPTR
\ 0000B4 E0 MOVX A,@DPTR
\ 0000B5 FB MOV R3,A
\ 0000B6 90.... MOV DPTR,#(SendPosition & 0xffff)
\ 0000B9 74.. MOV A,#((SendPosition >> 16) & 0xff)
\ 0000BB 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000BE D290 SETB 0x90.0
\ 0000C0 ; Setup parameters for call to function AddToSleepTimer
\ 0000C0 7AEE MOV R2,#-0x12
\ 0000C2 7B02 MOV R3,#0x2
\ 0000C4 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 0000C7 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 0000C9 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??RunRefNode_6:
\ 0000CC E4 CLR A
\ 0000CD 90.... MOV DPTR,#buffer
\ 0000D0 F0 MOVX @DPTR,A
\ ??RunRefNode_5:
\ 0000D1 90.... MOV DPTR,#parametersReceived
\ 0000D4 E0 MOVX A,@DPTR
\ 0000D5 602B JZ ??RunRefNode_10
\ 0000D7 C2AD CLR 0xa8.5
\ 0000D9 E4 CLR A
\ 0000DA F0 MOVX @DPTR,A
\ 0000DB ; Setup parameters for call to function SendPosition
\ 0000DB 7A34 MOV R2,#0x34
\ 0000DD 7B12 MOV R3,#0x12
\ 0000DF 90.... MOV DPTR,#(SendPosition & 0xffff)
\ 0000E2 74.. MOV A,#((SendPosition >> 16) & 0xff)
\ 0000E4 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000E7 ; Setup parameters for call to function storeCoordinates
\ 0000E7 12.... LCALL storeCoordinates
\ 0000EA ; Setup parameters for call to function PrintXY
\ 0000EA 90.... MOV DPTR,#(PrintXY & 0xffff)
\ 0000ED 74.. MOV A,#((PrintXY >> 16) & 0xff)
\ 0000EF 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000F2 C2C7 CLR 0xc0.7
\ 0000F4 D2AD SETB 0xa8.5
\ 0000F6 ; Setup parameters for call to function AddToSleepTimer
\ 0000F6 7AEE MOV R2,#-0x12
\ 0000F8 7B02 MOV R3,#0x2
\ 0000FA 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 0000FD 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 0000FF 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??RunRefNode_10:
\ 000102 90.... MOV DPTR,#blinkLed
\ 000105 E0 MOVX A,@DPTR
\ 000106 600E JZ ??RunRefNode_11
\ 000108 E4 CLR A
\ 000109 F0 MOVX @DPTR,A
\ 00010A C290 CLR 0x90.0
\ 00010C 90.... MOV DPTR,#ledBlinkCounter
\ 00010F F0 MOVX @DPTR,A
\ 000110 7402 MOV A,#0x2
\ 000112 90.... MOV DPTR,#refNodeState
\ 000115 F0 MOVX @DPTR,A
\ ??RunRefNode_11:
\ 000116 ; Setup parameters for call to function GetSleepTimer
\ 000116 7404 MOV A,#0x4
\ 000118 12.... LCALL ?XSTACK_DISP0_8
\ 00011B AA82 MOV R2,DPL
\ 00011D AB83 MOV R3,DPH
\ 00011F 90.... MOV DPTR,#(GetSleepTimer & 0xffff)
\ 000122 74.. MOV A,#((GetSleepTimer >> 16) & 0xff)
\ 000124 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000127 85..82 MOV DPL,?XSP + 0
\ 00012A 85..83 MOV DPH,?XSP + 1
\ 00012D 78.. MOV R0,#?V0 + 0
\ 00012F 12.... LCALL ?UL_GT_X
\ 000132 5035 JNC ??RunRefNode_12
\ 000134 7404 MOV A,#0x4
\ 000136 12.... LCALL ?XSTACK_DISP0_8
\ 000139 78.. MOV R0,#?V0 + 4
\ 00013B 12.... LCALL ?L_MOV_X
\ 00013E 78.. MOV R0,#?V0 + 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -