📄 ref_node.lst
字号:
\ 000147 A3 INC DPTR
\ 000148 E0 MOVX A,@DPTR
\ 000149 FB MOV R3,A
\ 00014A 90.... MOV DPTR,#(SendPosition & 0xffff)
\ 00014D 74.. MOV A,#((SendPosition >> 16) & 0xff)
\ 00014F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000152 D290 SETB 0x90.0
\ 000154 ; Setup parameters for call to function AddToSleepTimer
\ 000154 7AEE MOV R2,#-0x12
\ 000156 7B02 MOV R3,#0x2
\ 000158 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 00015B 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 00015D 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??RunRefNode_8:
\ 000160 E4 CLR A
\ 000161 90.... MOV DPTR,#buffer
\ 000164 F0 MOVX @DPTR,A
\ ??RunRefNode_7:
\ 000165 90.... MOV DPTR,#parametersReceived
\ 000168 E0 MOVX A,@DPTR
\ 000169 6023 JZ ??RunRefNode_12
\ 00016B C2AD CLR 0xa8.5
\ 00016D E4 CLR A
\ 00016E F0 MOVX @DPTR,A
\ 00016F ; Setup parameters for call to function SendPosition
\ 00016F 7A34 MOV R2,#0x34
\ 000171 7B12 MOV R3,#0x12
\ 000173 90.... MOV DPTR,#(SendPosition & 0xffff)
\ 000176 74.. MOV A,#((SendPosition >> 16) & 0xff)
\ 000178 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00017B ; Setup parameters for call to function storeCoordinates
\ 00017B 12.... LCALL storeCoordinates
\ 00017E C2C7 CLR 0xc0.7
\ 000180 D2AD SETB 0xa8.5
\ 000182 ; Setup parameters for call to function AddToSleepTimer
\ 000182 7AEE MOV R2,#-0x12
\ 000184 7B02 MOV R3,#0x2
\ 000186 90.... MOV DPTR,#(AddToSleepTimer & 0xffff)
\ 000189 74.. MOV A,#((AddToSleepTimer >> 16) & 0xff)
\ 00018B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??RunRefNode_12:
\ 00018E 90.... MOV DPTR,#blinkLed
\ 000191 E0 MOVX A,@DPTR
\ 000192 600E JZ ??RunRefNode_13
\ 000194 E4 CLR A
\ 000195 F0 MOVX @DPTR,A
\ 000196 C290 CLR 0x90.0
\ 000198 90.... MOV DPTR,#ledBlinkCounter
\ 00019B F0 MOVX @DPTR,A
\ 00019C 7402 MOV A,#0x2
\ 00019E 90.... MOV DPTR,#refNodeState
\ 0001A1 F0 MOVX @DPTR,A
\ ??RunRefNode_13:
\ 0001A2 ; Setup parameters for call to function GetSleepTimer
\ 0001A2 7404 MOV A,#0x4
\ 0001A4 12.... LCALL ?XSTACK_DISP0_8
\ 0001A7 AA82 MOV R2,DPL
\ 0001A9 AB83 MOV R3,DPH
\ 0001AB 90.... MOV DPTR,#(GetSleepTimer & 0xffff)
\ 0001AE 74.. MOV A,#((GetSleepTimer >> 16) & 0xff)
\ 0001B0 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0001B3 85..82 MOV DPL,?XSP + 0
\ 0001B6 85..83 MOV DPH,?XSP + 1
\ 0001B9 78.. MOV R0,#?V0 + 0
\ 0001BB 12.... LCALL ?UL_GT_X
\ 0001BE 4003 JC $+5
\ 0001C0 02.... LJMP ??RunRefNode_4
\ 0001C3 7404 MOV A,#0x4
\ 0001C5 12.... LCALL ?XSTACK_DISP0_8
\ 0001C8 78.. MOV R0,#?V0 + 4
\ 0001CA 12.... LCALL ?L_MOV_X
\ 0001CD 78.. MOV R0,#?V0 + 4
\ 0001CF 79.. MOV R1,#?V0 + 0
\ 0001D1 12.... LCALL ?UL_GT
\ 0001D4 5003 JNC $+5
\ 0001D6 02.... LJMP ??RunRefNode_6
\ 0001D9 7404 MOV A,#0x4
\ 0001DB 12.... LCALL ?XSTACK_DISP0_8
\ 0001DE C082 PUSH DPL
\ 0001E0 C083 PUSH DPH
\ 0001E2 85..82 MOV DPL,?XSP + 0
\ 0001E5 85..83 MOV DPH,?XSP + 1
\ 0001E8 78.. MOV R0,#?V0 + 4
\ 0001EA 12.... LCALL ?L_MOV_X
\ 0001ED D083 POP DPH
\ 0001EF D082 POP DPL
\ 0001F1 78.. MOV R0,#?V0 + 4
\ 0001F3 12.... LCALL ?UL_GT_X
\ 0001F6 5003 JNC $+5
\ 0001F8 02.... LJMP ??RunRefNode_6
\ 0001FB 02.... LJMP ??RunRefNode_5
213 }
214 }
215
216 /******************************************************************************
217 *
218 * This function return the value for the sleep timer
219 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
220 void GetSleepTimer(UINT32 *value){
\ GetSleepTimer:
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
221 *value = ST0;
\ 000005 E595 MOV A,0x95
\ 000007 8A82 MOV DPL,R2
\ 000009 8B83 MOV DPH,R3
\ 00000B F0 MOVX @DPTR,A
\ 00000C A3 INC DPTR
\ 00000D E4 CLR A
\ 00000E F0 MOVX @DPTR,A
\ 00000F A3 INC DPTR
\ 000010 F0 MOVX @DPTR,A
\ 000011 A3 INC DPTR
\ 000012 F0 MOVX @DPTR,A
222 *value |= (UINT32)ST1 << 8;
\ 000013 8596.. MOV ?V0 + 0,0x96
\ 000016 F5.. MOV ?V0 + 1,A
\ 000018 F5.. MOV ?V0 + 2,A
\ 00001A F5.. MOV ?V0 + 3,A
\ 00001C 7408 MOV A,#0x8
\ 00001E 78.. MOV R0,#?V0 + 0
\ 000020 12.... LCALL ?L_SHL
\ 000023 8A82 MOV DPL,R2
\ 000025 8B83 MOV DPH,R3
\ 000027 78.. MOV R0,#?V0 + 0
\ 000029 12.... LCALL ?L_IOR_TO_X
223 *value |= (UINT32)ST2 << 16;
\ 00002C 8597.. MOV ?V0 + 0,0x97
\ 00002F 75..00 MOV ?V0 + 1,#0x0
\ 000032 7410 MOV A,#0x10
\ 000034 78.. MOV R0,#?V0 + 0
\ 000036 12.... LCALL ?L_SHL
\ 000039 8A82 MOV DPL,R2
\ 00003B 8B83 MOV DPH,R3
\ 00003D 78.. MOV R0,#?V0 + 0
\ 00003F 12.... LCALL ?L_IOR_TO_X
224 }
\ 000042 7F04 MOV R7,#0x4
\ 000044 02.... LJMP ?BANKED_LEAVE_XDATA
225
226 /******************************************************************************
227 *
228 * This function setup x and y when a packet is received.
229 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
230 void SetupRefNode(BYTE *b){
\ SetupRefNode:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
231 UINT8 i;
232
233 for(i = 0; i < b[0]; i++){
\ 000005 7E00 MOV R6,#0x0
\ 000007 8017 SJMP ??SetupRefNode_0
234 switch( b[1 + i*3] )
235 {
236 case X:
237 x = BYTES_TO_WORD(b[2 + i*3], b[3 + i*3]);
238 break;
239 case Y:
240 y = BYTES_TO_WORD(b[2 + i*3], b[3 + i*3]);
\ ??SetupRefNode_1:
\ 000009 8C82 MOV DPL,R4
\ 00000B 8D83 MOV DPH,R5
\ 00000D E0 MOVX A,@DPTR
\ 00000E FD MOV R5,A
\ 00000F 8882 MOV DPL,R0
\ 000011 8983 MOV DPH,R1
\ 000013 E0 MOVX A,@DPTR
\ 000014 F8 MOV R0,A
\ 000015 ED MOV A,R5
\ 000016 F9 MOV R1,A
\ 000017 90.... MOV DPTR,#y
\ ??SetupRefNode_2:
\ 00001A E8 MOV A,R0
\ 00001B F0 MOVX @DPTR,A
\ 00001C A3 INC DPTR
\ 00001D E9 MOV A,R1
\ 00001E F0 MOVX @DPTR,A
\ ??SetupRefNode_3:
\ 00001F 0E INC R6
\ ??SetupRefNode_0:
\ 000020 8A82 MOV DPL,R2
\ 000022 8B83 MOV DPH,R3
\ 000024 E0 MOVX A,@DPTR
\ 000025 FC MOV R4,A
\ 000026 EE MOV A,R6
\ 000027 C3 CLR C
\ 000028 9C SUBB A,R4
\ 000029 5044 JNC ??SetupRefNode_4
\ 00002B EE MOV A,R6
\ 00002C 75F003 MOV B,#0x3
\ 00002F A4 MUL AB
\ 000030 F8 MOV R0,A
\ 000031 A9F0 MOV R1,B
\ 000033 EA MOV A,R2
\ 000034 28 ADD A,R0
\ 000035 F582 MOV DPL,A
\ 000037 EB MOV A,R3
\ 000038 39 ADDC A,R1
\ 000039 F583 MOV DPH,A
\ 00003B E582 MOV A,DPL
\ 00003D 2403 ADD A,#0x3
\ 00003F F8 MOV R0,A
\ 000040 E583 MOV A,DPH
\ 000042 3400 ADDC A,#0x0
\ 000044 F9 MOV R1,A
\ 000045 E582 MOV A,DPL
\ 000047 2402 ADD A,#0x2
\ 000049 FC MOV R4,A
\ 00004A E583 MOV A,DPH
\ 00004C 3400 ADDC A,#0x0
\ 00004E FD MOV R5,A
\ 00004F A3 INC DPTR
\ 000050 E0 MOVX A,@DPTR
\ 000051 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for SetupRefNode>_0`:
\ 000054 01 DB 1
\ 000055 01 DB 1
\ 000056 .... DW ??SetupRefNode_3
\ 000058 .... DW ??SetupRefNode_5
\ 00005A .... DW ??SetupRefNode_1
\ ??SetupRefNode_5:
\ 00005C 8C82 MOV DPL,R4
\ 00005E 8D83 MOV DPH,R5
\ 000060 E0 MOVX A,@DPTR
\ 000061 FD MOV R5,A
\ 000062 8882 MOV DPL,R0
\ 000064 8983 MOV DPH,R1
\ 000066 E0 MOVX A,@DPTR
\ 000067 F8 MOV R0,A
\ 000068 ED MOV A,R5
\ 000069 F9 MOV R1,A
\ 00006A 90.... MOV DPTR,#x
\ 00006D 80AB SJMP ??SetupRefNode_2
241 break;
242 case Z:
243 // unimplemented
244 break;
245 default:
246 break;
247 }
248 }
249 parametersReceived = TRUE;
\ ??SetupRefNode_4:
\ 00006F 7401 MOV A,#0x1
\ 000071 90.... MOV DPTR,#parametersReceived
\ 000074 F0 MOVX @DPTR,A
250 }
\ 000075 FF MOV R7,A
\ 000076 02.... LJMP ?BANKED_LEAVE_XDATA
251
252 /******************************************************************************
253 *
254 * This function handle sleep timer interrupts for reference node.
255 ******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -