📄 lcd.s51
字号:
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 + -