?? lcd.ls1
字號:
183 ; void write_LCD_data(unsigned LCDdata)
184
---- 185 RSEG ?PR?_write_LCD_data?LCD
0000 186 _write_LCD_data:
187 USING 0
188 ; SOURCE LINE # 13
A51 MACRO ASSEMBLER LCD 10/31/2007 10:07:19 PAGE 4
189 ;---- Variable 'LCDdata?141' assigned to Register 'R6/R7' ----
190 ; {rw=WRITE;
191 ; SOURCE LINE # 14
0000 C2B4 192 CLR P3_4
193 ; rs=DATA;
194 ; SOURCE LINE # 15
0002 D2B5 195 SETB P3_5
196 ; enable=ENABLE;
197 ; SOURCE LINE # 16
198 ; P1=LCDdata;
199 ; SOURCE LINE # 17
200 ; delay100us(20);
201 ; SOURCE LINE # 18
0004 120000 F 202 LCALL L?0017
203 ; enable=DISABLE;
204 ; SOURCE LINE # 19
0007 C2B3 205 CLR P3_3
206 ; rw=1;
207 ; SOURCE LINE # 20
0009 D2B4 208 SETB P3_4
209 ; }
210 ; SOURCE LINE # 21
000B 22 211 RET
212 ; END OF _write_LCD_data
213
214 ; void init_LCD(void)
215
---- 216 RSEG ?PR?init_LCD?LCD
0000 217 init_LCD:
218 USING 0
219 ; SOURCE LINE # 22
220 ; { write_LCD_command(Twoline_8bit);
221 ; SOURCE LINE # 23
0000 7F38 222 MOV R7,#038H
0002 7E00 223 MOV R6,#00H
0004 120000 F 224 LCALL _write_LCD_command
225 ; write_LCD_command(CURSOR_OFF);
226 ; SOURCE LINE # 24
0007 7F0C 227 MOV R7,#0CH
0009 7E00 228 MOV R6,#00H
000B 120000 F 229 LCALL _write_LCD_command
230 ; write_LCD_command(CURSOR_RIGHT);
231 ; SOURCE LINE # 25
000E 7F06 232 MOV R7,#06H
0010 7E00 233 MOV R6,#00H
0012 020000 F 234 LJMP _write_LCD_command
235 ; END OF init_LCD
236
237 ; }
238 ; void clear_LCD(void)
239
---- 240 RSEG ?PR?clear_LCD?LCD
0000 241 clear_LCD:
242 USING 0
243 ; SOURCE LINE # 27
244 ; {write_LCD_command(CLEAR);
245 ; SOURCE LINE # 28
0000 7F01 246 MOV R7,#01H
0002 7E00 247 MOV R6,#00H
0004 120000 F 248 LCALL _write_LCD_command
249 ; write_LCD_command(CURSOR_HOME);
250 ; SOURCE LINE # 29
0007 7F02 251 MOV R7,#02H
0009 7E00 252 MOV R6,#00H
000B 020000 F 253 LJMP _write_LCD_command
254 ; END OF clear_LCD
A51 MACRO ASSEMBLER LCD 10/31/2007 10:07:19 PAGE 5
255
256 ; }
257 ; void display_LCD_string(char *p)
258
---- 259 RSEG ?PR?_display_LCD_string?LCD
0000 260 _display_LCD_string:
261 USING 0
262 ; SOURCE LINE # 31
0000 8B00 F 263 MOV p?442,R3
0002 8A00 F 264 MOV p?442+01H,R2
0004 8900 F 265 MOV p?442+02H,R1
266 ; { while(*p)
267 ; SOURCE LINE # 32
0006 268 ?C0005:
0006 AB00 F 269 MOV R3,p?442
0008 AA00 F 270 MOV R2,p?442+01H
000A A900 F 271 MOV R1,p?442+02H
000C 120000 F 272 LCALL ?C?CLDPTR
000F FF 273 MOV R7,A
0010 6014 274 JZ ?C0007
275 ; {write_LCD_data(*p);
276 ; SOURCE LINE # 33
0012 33 277 RLC A
0013 95E0 278 SUBB A,ACC
0015 FE 279 MOV R6,A
0016 120000 F 280 LCALL _write_LCD_data
281 ; p++;
282 ; SOURCE LINE # 34
0019 7401 283 MOV A,#01H
001B 2500 F 284 ADD A,p?442+02H
001D F500 F 285 MOV p?442+02H,A
001F E4 286 CLR A
0020 3500 F 287 ADDC A,p?442+01H
0022 F500 F 288 MOV p?442+01H,A
289 ; } }
290 ; SOURCE LINE # 35
0024 80E0 291 SJMP ?C0005
0026 292 ?C0007:
0026 22 293 RET
294 ; END OF _display_LCD_string
295
296 ; void display_LCD_number(char number)
297
---- 298 RSEG ?PR?_display_LCD_number?LCD
0000 299 _display_LCD_number:
300 USING 0
301 ; SOURCE LINE # 36
302 ;---- Variable 'number?543' assigned to Register 'R7' ----
303 ; { unsigned char x,y;
304 ; SOURCE LINE # 37
305 ; x=number/10;
306 ; SOURCE LINE # 38
0000 EF 307 MOV A,R7
0001 75F00A 308 MOV B,#0AH
0004 120000 F 309 LCALL ?C?SCDIV
0007 FE 310 MOV R6,A
311 ;---- Variable 'x?544' assigned to Register 'R6' ----
312 ; y=number-10*x;
313 ; SOURCE LINE # 39
0008 75F00A 314 MOV B,#0AH
000B A4 315 MUL AB
000C FD 316 MOV R5,A
000D C3 317 CLR C
000E EF 318 MOV A,R7
000F 9D 319 SUBB A,R5
0010 F500 F 320 MOV y?545,A
A51 MACRO ASSEMBLER LCD 10/31/2007 10:07:19 PAGE 6
321 ; write_LCD_data(int2charLCD[x]);
322 ; SOURCE LINE # 40
0012 EE 323 MOV A,R6
0013 900000 F 324 MOV DPTR,#int2charLCD
0016 93 325 MOVC A,@A+DPTR
0017 FF 326 MOV R7,A
0018 33 327 RLC A
0019 95E0 328 SUBB A,ACC
001B FE 329 MOV R6,A
001C 120000 F 330 LCALL _write_LCD_data
331 ; write_LCD_data(int2charLCD[y]);
332 ; SOURCE LINE # 41
001F E500 F 333 MOV A,y?545
0021 900000 F 334 MOV DPTR,#int2charLCD
0024 93 335 MOVC A,@A+DPTR
0025 FF 336 MOV R7,A
0026 33 337 RLC A
0027 95E0 338 SUBB A,ACC
0029 FE 339 MOV R6,A
002A 020000 F 340 LJMP _write_LCD_data
341 ; END OF _display_LCD_number
342
343 ; }
344 ; void gotoxy(unsigned x,unsigned y)
345
---- 346 RSEG ?PR?_gotoxy?LCD
0000 347 _gotoxy:
348 USING 0
349 ; SOURCE LINE # 43
0000 8C00 F 350 MOV y?647,R4
0002 8D00 F 351 MOV y?647+01H,R5
352 ;---- Variable 'x?646' assigned to Register 'R6/R7' ----
353 ; { if(x==1)
354 ; SOURCE LINE # 44
0004 EF 355 MOV A,R7
0005 6401 356 XRL A,#01H
0007 4E 357 ORL A,R6
0008 7006 358 JNZ ?C0009
359 ; write_LCD_command(GOTO_LINE_1+y);
360 ; SOURCE LINE # 45
000A E500 F 361 MOV A,y?647+01H
000C 2480 362 ADD A,#080H
000E 8004 363 SJMP ?C0016
0010 364 ?C0009:
365 ; else
366 ; write_LCD_command(GOTO_LINE_2+y) ;
367 ; SOURCE LINE # 47
0010 E500 F 368 MOV A,y?647+01H
0012 24C0 369 ADD A,#0C0H
0014 370 ?C0016:
0014 FF 371 MOV R7,A
0015 E4 372 CLR A
0016 3500 F 373 ADDC A,y?647
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -