📄 lcd_driver.ls1
字号:
215 ; SET_LCD_SID(0);
216 ; SOURCE LINE # 13
000B C2A6 217 CLR P2_6
000D 218 ?C0005:
219 ; //Delay(1);
220 ; SET_LCD_SCLK(1);
221 ; SOURCE LINE # 15
000D D2A7 222 SETB P2_7
223 ; //Delay(2);
224 ; SET_LCD_SCLK(0);
225 ; SOURCE LINE # 17
000F C2A7 226 CLR P2_7
227 ; //Delay(1);
228 ; dat <<= 1;
229 ; SOURCE LINE # 19
0011 EF 230 MOV A,R7
0012 25E0 231 ADD A,ACC
0014 FF 232 MOV R7,A
233 ; }
234 ; SOURCE LINE # 20
0015 0D 235 INC R5
0016 BD0001 236 CJNE R5,#00H,?C0044
0019 0C 237 INC R4
001A 238 ?C0044:
001A ED 239 MOV A,R5
001B 6408 240 XRL A,#08H
001D 4C 241 ORL A,R4
001E 70E3 242 JNZ ?C0001
243 ; }
244 ; SOURCE LINE # 21
0020 245 ?C0006:
0020 22 246 RET
247 ; END OF _lcd_send_byte
248
249 ;
250 ; void lcd_send_word(int dat)
251
---- 252 RSEG ?PR?_lcd_send_word?LCD_DRIVER
0000 253 _lcd_send_word:
254 USING 0
255 ; SOURCE LINE # 23
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 5
256 ;---- Variable 'dat?142' assigned to Register 'R6/R7' ----
257 ; {
258 ; SOURCE LINE # 24
259 ; int i;
260 ;
261 ; for(i = 0; i < 16; i++)
262 ; SOURCE LINE # 27
263 ;---- Variable 'i?143' assigned to Register 'R4/R5' ----
0000 E4 264 CLR A
0001 FD 265 MOV R5,A
0002 FC 266 MOV R4,A
0003 267 ?C0007:
268 ; {
269 ; SOURCE LINE # 28
270 ; if(dat & 0x8000)
271 ; SOURCE LINE # 29
0003 EE 272 MOV A,R6
0004 30E704 273 JNB ACC.7,?C0010
274 ; SET_LCD_SID(1);
275 ; SOURCE LINE # 30
0007 D2A6 276 SETB P2_6
0009 8002 277 SJMP ?C0011
000B 278 ?C0010:
279 ; else
280 ; SET_LCD_SID(0);
281 ; SOURCE LINE # 32
000B C2A6 282 CLR P2_6
000D 283 ?C0011:
284 ; //Delay(1);
285 ; SET_LCD_SCLK(1);
286 ; SOURCE LINE # 34
000D D2A7 287 SETB P2_7
288 ; //Delay(2);
289 ; SET_LCD_SCLK(0);
290 ; SOURCE LINE # 36
000F C2A7 291 CLR P2_7
292 ; //Delay(1);
293 ; dat <<= 1;
294 ; SOURCE LINE # 38
0011 EF 295 MOV A,R7
0012 25E0 296 ADD A,ACC
0014 FF 297 MOV R7,A
0015 EE 298 MOV A,R6
0016 33 299 RLC A
0017 FE 300 MOV R6,A
301 ; }
302 ; SOURCE LINE # 39
0018 0D 303 INC R5
0019 BD0001 304 CJNE R5,#00H,?C0045
001C 0C 305 INC R4
001D 306 ?C0045:
001D ED 307 MOV A,R5
001E 6410 308 XRL A,#010H
0020 4C 309 ORL A,R4
0021 70E0 310 JNZ ?C0007
311 ; }
312 ; SOURCE LINE # 40
0023 313 ?C0012:
0023 22 314 RET
315 ; END OF _lcd_send_word
316
317 ;
318 ; char lcd_read_byte(void)
319
---- 320 RSEG ?PR?lcd_read_byte?LCD_DRIVER
0000 321 lcd_read_byte:
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 6
322 USING 0
323 ; SOURCE LINE # 42
324 ;---- Variable 'result?246' assigned to Register 'R1' ----
325 ; {
326 ; SOURCE LINE # 43
327 ; int i, dat = 0;
328 ; SOURCE LINE # 44
329 ;---- Variable 'dat?245' assigned to Register 'R4/R5' ----
0000 E4 330 CLR A
0001 FD 331 MOV R5,A
0002 FC 332 MOV R4,A
333 ; char result;
334 ;
335 ; for(i = 0; i < 16; i++)
336 ; SOURCE LINE # 47
337 ;---- Variable 'i?244' assigned to Register 'R2/R3' ----
0003 FB 338 MOV R3,A
0004 FA 339 MOV R2,A
0005 340 ?C0013:
341 ; {
342 ; SOURCE LINE # 48
343 ; SET_LCD_SCLK(1);
344 ; SOURCE LINE # 49
0005 D2A7 345 SETB P2_7
346 ; //Delay(2);
347 ; GET_LCD_SID(result);
0007 D291 348 SETB P1.1; result = P2_6;
349 ; dat <<= 1;
350 ; SOURCE LINE # 52
0009 ED 351 MOV A,R5
000A 25E0 352 ADD A,ACC
000C FD 353 MOV R5,A
000D EC 354 MOV A,R4
000E 33 355 RLC A
000F FC 356 MOV R4,A
357 ; dat |= result;
358 ; SOURCE LINE # 53
0010 E9 359 MOV A,R1
0011 FF 360 MOV R7,A
0012 33 361 RLC A
0013 95E0 362 SUBB A,ACC
0015 FE 363 MOV R6,A
0016 EF 364 MOV A,R7
0017 4205 365 ORL AR5,A
0019 EE 366 MOV A,R6
001A 4204 367 ORL AR4,A
368 ; SET_LCD_SCLK(0);
369 ; SOURCE LINE # 54
001C C2A7 370 CLR P2_7
371 ; //Delay(2);
372 ; }
373 ; SOURCE LINE # 56
001E 0B 374 INC R3
001F BB0001 375 CJNE R3,#00H,?C0046
0022 0A 376 INC R2
0023 377 ?C0046:
0023 EB 378 MOV A,R3
0024 6410 379 XRL A,#010H
0026 4A 380 ORL A,R2
0027 70DC 381 JNZ ?C0013
0029 382 ?C0014:
383 ; result = ((dat & 0xf000) >> 8) + ((dat & 0x00f0) >> 4);
384 ; SOURCE LINE # 57
0029 7E00 385 MOV R6,#00H
002B ED 386 MOV A,R5
002C 54F0 387 ANL A,#0F0H
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 7
002E 7804 388 MOV R0,#04H
0030 389 ?C0047:
0030 CE 390 XCH A,R6
0031 A2E7 391 MOV C,ACC.7
0033 13 392 RRC A
0034 CE 393 XCH A,R6
0035 13 394 RRC A
0036 D8F8 395 DJNZ R0,?C0047
0038 FB 396 MOV R3,A
0039 EC 397 MOV A,R4
003A 54F0 398 ANL A,#0F0H
003C 2B 399 ADD A,R3
400 ; return result;
401 ; SOURCE LINE # 58
003D FF 402 MOV R7,A
403 ; }
404 ; SOURCE LINE # 59
003E 405 ?C0016:
003E 22 406 RET
407 ; END OF lcd_read_byte
408
409 ;
410 ; int lcd_busy_flag(void)
411
---- 412 RSEG ?PR?lcd_busy_flag?LCD_DRIVER
0000 413 lcd_busy_flag:
414 USING 0
415 ; SOURCE LINE # 61
416 ; {
417 ; SOURCE LINE # 62
418 ; char start_byte;
419 ;
420 ; start_byte = SYNC_CHARACTER | START_BYTE_RW;
421 ; SOURCE LINE # 65
422 ;---- Variable 'start_byte?347' assigned to Register 'R7' ----
0000 7FFC 423 MOV R7,#0FCH
424 ;
425 ; lcd_send_byte(start_byte);
426 ; SOURCE LINE # 67
0002 120000 F 427 LCALL _lcd_send_byte
428 ;
429 ; //SET_LCD_SID(1);
430 ;
431 ; return lcd_read_byte() & 0x80;
432 ; SOURCE LINE # 71
0005 120000 F 433 LCALL lcd_read_byte
0008 7E00 434 MOV R6,#00H
000A EF 435 MOV A,R7
000B 5480 436 ANL A,#080H
000D FF 437 MOV R7,A
438 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -