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

📄 node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 3 页
字号:
        MOVX	@DPTR,A
//  125    data[PACKET_INDEX_Y_H] = HIBYTE(y);
        MOV	DPTR,#(y + 1)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  126    data[PACKET_INDEX_Y_L] = LOBYTE(y);
        MOV	DPTR,#y
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  127    data[PACKET_INDEX_Z]   = z;
        MOV	DPTR,#z
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  128 
//  129    DataRequest(destAddr, PACKET_INDEX_Z + 1, data);
        ; Setup parameters for call to function DataRequest
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R1,#0x6
        MOV	DPTR,#(DataRequest & 0xffff)
        MOV	A,#((DataRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  130 }
        MOV	A,#0x6
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 XSP16+0
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock3
//  131 
//  132 /******************************************************************************
//  133 *
//  134 * Send a text string to the PC interface, input as printf.
//  135 * The string will be shown in the packet sniffer.
//  136 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  137 void SendText(char *format, ...){
SendText:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function SendText
        FUNCALL SendText, vsprintf
        LOCFRAME XSTACK, 142, STACK
        ARGFRAME XSTACK, 142, STACK
        FUNCALL SendText, DataRequest
        LOCFRAME XSTACK, 140, STACK
        ARGFRAME XSTACK, 140, 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: 130
        MOV	A,#0x7e
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 140)
//  138    BYTE sendBuffer[128];
//  139    va_list ap;
//  140    UINT8 nbrOfChars;
//  141 
//  142    va_start(ap, format);
        MOV	A,#-0x74
        LCALL	?XSTACK_DISP0_8
        MOV	R0,DPL
        MOV	R1,DPH
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  143    // vsprintf is a variant of sprintf which taking a va_list as arguemnt */
//  144    nbrOfChars = vsprintf((char*)&sendBuffer[2], format, ap);
        ; Setup parameters for call to function vsprintf
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	?V0 + 0,DPL
        MOV	?V0 + 1,DPH
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 142)
        MOV	A,R2
        MOV	R4,A
        MOV	A,R3
        MOV	R5,A
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(vsprintf & 0xffff)
        MOV	A,#((vsprintf >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 140)
//  145    va_end(ap);
//  146 
//  147    sendBuffer[0] = PACKET_TYPE_DEBUG_TEXT;
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x30
        MOVX	@DPTR,A
//  148    sendBuffer[1] = nbrOfChars + 1;
        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
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        LJMP	?Subroutine0 & 0xFFFF
        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

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

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

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

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

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

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

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

        END
//  176 
//  177 #ifdef CC2430EB
//  178 /******************************************************************************
//  179 *
//  180 * Print X and Y on LCD display, can only be used on SmartRF04EB
//  181 ******************************************************************************/
//  182 void PrintXY(void){
//  183    char s[16];
//  184    sprintf(s, "X: %d.%d", UINT16_2_INT(x), FRAC_2_TO_DEC(x));
//  185    lcdUpdateLine(LINE1, s);
//  186    sprintf(s, "Y: %d.%d", UINT16_2_INT(y), FRAC_2_TO_DEC(y));
//  187    lcdUpdateLine(LINE2, s);
//  188 }
//  189 #endif
// 
// 592 bytes in segment BANKED_CODE
//   3 bytes in segment INTVEC
//  78 bytes in segment NEAR_CODE
//   3 bytes in segment SFR_AN
//  12 bytes in segment XDATA_I
//  12 bytes in segment XDATA_ID
// 155 bytes in segment XDATA_Z
// 
// 670 bytes of CODE  memory (+ 15 bytes shared)
//   0 bytes of DATA  memory (+  3 bytes shared)
// 155 bytes of XDATA memory (+ 12 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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