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

📄 node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 3 页
字号:
        MOV	A,#0x1
        ADD	A,R2
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  149    DataRequest(PC_SHORT, nbrOfChars + 3, sendBuffer);
        ; Setup parameters for call to function DataRequest
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	A,#0x3
        ADD	A,R2
        MOV	R1,A
        MOV	R2,#0x34
        MOV	R3,#0x12
        MOV	DPTR,#(DataRequest & 0xffff)
        MOV	A,#((DataRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  150 }
        MOV	A,#-0x7e
        CFI EndBlock cfiBlock3
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 140)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        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(-10)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI Invalid
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        CFI Valid
??Subroutine0_0:
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock4
//  151 
//  152 
//  153 /******************************************************************************
//  154 *
//  155 * Add _msec_ number of milliseconds to sleep timer.
//  156 * Using 33 Hz insted of 32.768 Hz for the RC osc.
//  157 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  158 void AddToSleepTimer(UINT16 msec)
AddToSleepTimer:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function AddToSleepTimer
//  159 {
        MOV	A,#-0x10
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; Auto size: 4
        MOV	A,#-0x4
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 20)
//  160    UINT32 sleepTimer;
//  161 
//  162    sleepTimer = ST0;
        MOV	A,0x95
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
        INC	DPTR
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  163    sleepTimer |= (UINT32)ST1 <<  8;
        MOV	?V0 + 0,0x96
        MOV	?V0 + 1,A
        MOV	?V0 + 2,A
        MOV	?V0 + 3,A
        MOV	A,#0x8
        MOV	R0,#?V0 + 0
        LCALL	?L_SHL
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_IOR_TO_X
//  164    sleepTimer |= (UINT32)ST2 << 16;
        MOV	?V0 + 0,0x97
        MOV	?V0 + 1,#0x0
        MOV	A,#0x10
        MOV	R0,#?V0 + 0
        LCALL	?L_SHL
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_IOR_TO_X
//  165 
//  166    sleepTimer += ((UINT32)msec * (UINT32)33); // 32 768 kHz ~ 33 each mSecond
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	?V0 + 2,#0x0
        MOV	DPTR,#__Constant_21
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 0
        MOV	R1,#?V0 + 4
        LCALL	?L_MUL
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_ADD_TO_X
//  167 
//  168    if(sleepTimer > 0x00FFFFFF){
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPTR,#__Constant_1000000
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 0
        LCALL	?UL_GT_X
        JC	??AddToSleepTimer_0
//  169      sleepTimer -= 0x00FFFFFF;
        MOV	DPTR,#__Constant_ff000001
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_ADD_TO_X
//  170    }
//  171 
//  172    ST2 = (UINT8)(sleepTimer >> 16);
??AddToSleepTimer_0:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	A,#0x10
        MOV	R0,#?V0 + 0
        LCALL	?UL_SHR
        MOV	A,?V0 + 0
        MOV	0x97,A
//  173    ST1 = (UINT8)(sleepTimer >> 8);
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	A,?V0 + 1
        MOV	0x96,A
//  174    ST0 = (UINT8) sleepTimer;
        MOV	A,?V0 + 0
        MOV	0x95,A
//  175 }
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 16)
        MOV	R7,#0x8
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock5
//  176 
//  177 #ifdef CC2430EB
//  178 /******************************************************************************
//  179 *
//  180 * Print X and Y on LCD display, can only be used on SmartRF04EB
//  181 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  182 void PrintXY(void){
PrintXY:
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function PrintXY
        FUNCALL PrintXY, sprintf
        LOCFRAME XSTACK, 30, STACK
        ARGFRAME XSTACK, 30, STACK
        FUNCALL PrintXY, lcdUpdateLine
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        FUNCALL PrintXY, sprintf
        LOCFRAME XSTACK, 30, STACK
        ARGFRAME XSTACK, 30, STACK
        FUNCALL PrintXY, lcdUpdateLine
        LOCFRAME XSTACK, 26, STACK
        ARGFRAME XSTACK, 26, STACK
        MOV	A,#-0xa
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 16
        MOV	A,#-0x10
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 26)
//  183    char s[16];
//  184    sprintf(s, "X: %d.%d", UINT16_2_INT(x), FRAC_2_TO_DEC(x));
        MOV	DPTR,#x
        MOVX	A,@DPTR
        ANL	A,#0x3
        XRL	A,#0x3
        JNZ	??PrintXY_0
        MOV	?V0 + 0,#0x4b
        SJMP	??PrintXY_1
??PrintXY_0:
        MOVX	A,@DPTR
        ANL	A,#0x2
        JZ	??PrintXY_2
        MOV	?V0 + 0,#0x32
        SJMP	??PrintXY_1
??PrintXY_2:
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.0
        JNC	??PrintXY_3
        MOV	?V0 + 0,#0x19
        SJMP	??PrintXY_1
??PrintXY_3:
        MOV	?V0 + 0,#0x0
??PrintXY_1:
        MOV	?V0 + 1,#0x0
        ; Setup parameters for call to function sprintf
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 28)
        MOV	DPTR,#x
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	A,#0x2
        MOV	R0,#?V0 + 0
        LCALL	?US_SHR
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 30)
        MOV	R4,#(`?<Constant "X: %d.%d">` & 0xff)
        MOV	R5,#((`?<Constant "X: %d.%d">` >> 8) & 0xff)
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(sprintf & 0xffff)
        MOV	A,#((sprintf >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 26)
//  185    lcdUpdateLine(LINE1, s);
        ; Setup parameters for call to function lcdUpdateLine
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x0
        MOV	DPTR,#(lcdUpdateLine & 0xffff)
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  186    sprintf(s, "Y: %d.%d", UINT16_2_INT(y), FRAC_2_TO_DEC(y));
        MOV	DPTR,#y
        MOVX	A,@DPTR
        ANL	A,#0x3
        XRL	A,#0x3
        JNZ	??PrintXY_4
        MOV	?V0 + 0,#0x4b
        SJMP	??PrintXY_5
??PrintXY_4:
        MOVX	A,@DPTR
        ANL	A,#0x2
        JZ	??PrintXY_6
        MOV	?V0 + 0,#0x32
        SJMP	??PrintXY_5
??PrintXY_6:
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.0
        JNC	??PrintXY_7
        MOV	?V0 + 0,#0x19
        SJMP	??PrintXY_5
??PrintXY_7:
        MOV	?V0 + 0,#0x0
??PrintXY_5:
        MOV	?V0 + 1,#0x0
        ; Setup parameters for call to function sprintf
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 28)
        MOV	DPTR,#y
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	A,#0x2
        MOV	R0,#?V0 + 0
        LCALL	?US_SHR
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 30)
        MOV	R4,#(`?<Constant "Y: %d.%d">` & 0xff)
        MOV	R5,#((`?<Constant "Y: %d.%d">` >> 8) & 0xff)
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(sprintf & 0xffff)
        MOV	A,#((sprintf >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 26)
//  187    lcdUpdateLine(LINE2, s);
        ; Setup parameters for call to function lcdUpdateLine
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	R1,#0x1
        MOV	DPTR,#(lcdUpdateLine & 0xffff)
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  188 }
        MOV	A,#0x10
        LJMP	?Subroutine0 & 0xFFFF
        CFI EndBlock cfiBlock6

        COMMON INTVEC:CODE:ROOT(0)
        ORG 43
`ST_IRQ??INTVEC 43`:
        LJMP       (ST_IRQ)

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "X: %d.%d">>`:
        DB "X: %d.%d"

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "Y: %d.%d">>`:
        DB "Y: %d.%d"

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

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

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

        RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "X: %d.%d">`:
        DS 9
        REQUIRE `?<Initializer for <Constant "X: %d.%d">>`
        REQUIRE __INIT_XDATA_I

        RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "Y: %d.%d">`:
        DS 9
        REQUIRE `?<Initializer for <Constant "Y: %d.%d">>`
        REQUIRE __INIT_XDATA_I

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

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

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

        END
//  189 #endif
// 
// 835 bytes in segment BANKED_CODE
//   3 bytes in segment INTVEC
//  78 bytes in segment NEAR_CODE
//   3 bytes in segment SFR_AN
//  30 bytes in segment XDATA_I
//  30 bytes in segment XDATA_ID
// 155 bytes in segment XDATA_Z
// 
// 931 bytes of CODE  memory (+ 15 bytes shared)
//   0 bytes of DATA  memory (+  3 bytes shared)
// 173 bytes of XDATA memory (+ 12 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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