📄 lcd.lst
字号:
\ In segment BANKED_CODE, align 1, keep-with-next
151 void waitVisible(BOOL visibility)
\ waitVisible:
152 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
153 UINT16 i;
154
155 if(visibility){
\ 000005 E9 MOV A,R1
\ 000006 6006 JZ ??waitVisible_0
156 i = 100;
\ 000008 7E64 MOV R6,#0x64
\ ??waitVisible_1:
\ 00000A 7F00 MOV R7,#0x0
\ 00000C 800E SJMP ??waitVisible_2
157 }
158 else{
159 i = 6;
\ ??waitVisible_0:
\ 00000E 7E06 MOV R6,#0x6
\ 000010 80F8 SJMP ??waitVisible_1
160 }
161
162 while(i--){
163 halWait(10);
\ ??waitVisible_3:
\ 000012 ; Setup parameters for call to function halWait
\ 000012 790A MOV R1,#0xa
\ 000014 90.... MOV DPTR,#(halWait & 0xffff)
\ 000017 74.. MOV A,#((halWait >> 16) & 0xff)
\ 000019 12.... LCALL ?BCALL ; Banked call to: DPTR()
164 }
\ ??waitVisible_2:
\ 00001C EE MOV A,R6
\ 00001D F8 MOV R0,A
\ 00001E EF MOV A,R7
\ 00001F F9 MOV R1,A
\ 000020 74FF MOV A,#-0x1
\ 000022 28 ADD A,R0
\ 000023 1E DEC R6
\ 000024 74FF MOV A,#-0x1
\ 000026 39 ADDC A,R1
\ 000027 FF MOV R7,A
\ 000028 E8 MOV A,R0
\ 000029 7001 JNZ ??waitVisible_4
\ 00002B E9 MOV A,R1
\ ??waitVisible_4:
\ 00002C 70E4 JNZ ??waitVisible_3
165 }
\ 00002E 02.... LJMP ??Subroutine0_0 & 0xFFFF
166
167
168 /******************************************************************************
169 * See lcd.h for a description of this function.
170 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
171 void lcdUpdateLine(UINT8 line, char *pLine) {
\ lcdUpdateLine:
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 50
\ 000005 74CE MOV A,#-0x32
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A EA MOV A,R2
\ 00000B FE MOV R6,A
\ 00000C EB MOV A,R3
\ 00000D FF MOV R7,A
172 BYTE sendBuffer[50];
173 UINT8 i, j;
174 char c;
175
176 i = 0;
177 sendBuffer[i++] = LCD_ADDR;
\ 00000E 7476 MOV A,#0x76
\ 000010 85..82 MOV DPL,?XSP + 0
\ 000013 85..83 MOV DPH,?XSP + 1
\ 000016 F0 MOVX @DPTR,A
178 sendBuffer[i++] = RS_0;
\ 000017 7401 MOV A,#0x1
\ 000019 12.... LCALL ?XSTACK_DISP0_8
\ 00001C E4 CLR A
\ 00001D F0 MOVX @DPTR,A
179 sendBuffer[i++] = ((line == LINE1) ? LINE1_ADDR : LINE2_ADDR);
\ 00001E E9 MOV A,R1
\ 00001F 7009 JNZ ??lcdUpdateLine_0
\ 000021 7402 MOV A,#0x2
\ 000023 12.... LCALL ?XSTACK_DISP0_8
\ 000026 7480 MOV A,#-0x80
\ 000028 8007 SJMP ??lcdUpdateLine_1
\ ??lcdUpdateLine_0:
\ 00002A 7402 MOV A,#0x2
\ 00002C 12.... LCALL ?XSTACK_DISP0_8
\ 00002F 74C0 MOV A,#-0x40
\ ??lcdUpdateLine_1:
\ 000031 F0 MOVX @DPTR,A
180 smbSend(sendBuffer, i);
\ 000032 ; Setup parameters for call to function smbSend
\ 000032 7903 MOV R1,#0x3
\ 000034 85..82 MOV DPL,?XSP + 0
\ 000037 85..83 MOV DPH,?XSP + 1
\ 00003A AA82 MOV R2,DPL
\ 00003C AB83 MOV R3,DPH
\ 00003E 90.... MOV DPTR,#(smbSend & 0xffff)
\ 000041 74.. MOV A,#((smbSend >> 16) & 0xff)
\ 000043 12.... LCALL ?BCALL ; Banked call to: DPTR()
181
182 i = j = 0;
\ 000046 75..00 MOV ?V0 + 1,#0x0
183 sendBuffer[i++] = LCD_ADDR;
184 sendBuffer[i++] = RS_1;
\ 000049 7401 MOV A,#0x1
\ 00004B 12.... LCALL ?XSTACK_DISP0_8
\ 00004E 7440 MOV A,#0x40
\ 000050 F0 MOVX @DPTR,A
\ 000051 75..02 MOV ?V0 + 0,#0x2
\ 000054 8023 SJMP ??lcdUpdateLine_2
185 while( ( (c = pLine[j]) != '\0' ) && j < LINE_SIZE ){
186 sendBuffer[i++] = lcdConvertChar(c);
\ ??lcdUpdateLine_3:
\ 000056 ; Setup parameters for call to function lcdConvertChar
\ 000056 90.... MOV DPTR,#(lcdConvertChar & 0xffff)
\ 000059 74.. MOV A,#((lcdConvertChar >> 16) & 0xff)
\ 00005B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00005E 85.... MOV ?V0 + 2,?V0 + 0
\ 000061 85..82 MOV DPL,?XSP + 0
\ 000064 85..83 MOV DPH,?XSP + 1
\ 000067 E582 MOV A,DPL
\ 000069 25.. ADD A,?V0 + 2
\ 00006B F582 MOV DPL,A
\ 00006D E583 MOV A,DPH
\ 00006F 3400 ADDC A,#0x0
\ 000071 F583 MOV DPH,A
\ 000073 E9 MOV A,R1
\ 000074 F0 MOVX @DPTR,A
\ 000075 05.. INC ?V0 + 0
187 j++;
\ 000077 05.. INC ?V0 + 1
188 }
\ ??lcdUpdateLine_2:
\ 000079 85.... MOV ?V0 + 2,?V0 + 1
\ 00007C EE MOV A,R6
\ 00007D 25.. ADD A,?V0 + 2
\ 00007F F582 MOV DPL,A
\ 000081 EF MOV A,R7
\ 000082 3400 ADDC A,#0x0
\ 000084 F583 MOV DPH,A
\ 000086 E0 MOVX A,@DPTR
\ 000087 F9 MOV R1,A
\ 000088 6007 JZ ??lcdUpdateLine_4
\ 00008A E5.. MOV A,?V0 + 1
\ 00008C C3 CLR C
\ 00008D 9410 SUBB A,#0x10
\ 00008F 40C5 JC ??lcdUpdateLine_3
189 for ( ;j < LINE_SIZE; j++){
\ ??lcdUpdateLine_4:
\ 000091 E5.. MOV A,?V0 + 1
\ 000093 C3 CLR C
\ 000094 9410 SUBB A,#0x10
\ 000096 5027 JNC ??lcdUpdateLine_5
190 sendBuffer[i++] = lcdConvertChar(' ');
\ 000098 ; Setup parameters for call to function lcdConvertChar
\ 000098 7920 MOV R1,#0x20
\ 00009A 90.... MOV DPTR,#(lcdConvertChar & 0xffff)
\ 00009D 74.. MOV A,#((lcdConvertChar >> 16) & 0xff)
\ 00009F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000A2 85.... MOV ?V0 + 2,?V0 + 0
\ 0000A5 85..82 MOV DPL,?XSP + 0
\ 0000A8 85..83 MOV DPH,?XSP + 1
\ 0000AB E582 MOV A,DPL
\ 0000AD 25.. ADD A,?V0 + 2
\ 0000AF F582 MOV DPL,A
\ 0000B1 E583 MOV A,DPH
\ 0000B3 3400 ADDC A,#0x0
\ 0000B5 F583 MOV DPH,A
\ 0000B7 E9 MOV A,R1
\ 0000B8 F0 MOVX @DPTR,A
\ 0000B9 05.. INC ?V0 + 0
191 }
\ 0000BB 05.. INC ?V0 + 1
\ 0000BD 80D2 SJMP ??lcdUpdateLine_4
192 smbSend(sendBuffer, i);
\ ??lcdUpdateLine_5:
\ 0000BF ; Setup parameters for call to function smbSend
\ 0000BF A9.. MOV R1,?V0 + 0
\ 0000C1 85..82 MOV DPL,?XSP + 0
\ 0000C4 85..83 MOV DPH,?XSP + 1
\ 0000C7 AA82 MOV R2,DPL
\ 0000C9 AB83 MOV R3,DPH
\ 0000CB 90.... MOV DPTR,#(smbSend & 0xffff)
\ 0000CE 74.. MOV A,#((smbSend >> 16) & 0xff)
\ 0000D0 12.... LCALL ?BCALL ; Banked call to: DPTR()
193 }
\ 0000D3 7432 MOV A,#0x32
\ 0000D5 12.... LCALL ?DEALLOC_XSTACK8
\ 0000D8 REQUIRE ?Subroutine2
\ 0000D8 ; // Fall through to label ?Subroutine2
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 7F04 MOV R7,#0x4
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
194
195
196 /******************************************************************************
197 * See lcd.h for a description of this function.
198 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
199 void lcdUpdateChar(UINT8 line, UINT8 position, char c){
\ lcdUpdateChar:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
\ 000009 EB MOV A,R3
\ 00000A F9 MOV R1,A
200 lcdUpdateSymbol(line, position, lcdConvertChar(c));
\ 00000B ; Setup parameters for call to function lcdUpdateSymbol
\ 00000B ; Setup parameters for call to function lcdConvertChar
\ 00000B 90.... MOV DPTR,#(lcdConvertChar & 0xffff)
\ 00000E 74.. MOV A,#((lcdConvertChar >> 16) & 0xff)
\ 000010 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000013 E9 MOV A,R1
\ 000014 FB MOV R3,A
\ 000015 EF MOV A,R7
\ 000016 FA MOV R2,A
\ 000017 EE MOV A,R6
\ 000018 F9 MOV R1,A
\ 000019 90.... MOV DPTR,#(lcdUpdateSymbol & 0xffff)
\ 00001C 74.. MOV A,#((lcdUpdateSymbol >> 16) & 0xff)
\ 00001E 02.... LJMP ?Subroutine4 & 0xFFFF
201 }
202
203
204 /******************************************************************************
205 * See lcd.h for a description of this function.
206 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
207 void lcdUpdateSymbol(UINT8 line, UINT8 position, char c){
\ lcdUpdateSymbol:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -