⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_lcd.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  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 + -