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

📄 ref_node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        LCALL	?BCALL               ; Banked call to: DPTR()
??RunRefNode_6:
        CLR	A
        MOV	DPTR,#buffer
        MOVX	@DPTR,A
??RunRefNode_5:
        MOV	DPTR,#parametersReceived
        MOVX	A,@DPTR
        JZ	??RunRefNode_10
        CLR	0xa8.5
        CLR	A
        MOVX	@DPTR,A
        ; Setup parameters for call to function SendPosition
        MOV	R2,#0x34
        MOV	R3,#0x12
        MOV	DPTR,#(SendPosition & 0xffff)
        MOV	A,#((SendPosition >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        ; Setup parameters for call to function storeCoordinates
        LCALL	storeCoordinates
        ; Setup parameters for call to function PrintXY
        MOV	DPTR,#(PrintXY & 0xffff)
        MOV	A,#((PrintXY >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        CLR	0xc0.7
        SETB	0xa8.5
        ; Setup parameters for call to function AddToSleepTimer
        MOV	R2,#-0x12
        MOV	R3,#0x2
        MOV	DPTR,#(AddToSleepTimer & 0xffff)
        MOV	A,#((AddToSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
??RunRefNode_10:
        MOV	DPTR,#blinkLed
        MOVX	A,@DPTR
        JZ	??RunRefNode_11
        CLR	A
        MOVX	@DPTR,A
        CLR	0x90.0
        MOV	DPTR,#ledBlinkCounter
        MOVX	@DPTR,A
        MOV	A,#0x2
        MOV	DPTR,#refNodeState
        MOVX	@DPTR,A
??RunRefNode_11:
        ; Setup parameters for call to function GetSleepTimer
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(GetSleepTimer & 0xffff)
        MOV	A,#((GetSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?UL_GT_X
        JNC	??RunRefNode_12
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?UL_GT
        JC	??RunRefNode_13
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 4
        LCALL	?UL_GT_X
        JC	??RunRefNode_13
        LJMP	??RunRefNode_14
??RunRefNode_12:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?UL_GT
        JNC	??RunRefNode_14
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        MOV	R0,#?V0 + 4
        MOV	R1,#?V0 + 0
        LCALL	?UL_GT
        JNC	??RunRefNode_14
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	R0,#?V0 + 4
        LCALL	?UL_GT_X
        JNC	??RunRefNode_14
??RunRefNode_13:
        ; Setup parameters for call to function SendPosition
        MOV	R2,#0x34
        MOV	R3,#0x12
        MOV	DPTR,#(SendPosition & 0xffff)
        MOV	A,#((SendPosition >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
        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_28488
        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	?L_ADD_X
        MOV	DPTR,#__Constant_ffffff
        MOV	R0,#?V0 + 0
        LCALL	?L_AND_X
??RunRefNode_14:
        MOV	DPTR,#refNodeState
        MOVX	A,@DPTR
        JNZ	$+5
        LJMP	??RunRefNode_4
//  200       else if(refNodeState == SLEEP_STATE)
        XRL	A,#0x1
        JZ	$+5
        LJMP	??RunRefNode_3
//  201       {
//  202 #if defined CC2430EB  && defined USE_LED
//  203          LED3 = LED_OFF;
        SETB	0x90.3
//  204 #elif defined CC2430DB && defined USE_LED
//  205          LED2 = LED_OFF;
//  206 #endif
//  207 
//  208 #ifdef USE_PM
//  209          // Go to sleep
//  210          mpmSetAndResumeMacAndCpuPowerMode (POWER_MODE_PM2, RESUME_MODE_PARTS_PRESERVED, FALSE);
        ; Setup parameters for call to function mpmSetAndResumeMacAndCpuPowerMode
        MOV	R3,#0x0
        MOV	R2,#0x1
        MOV	R1,#0x1
        LCALL	mpmSetAndResumeMacAndCpuPowerMode
        LJMP	??RunRefNode_3
        CFI EndBlock cfiBlock0
//  211 #endif
//  212       }
//  213    }
//  214 }
//  215 
//  216 /******************************************************************************
//  217 *
//  218 * This function return the value for the sleep timer
//  219 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  220 void GetSleepTimer(UINT32 *value){
GetSleepTimer:
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function GetSleepTimer
        MOV	A,#-0xc
        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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 0
//  221    *value = ST0;
        MOV	A,0x95
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
        INC	DPTR
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  222    *value |= (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,R2
        MOV	DPH,R3
        MOV	R0,#?V0 + 0
        LCALL	?L_IOR_TO_X
//  223    *value |= (UINT32)ST2 << 16;
        MOV	?V0 + 0,0x97
        MOV	?V0 + 1,#0x0
        MOV	A,#0x10
        MOV	R0,#?V0 + 0
        LCALL	?L_SHL
        MOV	DPL,R2
        MOV	DPH,R3
        MOV	R0,#?V0 + 0
        LCALL	?L_IOR_TO_X
//  224 }
        MOV	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock1
//  225 
//  226 /******************************************************************************
//  227 *
//  228 * This function setup x and y when a packet is received.
//  229 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  230 void SetupRefNode(BYTE *b){
SetupRefNode:
        CFI Block cfiBlock2 Using cfiCommon1
        CFI Function SetupRefNode
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
//  231    UINT8 i;
//  232 
//  233    for(i = 0; i < b[0]; i++){
        MOV	R6,#0x0
        SJMP	??SetupRefNode_0
//  234       switch( b[1 + i*3] )
//  235       {
//  236       case X:
//  237          x = BYTES_TO_WORD(b[2 + i*3], b[3 + i*3]);
//  238          break;
//  239       case Y:
//  240          y = BYTES_TO_WORD(b[2 + i*3], b[3 + i*3]);
??SetupRefNode_1:
        MOV	DPL,R4
        MOV	DPH,R5
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        MOV	R0,A
        MOV	A,R5
        MOV	R1,A
        MOV	DPTR,#y
??SetupRefNode_2:
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
??SetupRefNode_3:
        INC	R6
??SetupRefNode_0:
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        MOV	R4,A
        MOV	A,R6
        CLR	C
        SUBB	A,R4
        JNC	??SetupRefNode_4
        MOV	A,R6
        MOV	B,#0x3
        MUL	AB
        MOV	R0,A
        MOV	R1,B
        MOV	A,R2
        ADD	A,R0
        MOV	DPL,A
        MOV	A,R3
        ADDC	A,R1
        MOV	DPH,A
        MOV	A,DPL
        ADD	A,#0x3
        MOV	R0,A
        MOV	A,DPH
        ADDC	A,#0x0
        MOV	R1,A
        MOV	A,DPL
        ADD	A,#0x2
        MOV	R4,A
        MOV	A,DPH
        ADDC	A,#0x0
        MOV	R5,A
        INC	DPTR
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for SetupRefNode>_0`:
        DB        1
        DB        1
        DW        ??SetupRefNode_3
        DW        ??SetupRefNode_5
        DW        ??SetupRefNode_1
??SetupRefNode_5:
        MOV	DPL,R4
        MOV	DPH,R5
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        MOV	R0,A
        MOV	A,R5
        MOV	R1,A
        MOV	DPTR,#x
        SJMP	??SetupRefNode_2
//  241          break;
//  242       case Z:
//  243          // unimplemented
//  244          break;
//  245       default:
//  246          break;
//  247       }
//  248    }
//  249    parametersReceived = TRUE;
??SetupRefNode_4:
        MOV	A,#0x1
        MOV	DPTR,#parametersReceived
        MOVX	@DPTR,A
//  250 }
        MOV	R7,A
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  251 
//  252 /******************************************************************************
//  253 *
//  254 * This function handle sleep timer interrupts for reference node.
//  255 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  256 void ST_IRQ_RefNode(void)
ST_IRQ_RefNode:
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function ST_IRQ_RefNode
//  257 {
        FUNCALL ST_IRQ_RefNode, AddToSleepTimer
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ST_IRQ_RefNode, AddToSleepTimer
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ST_IRQ_RefNode, AddToSleepTimer
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH

⌨️ 快捷键说明

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