📄 ref_node.s51
字号:
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 + -