📄 hal_lcd.s51
字号:
??CrossCallReturnLabel_3:
INC DPTR
MOV A,#0x3e
MOVX @DPTR,A
// 420 }
INC ?V0 + 2
??HalLcdDisplayPercentBar_1:
MOV A,?V0 + 2
CLR C
SUBB A,?V0 + 3
JC ??HalLcdDisplayPercentBar_2
// 421
// 422 if ( leftOver >= 5 )
MOV A,R7
CLR C
SUBB A,#0x5
JC ??HalLcdDisplayPercentBar_3
// 423 buf[1+x] = '+';
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 2
MOV DPL,A
MOV A,DPH
ADDC A,#0x0
MOV DPH,A
INC DPTR
MOV A,#0x2b
MOVX @DPTR,A
// 424
// 425 err = (uint32)value;
// 426 _ltoa( err, (uint8*)&buf[13], 10 );
??HalLcdDisplayPercentBar_3:
; Setup parameters for call to function _ltoa
MOV A,#0xd
LCALL ?XSTACK_DISP0_8
MOV ?V0 + 0,DPL
MOV ?V0 + 1,DPH
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 31)
MOV R1,#0xa
MOV A,R6
MOV R2,A
MOV R3,#0x0
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, 29)
// 427
// 428 HalLcdWriteString( (char*)buf, HAL_LCD_LINE_2 );
// 429 #endif /* HAL_LCD */
// 430 }
MOV A,#0x11
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock10
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond11 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_2
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 cfiCond12 Using cfiCommon0
CFI (cfiCond12) NoFunction
CFI (cfiCond12) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond12) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond12) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond12) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond12) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond12) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond12) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond12) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond12) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond12) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond12) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond12) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond12) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond12) CFA_SP SP+0
CFI (cfiCond12) CFA_XSP16 add(XSP16, 29)
CFI Block cfiPicker13 Using cfiCommon1
CFI (cfiPicker13) NoFunction
CFI (cfiPicker13) Picker
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_5:
RET
CFI EndBlock cfiCond11
CFI EndBlock cfiCond12
CFI EndBlock cfiPicker13
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiCond14 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_4, ??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 cfiCond15 Using cfiCommon0
CFI (cfiCond15) NoFunction
CFI (cfiCond15) Conditional ??CrossCallReturnLabel_4, ??CrossCallReturnLabel_0
CFI (cfiCond15) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond15) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond15) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond15) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond15) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond15) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond15) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond15) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond15) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond15) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond15) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond15) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond15) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond15) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond15) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond15) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond15) CFA_SP SP+0
CFI (cfiCond15) CFA_XSP16 add(XSP16, 41)
CFI Block cfiCond16 Using cfiCommon0
CFI (cfiCond16) NoFunction
CFI (cfiCond16) Conditional ??CrossCallReturnLabel_5, ??CrossCallReturnLabel_3
CFI (cfiCond16) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond16) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond16) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond16) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond16) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond16) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond16) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond16) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond16) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond16) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond16) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond16) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond16) CFA_SP SP+0
CFI (cfiCond16) CFA_XSP16 add(XSP16, 29)
CFI Block cfiCond17 Using cfiCommon0
CFI (cfiCond17) NoFunction
CFI (cfiCond17) Conditional ??CrossCallReturnLabel_5, ??CrossCallReturnLabel_2
CFI (cfiCond17) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond17) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond17) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond17) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond17) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond17) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond17) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond17) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond17) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond17) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond17) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond17) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond17) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond17) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond17) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond17) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond17) CFA_SP SP+0
CFI (cfiCond17) CFA_XSP16 add(XSP16, 41)
CFI Block cfiPicker18 Using cfiCommon1
CFI (cfiPicker18) NoFunction
CFI (cfiPicker18) Picker
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 0
MOV DPL,A
MOV A,DPH
ADDC A,#0x0
MOV DPH,A
RET
CFI EndBlock cfiCond14
CFI EndBlock cfiCond15
CFI EndBlock cfiCond16
CFI EndBlock cfiCond17
CFI EndBlock cfiPicker18
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "[ ] ">>`:
DB "[ ] "
RSEG XDATA_I:XDATA:NOROOT(0)
`?<Constant "[ ] ">`:
DS 15
REQUIRE `?<Initializer for <Constant "[ ] ">>`
REQUIRE __INIT_XDATA_I
END
// 431
// 432 #if (defined LCD_HW) && (HAL_LCD == TRUE)
// 433 /*********************************************************************
// 434 * @fn initLcd
// 435 * @brief Initializes LCD I/O bus and LCD device
// 436 * @param void
// 437 * @return void
// 438 */
// 439 static void initLcd( void )
// 440 {
// 441 uint8 buffer[8];
// 442
// 443 // Initialize the serial I/O bus
// 444 initSmb();
// 445
// 446 // Load LCD initialization message
// 447 buffer[0] = LCD_ADDR;
// 448 buffer[1] = LCD_RS_0; // Instruction Register
// 449 buffer[2] = 0x0C; // Display control D = 1: Display On
// 450 // C = 0: Cursor Off
// 451 // B = 0: Cursor character blink off
// 452 buffer[3] = 0x21; // Function set H = 1: Use extended instruction set
// 453 buffer[4] = 0xA0; // Set DDRAM address ADD = 0x20
// 454 buffer[5] = 0x07; // Display configuration P = 1: Column data right to left
// 455 // Q = 1: Row data, bottom to top
// 456 buffer[6] = 0x34; // Function set DL= 0: 4 bits
// 457 // M = 1: 2-line by 16 display
// 458 // SL= 0: MUX1:18
// 459 // H = 0: Use basic instruction set
// 460 buffer[7] = 0x01; // Clearing display
// 461
// 462 // Send message to LCD device
// 463 smbSend( buffer, 8 );
// 464
// 465 }
// 466
// 467 /*********************************************************************
// 468 * @fn lcdUpdateLine
// 469 * @brief Updates one line of the LCD display
// 470 * @param line - LCD line numberptr to string going to LCD line 1
// 471 * @param p2 - ptr to string going to LCD line 2
// 472 * @return void
// 473 */
// 474 static void lcdUpdateLine( uint8 line, uint8 *pLine )
// 475 {
// 476 uint8 i;
// 477 uint8 chr;
// 478 uint8 addr;
// 479 uint8 *buffer;
// 480
// 481 if ( line == HAL_LCD_LINE_1 )
// 482 addr = LCD_LINE1_ADDR;
// 483 else
// 484 addr = LCD_LINE2_ADDR;
// 485
// 486 // Get a buffer to work with
// 487 buffer = osal_mem_alloc( 2+HAL_LCD_MAX_CHARS );
// 488 if ( buffer != NULL )
// 489 {
// 490 // Build and send control string
// 491 buffer[0] = LCD_ADDR;
// 492 buffer[1] = LCD_RS_0;
// 493 buffer[2] = addr;
// 494 smbSend( buffer, 3 );
// 495
// 496 // Build and send message string
// 497 buffer[0] = LCD_ADDR;
// 498 buffer[1] = LCD_RS_1;
// 499 // Convert and save message bytes
// 500 for( i = 2; i < 2+HAL_LCD_MAX_CHARS; i++ )
// 501 {
// 502 chr = *pLine++;
// 503 if ( chr == '\0' )
// 504 {
// 505 chr = lcdConvertChar( ' ' );
// 506 break;
// 507 }
// 508 else
// 509 buffer[i] = lcdConvertChar( chr );
// 510 }
// 511
// 512 // Fill remainder of line with blanks
// 513 for( ; i < 2+HAL_LC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -