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

📄 ref_node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
//  361    BYTE bank;
//  362    BOOL res;
//  363 
//  364    bank = MEMCTR;
        MOV	A,0xc7
        MOV	R6,A
//  365    res = FALSE;
        MOV	R7,#0x0
//  366 
//  367    if(findNewestEntry()){
        ; Setup parameters for call to function findNewestEntry
        LCALL	findNewestEntry
        MOV	A,R1
        JZ	??getCoordinates_0
//  368       // storing the coordinates
//  369       x = pFlashEntry->xyz_coordinates.x;
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	R0,A
        MOV	A,#0x1
        MOVC	A,@A+DPTR
        MOV	R1,A
        MOV	DPTR,#x
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  370       y = pFlashEntry->xyz_coordinates.y;
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	R0,A
        MOV	A,#0x1
        MOVC	A,@A+DPTR
        MOV	R1,A
        MOV	DPTR,#y
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  371       z = pFlashEntry->xyz_coordinates.z;
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPTR,#z
        MOVX	@DPTR,A
//  372       res = TRUE;
        INC	R7
//  373    }
//  374    MEMCTR = bank;
??getCoordinates_0:
        MOV	0xc7,R6
//  375    return res;
        MOV	A,R7
        MOV	R1,A
        CFI EndBlock cfiBlock8
        REQUIRE ?Subroutine1
        ; // Fall through to label ?Subroutine1
//  376 }

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiBlock9 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock9
//  377 
//  378 
//  379 /******************************************************************************
//  380 *
//  381 * Store the corrdinates in flash
//  382 ******************************************************************************/

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  383 __near_func void storeCoordinates(void){
storeCoordinates:
        CFI Block cfiBlock10 Using cfiCommon0
        CFI Function storeCoordinates
        FUNCALL storeCoordinates, findNewestEntry
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL storeCoordinates, halFlashErasePage
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL storeCoordinates, writeToFlash
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        MOV	A,#-0x8
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
//  384    BYTE bank;
//  385 
//  386    EA = FALSE;
        CLR	0xa8.7
//  387    bank = MEMCTR;
        MOV	A,0xc7
        MOV	R6,A
//  388 
//  389    if( !findNewestEntry() )
        ; Setup parameters for call to function findNewestEntry
        LCALL	findNewestEntry
        MOV	A,R1
        JNZ	??storeCoordinates_0
//  390    {
//  391       MEMCTR = bank;
        MOV	0xc7,R6
//  392       halFlashErasePage(pRamBuffer, PAGE_NUMBER);
        ; Setup parameters for call to function halFlashErasePage
        MOV	R1,#0x3e
        MOV	R2,#(pRamBuffer & 0xff)
        MOV	R3,#((pRamBuffer >> 8) & 0xff)
        MOV	DPTR,#(halFlashErasePage & 0xffff)
        MOV	A,#((halFlashErasePage >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  393       bank = MEMCTR;
        MOV	A,0xc7
        MOV	R6,A
//  394       SET_MEMORY_BANK(XYZ_BANK);
        ORL	0xc7,#0x30
        MOV	A,0xc7
//  395       pFlashEntry = (FLASH_ENTRY __code *)XYZ_FLASH_ADDRESS;
        MOV	DPTR,#pFlashEntry
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x10
        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:
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	R0,A
        MOV	A,#0x1
        MOVC	A,@A+DPTR
        MOV	R1,A
        MOV	DPTR,#x
        MOVX	A,@DPTR
        XRL	A,R0
        JNZ	??storeCoordinates_1
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,R1
??storeCoordinates_1:
        JNZ	??storeCoordinates_2
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	R0,A
        MOV	A,#0x1
        MOVC	A,@A+DPTR
        MOV	R1,A
        MOV	DPTR,#y
        MOVX	A,@DPTR
        XRL	A,R0
        JNZ	??storeCoordinates_3
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,R1
??storeCoordinates_3:
        JNZ	??storeCoordinates_2
        MOV	DPTR,#pFlashEntry
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        CLR	A
        MOVC	A,@A+DPTR
        MOV	R2,A
        MOV	DPTR,#z
        MOVX	A,@DPTR
        XRL	A,R2
        JZ	??storeCoordinates_4
//  402    {
//  403       // overwriting the old coordinates and store new ones, 16 bytes in total
//  404       flashEntries[0].status[0] = 0;
??storeCoordinates_2:
        CLR	A
        MOV	DPTR,#flashEntries
        MOVX	@DPTR,A
//  405       flashEntries[1].status[0] = 0xFF;
        MOV	A,#-0x1
        MOV	DPTR,#(flashEntries + 8)
        MOVX	@DPTR,A
//  406       flashEntries[1].xyz_coordinates.x = x;
        MOV	DPTR,#x
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(flashEntries + 11)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  407       flashEntries[1].xyz_coordinates.y = y;
        MOV	DPTR,#y
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(flashEntries + 13)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  408       flashEntries[1].xyz_coordinates.z = z;
        MOV	DPTR,#z
        MOVX	A,@DPTR
        MOV	DPTR,#(flashEntries + 15)
        MOVX	@DPTR,A
//  409 
//  410       writeToFlash();
        ; Setup parameters for call to function writeToFlash
        LCALL	writeToFlash
//  411    }
//  412    MEMCTR = bank;
??storeCoordinates_4:
        MOV	0xc7,R6
//  413    EA = TRUE;
        SETB	0xa8.7
//  414 }
        LJMP	?Subroutine1
        CFI EndBlock cfiBlock10

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "RefNode Powerup">`:
        DB "RefNode Powerup"

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_0>`:
        DD 0

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_28488>`:
        DD 165000

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_ffffff>`:
        DD 16777215

        RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "RefNode Powerup">`:
        DS 16
        REQUIRE `?<Initializer for <Constant "RefNode Powerup">`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_0:
        DS 4
        REQUIRE `?<Initializer for __Constant_0>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_28488:
        DS 4
        REQUIRE `?<Initializer for __Constant_28488>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_ffffff:
        DS 4
        REQUIRE `?<Initializer for __Constant_ffffff>`
        REQUIRE __INIT_XDATA_I

        ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c0H
// union <unnamed> volatile __sfr _A_IRCON
_A_IRCON:
        DS 1

        END
// 
//   291 bytes in segment BANKED_CODE
// 1 115 bytes in segment NEAR_CODE
//    10 bytes in segment PM0_XDATA
//    17 bytes in segment SFR_AN
//    28 bytes in segment XDATA_I
//    28 bytes in segment XDATA_ID
//    27 bytes in segment XDATA_Z
// 
// 1 422 bytes of CODE  memory (+ 12 bytes shared)
//     0 bytes of DATA  memory (+ 17 bytes shared)
//    53 bytes of XDATA memory (+ 12 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -