📄 hal_lcd.s51
字号:
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 41)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV ?V0 + 3,R1
MOV A,#0x29
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 6,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 7,A
// 360 #if (HAL_LCD == TRUE)
// 361 uint8 tmpLen;
// 362 uint8 buf[LCD_MAX_BUF];
// 363 uint32 err;
// 364
// 365 tmpLen = (uint8)osal_strlen( (char*)title );
; Setup parameters for call to function osal_strlen
MOV DPTR,#(osal_strlen & 0xffff)
MOV A,#((osal_strlen >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R2
MOV ?V0 + 4,A
// 366 if ( tmpLen )
JZ ??HalLcdWriteStringValueValue_0
// 367 {
// 368 osal_memcpy( buf, title, tmpLen );
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 44)
MOV A,R2
MOV ?V0 + 0,A
MOV R4,A
MOV R5,#0x0
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(osal_memcpy & 0xffff)
MOV A,#((osal_memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 41)
// 369 buf[tmpLen++] = ' ';
LCALL ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_0:
INC ?V0 + 4
// 370 }
// 371
// 372 err = (uint32)(value1);
// 373 _ltoa( err, &buf[tmpLen], format1 );
??HalLcdWriteStringValueValue_0:
; Setup parameters for call to function _ltoa
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 4
MOV ?V0 + 0,A
MOV A,DPH
ADDC A,#0x0
MOV ?V0 + 1,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 43)
MOV R1,?V0 + 3
MOV ?V0 + 0,R6
MOV ?V0 + 1,R7
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV R4,#0x0
MOV R5,#0x0
MOV DPTR,#(_ltoa & 0xffff)
MOV A,#((_ltoa >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 41)
// 374 tmpLen = (uint8)osal_strlen( (char*)buf );
; Setup parameters for call to function osal_strlen
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(osal_strlen & 0xffff)
MOV A,#((osal_strlen >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R2
MOV ?V0 + 4,A
// 375
// 376 buf[tmpLen++] = ',';
MOV ?V0 + 0,A
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_2:
MOV A,#0x2c
MOVX @DPTR,A
INC ?V0 + 4
// 377 buf[tmpLen++] = ' ';
MOV ?V0 + 0,?V0 + 4
LCALL ?Subroutine0 & 0xFFFF
// 378 err = (uint32)(value2);
// 379 _ltoa( err, &buf[tmpLen], format2 );
??CrossCallReturnLabel_1:
; Setup parameters for call to function _ltoa
MOV A,#0x1
ADD A,?V0 + 4
MOV R0,A
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,R0
MOV ?V0 + 0,A
MOV A,DPH
ADDC A,#0x0
MOV ?V0 + 1,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 43)
MOV A,#0x2d
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R1,A
MOV R2,?V0 + 6
MOV R3,?V0 + 7
MOV R4,#0x0
MOV R5,#0x0
MOV DPTR,#(_ltoa & 0xffff)
MOV A,#((_ltoa >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 41)
// 380
// 381 HalLcdWriteString( (char *)buf, line );
// 382 #endif /* HAL_LCD */
// 383 }
MOV A,#0x19
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
MOV R7,#0x8
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock6
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond7 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_1
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 41)
CFI Block cfiCond8 Using cfiCommon0
CFI (cfiCond8) NoFunction
CFI (cfiCond8) Conditional ??CrossCallReturnLabel_0
CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond8) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond8) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond8) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond8) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond8) CFA_SP SP+0
CFI (cfiCond8) CFA_XSP16 add(XSP16, 41)
CFI Block cfiPicker9 Using cfiCommon1
CFI (cfiPicker9) NoFunction
CFI (cfiPicker9) Picker
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_4:
MOV A,#0x20
MOVX @DPTR,A
RET
CFI EndBlock cfiCond7
CFI EndBlock cfiCond8
CFI EndBlock cfiPicker9
// 384
// 385 /**************************************************************************************************
// 386 * @fn HalLcdDisplayPercentBar
// 387 *
// 388 * @brief Display percentage bar on the LCD
// 389 *
// 390 * @param title -
// 391 * value -
// 392 *
// 393 * @return None
// 394 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 395 void HalLcdDisplayPercentBar( char *title, uint8 value )
HalLcdDisplayPercentBar:
CFI Block cfiBlock10 Using cfiCommon0
CFI Function HalLcdDisplayPercentBar
// 396 {
FUNCALL HalLcdDisplayPercentBar, osal_memcpy
LOCFRAME XSTACK, 32, STACK
ARGFRAME XSTACK, 32, STACK
FUNCALL HalLcdDisplayPercentBar, _ltoa
LOCFRAME XSTACK, 31, STACK
ARGFRAME XSTACK, 31, STACK
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: 17
MOV A,#-0x11
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 29)
MOV A,R1
MOV R6,A
// 397 #if (HAL_LCD == TRUE)
// 398 uint8 percent;
// 399 uint8 leftOver;
// 400 uint8 buf[17];
// 401 uint32 err;
// 402 uint8 x;
// 403
// 404 /* Write the title: */
// 405 HalLcdWriteString( title, HAL_LCD_LINE_1 );
// 406
// 407 if ( value > 100 )
CLR C
SUBB A,#0x65
JC ??HalLcdDisplayPercentBar_0
// 408 value = 100;
MOV R6,#0x64
// 409
// 410 /* convert to blocks */
// 411 percent = (byte)(value / 10);
??HalLcdDisplayPercentBar_0:
MOV B,#0xa
MOV A,R6
DIV AB
MOV ?V0 + 3,A
// 412 leftOver = (byte)(value % 10);
MOV A,R6
MOV B,#0xa
DIV AB
MOV R7,B
// 413
// 414 /* Make window */
// 415 osal_memcpy( buf, "[ ] ", 15 );
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 0,#(`?<Constant "[ ] ">` & 0xff)
MOV ?V0 + 1,#((`?<Constant "[ ] ">` >> 8) & 0xff)
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 32)
MOV R4,#0xf
MOV R5,#0x0
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(osal_memcpy & 0xffff)
MOV A,#((osal_memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 29)
// 416
// 417 for ( x = 0; x < percent; x ++ )
SJMP ??HalLcdDisplayPercentBar_1
// 418 {
// 419 buf[1+x] = '>';
??HalLcdDisplayPercentBar_2:
MOV ?V0 + 0,?V0 + 2
LCALL ?Subroutine1 & 0xFFFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -