📄 ref_node.lst
字号:
336 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
337 __near_func BOOL findNewestEntry(void){
\ findNewestEntry:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
338 WORD index = 0;
\ 000004 7800 MOV R0,#0x0
\ 000006 7900 MOV R1,#0x0
339 // setting correct start location
340 SET_MEMORY_BANK(XYZ_BANK);
\ 000008 43C730 ORL 0xc7,#0x30
\ 00000B E5C7 MOV A,0xc7
341 pFlashEntry = (FLASH_ENTRY __code*) XYZ_FLASH_ADDRESS;
\ 00000D 90.... MOV DPTR,#pFlashEntry
\ 000010 E4 CLR A
\ 000011 F0 MOVX @DPTR,A
\ 000012 A3 INC DPTR
\ 000013 74F0 MOV A,#-0x10
\ 000015 F0 MOVX @DPTR,A
342
343 //start to search
344 while(pFlashEntry->status[0] == 0x00)
\ ??findNewestEntry_0:
\ 000016 90.... MOV DPTR,#pFlashEntry
\ 000019 E0 MOVX A,@DPTR
\ 00001A FA MOV R2,A
\ 00001B A3 INC DPTR
\ 00001C E0 MOVX A,@DPTR
\ 00001D F583 MOV DPH,A
\ 00001F 8A82 MOV DPL,R2
\ 000021 E4 CLR A
\ 000022 93 MOVC A,@A+DPTR
\ 000023 7028 JNZ ??findNewestEntry_1
345 {
346 // the length pointer is incremented with the number of bytes in the structure that is pointed to
347 pFlashEntry++;
\ 000025 90.... MOV DPTR,#pFlashEntry
\ 000028 E0 MOVX A,@DPTR
\ 000029 2408 ADD A,#0x8
\ 00002B FA MOV R2,A
\ 00002C A3 INC DPTR
\ 00002D E0 MOVX A,@DPTR
\ 00002E 3400 ADDC A,#0x0
\ 000030 FB MOV R3,A
\ 000031 90.... MOV DPTR,#pFlashEntry
\ 000034 EA MOV A,R2
\ 000035 F0 MOVX @DPTR,A
\ 000036 A3 INC DPTR
\ 000037 EB MOV A,R3
\ 000038 F0 MOVX @DPTR,A
348 index++;
\ 000039 E8 MOV A,R0
\ 00003A 2401 ADD A,#0x1
\ 00003C 08 INC R0
\ 00003D E9 MOV A,R1
\ 00003E 3400 ADDC A,#0x0
\ 000040 F9 MOV R1,A
349 if(index == NUMBER_OF_FLASH_ENTRIES - 1){
\ 000041 74FF MOV A,#-0x1
\ 000043 68 XRL A,R0
\ 000044 7001 JNZ ??findNewestEntry_2
\ 000046 E9 MOV A,R1
\ ??findNewestEntry_2:
\ 000047 70CD JNZ ??findNewestEntry_0
350 return FALSE;
\ 000049 7900 MOV R1,#0x0
\ 00004B 8002 SJMP ??findNewestEntry_3
351 }
352 }
353 return TRUE;
\ ??findNewestEntry_1:
\ 00004D 7901 MOV R1,#0x1
\ ??findNewestEntry_3:
\ 00004F 02.... LJMP ?Subroutine0
354 }
355
356 /******************************************************************************
357 *
358 * Sets the node coordinates according to the coordinates in flash
359 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
360 __near_func BOOL getCoordinates() {
\ getCoordinates:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
361 BYTE bank;
362 BOOL res;
363
364 bank = MEMCTR;
\ 000005 E5C7 MOV A,0xc7
\ 000007 FE MOV R6,A
365 res = FALSE;
\ 000008 7F00 MOV R7,#0x0
366
367 if(findNewestEntry()){
\ 00000A ; Setup parameters for call to function findNewestEntry
\ 00000A 12.... LCALL findNewestEntry
\ 00000D E9 MOV A,R1
\ 00000E 6055 JZ ??getCoordinates_0
368 // storing the coordinates
369 x = pFlashEntry->xyz_coordinates.x;
\ 000010 90.... MOV DPTR,#pFlashEntry
\ 000013 E0 MOVX A,@DPTR
\ 000014 F8 MOV R0,A
\ 000015 A3 INC DPTR
\ 000016 E0 MOVX A,@DPTR
\ 000017 F583 MOV DPH,A
\ 000019 8882 MOV DPL,R0
\ 00001B A3 INC DPTR
\ 00001C A3 INC DPTR
\ 00001D A3 INC DPTR
\ 00001E E4 CLR A
\ 00001F 93 MOVC A,@A+DPTR
\ 000020 F8 MOV R0,A
\ 000021 7401 MOV A,#0x1
\ 000023 93 MOVC A,@A+DPTR
\ 000024 F9 MOV R1,A
\ 000025 90.... MOV DPTR,#x
\ 000028 E8 MOV A,R0
\ 000029 F0 MOVX @DPTR,A
\ 00002A A3 INC DPTR
\ 00002B E9 MOV A,R1
\ 00002C F0 MOVX @DPTR,A
370 y = pFlashEntry->xyz_coordinates.y;
\ 00002D 90.... MOV DPTR,#pFlashEntry
\ 000030 E0 MOVX A,@DPTR
\ 000031 F8 MOV R0,A
\ 000032 A3 INC DPTR
\ 000033 E0 MOVX A,@DPTR
\ 000034 F583 MOV DPH,A
\ 000036 8882 MOV DPL,R0
\ 000038 A3 INC DPTR
\ 000039 A3 INC DPTR
\ 00003A A3 INC DPTR
\ 00003B A3 INC DPTR
\ 00003C A3 INC DPTR
\ 00003D E4 CLR A
\ 00003E 93 MOVC A,@A+DPTR
\ 00003F F8 MOV R0,A
\ 000040 7401 MOV A,#0x1
\ 000042 93 MOVC A,@A+DPTR
\ 000043 F9 MOV R1,A
\ 000044 90.... MOV DPTR,#y
\ 000047 E8 MOV A,R0
\ 000048 F0 MOVX @DPTR,A
\ 000049 A3 INC DPTR
\ 00004A E9 MOV A,R1
\ 00004B F0 MOVX @DPTR,A
371 z = pFlashEntry->xyz_coordinates.z;
\ 00004C 90.... MOV DPTR,#pFlashEntry
\ 00004F E0 MOVX A,@DPTR
\ 000050 F8 MOV R0,A
\ 000051 A3 INC DPTR
\ 000052 E0 MOVX A,@DPTR
\ 000053 F583 MOV DPH,A
\ 000055 8882 MOV DPL,R0
\ 000057 A3 INC DPTR
\ 000058 A3 INC DPTR
\ 000059 A3 INC DPTR
\ 00005A A3 INC DPTR
\ 00005B A3 INC DPTR
\ 00005C A3 INC DPTR
\ 00005D A3 INC DPTR
\ 00005E E4 CLR A
\ 00005F 93 MOVC A,@A+DPTR
\ 000060 90.... MOV DPTR,#z
\ 000063 F0 MOVX @DPTR,A
372 res = TRUE;
\ 000064 0F INC R7
373 }
374 MEMCTR = bank;
\ ??getCoordinates_0:
\ 000065 8EC7 MOV 0xc7,R6
375 return res;
\ 000067 EF MOV A,R7
\ 000068 F9 MOV R1,A
\ 000069 REQUIRE ?Subroutine1
\ 000069 ; // Fall through to label ?Subroutine1
376 }
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 7F01 MOV R7,#0x1
\ 000002 02.... LJMP ?FUNC_LEAVE_XDATA
377
378
379 /******************************************************************************
380 *
381 * Store the corrdinates in flash
382 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
383 __near_func void storeCoordinates(void){
\ storeCoordinates:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
384 BYTE bank;
385
386 EA = FALSE;
\ 000005 C2AF CLR 0xa8.7
387 bank = MEMCTR;
\ 000007 E5C7 MOV A,0xc7
\ 000009 FE MOV R6,A
388
389 if( !findNewestEntry() )
\ 00000A ; Setup parameters for call to function findNewestEntry
\ 00000A 12.... LCALL findNewestEntry
\ 00000D E9 MOV A,R1
\ 00000E 7021 JNZ ??storeCoordinates_0
390 {
391 MEMCTR = bank;
\ 000010 8EC7 MOV 0xc7,R6
392 halFlashErasePage(pRamBuffer, PAGE_NUMBER);
\ 000012 ; Setup parameters for call to function halFlashErasePage
\ 000012 793E MOV R1,#0x3e
\ 000014 7A.. MOV R2,#(pRamBuffer & 0xff)
\ 000016 7B.. MOV R3,#((pRamBuffer >> 8) & 0xff)
\ 000018 90.... MOV DPTR,#(halFlashErasePage & 0xffff)
\ 00001B 74.. MOV A,#((halFlashErasePage >> 16) & 0xff)
\ 00001D 12.... LCALL ?BCALL ; Banked call to: DPTR()
393 bank = MEMCTR;
\ 000020 E5C7 MOV A,0xc7
\ 000022 FE MOV R6,A
394 SET_MEMORY_BANK(XYZ_BANK);
\ 000023 43C730 ORL 0xc7,#0x30
\ 000026 E5C7 MOV A,0xc7
395 pFlashEntry = (FLASH_ENTRY __code *)XYZ_FLASH_ADDRESS;
\ 000028 90.... MOV DPTR,#pFlashEntry
\ 00002B E4 CLR A
\ 00002C F0 MOVX @DPTR,A
\ 00002D A3 INC DPTR
\ 00002E 74F0 MOV A,#-0x10
\ 000030 F0 MOVX @DPTR,A
396 }
397
398 // Checking that the data needs to be updated
399 if((pFlashEntry->xyz_coordinates.x != x) ||
400 (pFlashEntry->xyz_coordinates.y != y) ||
401 (pFlashEntry->xyz_coordinates.z != z))
\ ??storeCoordinates_0:
\ 000031 90.... MOV DPTR,#pFlashEntry
\ 000034 E0 MOVX A,@DPTR
\ 000035 F8 MOV R0,A
\ 000036 A3 INC DPTR
\ 000037 E0 MOVX A,@DPTR
\ 000038 F583 MOV DPH,A
\ 00003A 8882 MOV DPL,R0
\ 00003C A3 INC DPTR
\ 00003D A3 INC DPTR
\ 00003E A3 INC DPTR
\ 00003F E4 CLR A
\ 000040 93 MOVC A,@A+DPTR
\ 000041 F8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -