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