📄 hal_lcd.s51
字号:
// 271
// 272 #endif /* HAL_LCD */
// 273
// 274 }
LJMP ?BRET
CFI EndBlock cfiBlock1
// 275
// 276 /**************************************************************************************************
// 277 * @fn HalLcdWriteValue
// 278 *
// 279 * @brief Write a value to the LCD
// 280 *
// 281 * @param value - value that will be displayed
// 282 * radix - 8, 10, 16
// 283 * option - display options
// 284 *
// 285 * @return None
// 286 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 287 void HalLcdWriteValue ( uint32 value, const uint8 radix, uint8 option)
HalLcdWriteValue:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function HalLcdWriteValue
// 288 {
FUNCALL HalLcdWriteValue, _ltoa
LOCFRAME XSTACK, 41, STACK
ARGFRAME XSTACK, 41, STACK
MOV A,#-0xe
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 V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 25
MOV A,#-0x19
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 39)
// 289 #if (HAL_LCD == TRUE)
// 290 uint8 buf[LCD_MAX_BUF];
// 291
// 292 _ltoa( value, &buf[0], radix );
; Setup parameters for call to function _ltoa
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV ?V0 + 4,DPL
MOV ?V0 + 5,DPH
MOV R0,#?V0 + 4
LCALL ?PUSH_XSTACK_I_TWO
CFI EndBlock cfiBlock2
REQUIRE ?Subroutine3
; // Fall through to label ?Subroutine3
// 293 HalLcdWriteString( (char*)buf, option );
// 294 #endif /* HAL_LCD */
// 295 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine3:
CFI Block cfiBlock3 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 41)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
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(-14)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 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)))
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, 39)
MOV A,#0x19
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock3
// 296
// 297 /**************************************************************************************************
// 298 * @fn HalLcdWriteScreen
// 299 *
// 300 * @brief Write a value to the LCD
// 301 *
// 302 * @param line1 - string that will be displayed on line 1
// 303 * line2 - string that will be displayed on line 2
// 304 *
// 305 * @return None
// 306 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 307 void HalLcdWriteScreen( char *line1, char *line2 )
HalLcdWriteScreen:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function HalLcdWriteScreen
// 308 {
; Saved register size: 0
; Auto size: 0
// 309 #if (HAL_LCD == TRUE)
// 310 HalLcdWriteString( line1, HAL_LCD_LINE_1 );
// 311 HalLcdWriteString( line2, HAL_LCD_LINE_2 );
// 312 #endif /* HAL_LCD */
// 313 }
LJMP ?BRET
CFI EndBlock cfiBlock4
// 314
// 315 /**************************************************************************************************
// 316 * @fn HalLcdWriteStringValue
// 317 *
// 318 * @brief Write a string followed by a value to the LCD
// 319 *
// 320 * @param title -
// 321 * value -
// 322 * format -
// 323 * line -
// 324 *
// 325 * @return None
// 326 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 327 void HalLcdWriteStringValue( char *title, uint16 value, uint8 format, uint8 line )
HalLcdWriteStringValue:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function HalLcdWriteStringValue
// 328 {
FUNCALL HalLcdWriteStringValue, osal_strlen
LOCFRAME XSTACK, 39, STACK
ARGFRAME XSTACK, 39, STACK
FUNCALL HalLcdWriteStringValue, osal_memcpy
LOCFRAME XSTACK, 42, STACK
ARGFRAME XSTACK, 42, STACK
FUNCALL HalLcdWriteStringValue, _ltoa
LOCFRAME XSTACK, 41, STACK
ARGFRAME XSTACK, 41, STACK
MOV A,#-0xe
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 V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 25
MOV A,#-0x19
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 39)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV ?V0 + 3,R1
// 329 #if (HAL_LCD == TRUE)
// 330 uint8 tmpLen;
// 331 uint8 buf[LCD_MAX_BUF];
// 332 uint32 err;
// 333
// 334 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
// 335 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, 42)
MOV A,R2
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, 39)
// 336 buf[tmpLen] = ' ';
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 4
MOV DPL,A
MOV A,DPH
ADDC A,#0x0
MOV DPH,A
MOV A,#0x20
MOVX @DPTR,A
// 337 err = (uint32)(value);
// 338 _ltoa( err, &buf[tmpLen+1], format );
; Setup parameters for call to function _ltoa
INC DPTR
MOV ?V0 + 0,DPL
MOV ?V0 + 1,DPH
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 41)
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
LJMP ?Subroutine3 & 0xFFFF
CFI EndBlock cfiBlock5
// 339 HalLcdWriteString( (char*)buf, line );
// 340 #endif /* HAL_LCD */
// 341 }
// 342
// 343 /**************************************************************************************************
// 344 * @fn HalLcdWriteStringValue
// 345 *
// 346 * @brief Write a string followed by a value to the LCD
// 347 *
// 348 * @param title -
// 349 * value1 -
// 350 * format1 -
// 351 * value2 -
// 352 * format2 -
// 353 * line -
// 354 *
// 355 * @return None
// 356 **************************************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 357 void HalLcdWriteStringValueValue( char *title, uint16 value1, uint8 format1,
HalLcdWriteStringValueValue:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function HalLcdWriteStringValueValue
// 358 uint16 value2, byte format2, uint8 line )
// 359 {
FUNCALL HalLcdWriteStringValueValue, osal_strlen
LOCFRAME XSTACK, 41, STACK
ARGFRAME XSTACK, 41, STACK
FUNCALL HalLcdWriteStringValueValue, osal_memcpy
LOCFRAME XSTACK, 44, STACK
ARGFRAME XSTACK, 44, STACK
FUNCALL HalLcdWriteStringValueValue, _ltoa
LOCFRAME XSTACK, 43, STACK
ARGFRAME XSTACK, 43, STACK
FUNCALL HalLcdWriteStringValueValue, osal_strlen
LOCFRAME XSTACK, 41, STACK
ARGFRAME XSTACK, 41, STACK
FUNCALL HalLcdWriteStringValueValue, _ltoa
LOCFRAME XSTACK, 43, STACK
ARGFRAME XSTACK, 43, STACK
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: 25
MOV A,#-0x19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -