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

📄 lcd.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R4
        MOV	R6,A
        MOV	A,R5
        MOV	R7,A
//  142    lcdUpdateLine(LINE1, pLine1);
        ; Setup parameters for call to function lcdUpdateLine
        MOV	R1,#0x0
        MOV	DPTR,#(lcdUpdateLine & 0xffff)
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  143    lcdUpdateLine(LINE2, pLine2);
        ; Setup parameters for call to function lcdUpdateLine
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	R1,#0x1
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        CFI EndBlock cfiBlock2
        REQUIRE ?Subroutine4
        ; // Fall through to label ?Subroutine4
//  144    return;
//  145 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine4:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        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(-9)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 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)))
        LCALL	?BCALL               ; Banked call to: DPTR()
        LJMP	??Subroutine0_0 & 0xFFFF
        CFI EndBlock cfiBlock3
//  146 
//  147 
//  148 /******************************************************************************
//  149 * See lcd.h for a description of this function.
//  150 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  151 void waitVisible(BOOL visibility)
waitVisible:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function waitVisible
//  152 {
        FUNCALL waitVisible, halWait
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
//  153    UINT16 i;
//  154 
//  155    if(visibility){
        MOV	A,R1
        JZ	??waitVisible_0
//  156       i = 100;
        MOV	R6,#0x64
??waitVisible_1:
        MOV	R7,#0x0
        SJMP	??waitVisible_2
//  157    }
//  158    else{
//  159       i = 6;
??waitVisible_0:
        MOV	R6,#0x6
        SJMP	??waitVisible_1
//  160    }
//  161 
//  162    while(i--){
//  163       halWait(10);
??waitVisible_3:
        ; Setup parameters for call to function halWait
        MOV	R1,#0xa
        MOV	DPTR,#(halWait & 0xffff)
        MOV	A,#((halWait >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  164    }
??waitVisible_2:
        MOV	A,R6
        MOV	R0,A
        MOV	A,R7
        MOV	R1,A
        MOV	A,#-0x1
        ADD	A,R0
        DEC	R6
        MOV	A,#-0x1
        ADDC	A,R1
        MOV	R7,A
        MOV	A,R0
        JNZ	??waitVisible_4
        MOV	A,R1
??waitVisible_4:
        JNZ	??waitVisible_3
//  165 }
        LJMP	??Subroutine0_0 & 0xFFFF
        CFI EndBlock cfiBlock4
//  166 
//  167 
//  168 /******************************************************************************
//  169 * See lcd.h for a description of this function.
//  170 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  171 void lcdUpdateLine(UINT8 line, char *pLine) {
lcdUpdateLine:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function lcdUpdateLine
        FUNCALL lcdUpdateLine, smbSend
        LOCFRAME XSTACK, 62, STACK
        ARGFRAME XSTACK, 62, STACK
        FUNCALL lcdUpdateLine, lcdConvertChar
        LOCFRAME XSTACK, 62, STACK
        ARGFRAME XSTACK, 62, STACK
        FUNCALL lcdUpdateLine, lcdConvertChar
        LOCFRAME XSTACK, 62, STACK
        ARGFRAME XSTACK, 62, STACK
        FUNCALL lcdUpdateLine, smbSend
        LOCFRAME XSTACK, 62, STACK
        ARGFRAME XSTACK, 62, 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: 50
        MOV	A,#-0x32
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 62)
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  172    BYTE sendBuffer[50];
//  173    UINT8 i, j;
//  174    char c;
//  175 
//  176    i = 0;
//  177    sendBuffer[i++] = LCD_ADDR;
        MOV	A,#0x76
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  178    sendBuffer[i++] = RS_0;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
//  179    sendBuffer[i++] = ((line == LINE1) ?  LINE1_ADDR : LINE2_ADDR);
        MOV	A,R1
        JNZ	??lcdUpdateLine_0
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x80
        SJMP	??lcdUpdateLine_1
??lcdUpdateLine_0:
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x40
??lcdUpdateLine_1:
        MOVX	@DPTR,A
//  180    smbSend(sendBuffer, i);
        ; Setup parameters for call to function smbSend
        MOV	R1,#0x3
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(smbSend & 0xffff)
        MOV	A,#((smbSend >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  181 
//  182    i = j = 0;
        MOV	?V0 + 1,#0x0
//  183    sendBuffer[i++] = LCD_ADDR;
//  184    sendBuffer[i++] = RS_1;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x40
        MOVX	@DPTR,A
        MOV	?V0 + 0,#0x2
        SJMP	??lcdUpdateLine_2
//  185    while( ( (c = pLine[j]) != '\0' ) && j < LINE_SIZE ){
//  186       sendBuffer[i++] = lcdConvertChar(c);
??lcdUpdateLine_3:
        ; Setup parameters for call to function lcdConvertChar
        MOV	DPTR,#(lcdConvertChar & 0xffff)
        MOV	A,#((lcdConvertChar >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 2,?V0 + 0
        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
        MOV	A,R1
        MOVX	@DPTR,A
        INC	?V0 + 0
//  187       j++;
        INC	?V0 + 1
//  188    }
??lcdUpdateLine_2:
        MOV	?V0 + 2,?V0 + 1
        MOV	A,R6
        ADD	A,?V0 + 2
        MOV	DPL,A
        MOV	A,R7
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	R1,A
        JZ	??lcdUpdateLine_4
        MOV	A,?V0 + 1
        CLR	C
        SUBB	A,#0x10
        JC	??lcdUpdateLine_3
//  189    for ( ;j < LINE_SIZE; j++){
??lcdUpdateLine_4:
        MOV	A,?V0 + 1
        CLR	C
        SUBB	A,#0x10
        JNC	??lcdUpdateLine_5
//  190       sendBuffer[i++] = lcdConvertChar(' ');
        ; Setup parameters for call to function lcdConvertChar
        MOV	R1,#0x20
        MOV	DPTR,#(lcdConvertChar & 0xffff)
        MOV	A,#((lcdConvertChar >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 2,?V0 + 0
        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
        MOV	A,R1
        MOVX	@DPTR,A
        INC	?V0 + 0
//  191    }
        INC	?V0 + 1
        SJMP	??lcdUpdateLine_4
//  192    smbSend(sendBuffer, i);
??lcdUpdateLine_5:
        ; Setup parameters for call to function smbSend
        MOV	R1,?V0 + 0
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(smbSend & 0xffff)
        MOV	A,#((smbSend >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  193 }
        MOV	A,#0x32
        LCALL	?DEALLOC_XSTACK8
        CFI EndBlock cfiBlock5
        REQUIRE ?Subroutine2
        ; // Fall through to label ?Subroutine2

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiBlock6 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        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(-12)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 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	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock6
//  194 
//  195 
//  196 /******************************************************************************
//  197 * See lcd.h for a description of this function.
//  198 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  199 void lcdUpdateChar(UINT8 line, UINT8 position, char c){
lcdUpdateChar:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function lcdUpdateChar
        FUNCALL lcdUpdateChar, lcdConvertChar
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL lcdUpdateChar, lcdUpdateSymbol
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
        MOV	A,R2
        MOV	R7,A
        MOV	A,R3
        MOV	R1,A
//  200    lcdUpdateSymbol(line, position, lcdConvertChar(c));
        ; Setup parameters for call to function lcdUpdateSymbol
        ; Setup parameters for call to function lcdConvertChar
        MOV	DPTR,#(lcdConvertChar & 0xffff)
        MOV	A,#((lcdConvertChar >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R3,A
        MOV	A,R7
        MOV	R2,A
        MOV	A,R6
        MOV	R1,A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -