⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ref_node.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -