📄 lcd_driver.ls1
字号:
439 ; SOURCE LINE # 72
000E 440 ?C0017:
000E 22 441 RET
442 ; END OF lcd_busy_flag
443
444 ;
445 ; void lcd_write_instruction(char ins, char mode)
446
---- 447 RSEG ?PR?_lcd_write_instruction?LCD_DRIVER
0000 448 L?0051:
449 USING 0
0000 AF82 450 MOV R7,DPL
0002 EF 451 MOV A,R7
0003 452 L?0052:
0003 4480 453 ORL A,#080H
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 8
0005 FF 454 MOV R7,A
0006 7D01 455 MOV R5,#01H
0008 456 _lcd_write_instruction:
457 USING 0
458 ; SOURCE LINE # 74
0008 8F00 F 459 MOV ins?448,R7
460 ;---- Variable 'mode?449' assigned to Register 'R5' ----
461 ; {
462 ; SOURCE LINE # 75
463 ; char start_byte;
464 ; int command;
465 ;
466 ; if(mode)
467 ; SOURCE LINE # 79
000A ED 468 MOV A,R5
000B 6007 469 JZ ?C0018
000D 470 ?C0019:
471 ; while(lcd_busy_flag())
472 ; SOURCE LINE # 80
000D 120000 F 473 LCALL lcd_busy_flag
0010 EF 474 MOV A,R7
0011 4E 475 ORL A,R6
0012 70F9 476 JNZ ?C0019
477 ; {
478 ; SOURCE LINE # 81
479 ; ;
480 ; }
481 ; SOURCE LINE # 83
0014 482 ?C0018:
483 ;
484 ; start_byte = SYNC_CHARACTER;
485 ; SOURCE LINE # 85
486 ;---- Variable 'start_byte?450' assigned to Register 'R7' ----
0014 7FF8 487 MOV R7,#0F8H
488 ; lcd_send_byte(start_byte);
489 ; SOURCE LINE # 86
0016 120000 F 490 LCALL _lcd_send_byte
491 ;
492 ; command = ins & 0xf0;
493 ; SOURCE LINE # 88
0019 E500 F 494 MOV A,ins?448
001B 54F0 495 ANL A,#0F0H
001D FF 496 MOV R7,A
001E 33 497 RLC A
001F 95E0 498 SUBB A,ACC
499 ;---- Variable 'command?451' assigned to Register 'R4/R5' ----
0021 AD07 500 MOV R5,AR7
501 ; command <<= 8;
502 ; SOURCE LINE # 89
0023 ED 503 MOV A,R5
0024 FC 504 MOV R4,A
505 ; command &= 0xff00;
506 ; SOURCE LINE # 90
507 ; command |= (ins & 0x0f) << 4;
508 ; SOURCE LINE # 91
0025 E500 F 509 MOV A,ins?448
0027 540F 510 ANL A,#0FH
0029 FF 511 MOV R7,A
002A 33 512 RLC A
002B 95E0 513 SUBB A,ACC
002D FE 514 MOV R6,A
002E EF 515 MOV A,R7
002F C4 516 SWAP A
0030 F8 517 MOV R0,A
0031 540F 518 ANL A,#0FH
0033 C8 519 XCH A,R0
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 9
0034 68 520 XRL A,R0
0035 FF 521 MOV R7,A
0036 EE 522 MOV A,R6
0037 C4 523 SWAP A
0038 54F0 524 ANL A,#0F0H
003A 48 525 ORL A,R0
003B FE 526 MOV R6,A
003C EF 527 MOV A,R7
003D FD 528 MOV R5,A
003E EE 529 MOV A,R6
003F 4204 530 ORL AR4,A
531 ;
532 ; lcd_send_word(command);
533 ; SOURCE LINE # 93
0041 AF05 534 MOV R7,AR5
0043 AE04 535 MOV R6,AR4
0045 020000 F 536 LJMP _lcd_send_word
537 ; END OF _lcd_write_instruction
538
539 ; }
540 ;
541 ; void lcd_write_data(char dat)
542
---- 543 RSEG ?PR?_lcd_write_data?LCD_DRIVER
0000 544 L?0053:
545 USING 0
0000 E4 546 CLR A
0001 FF 547 MOV R7,A
0002 120000 F 548 LCALL _lcd_write_data
0005 E4 549 CLR A
0006 FF 550 MOV R7,A
0007 551 _lcd_write_data:
552 USING 0
553 ; SOURCE LINE # 96
554 ;---- Variable 'dat?552' assigned to Register 'R3' ----
0007 AB07 555 MOV R3,AR7
556 ; {
557 ; SOURCE LINE # 97
558 ; char start_byte;
559 ; int command;
560 ;
561 ; start_byte = SYNC_CHARACTER | START_BYTE_RS;
562 ; SOURCE LINE # 101
563 ;---- Variable 'start_byte?553' assigned to Register 'R7' ----
0009 7FFA 564 MOV R7,#0FAH
565 ; lcd_send_byte(start_byte);
566 ; SOURCE LINE # 102
000B 120000 F 567 LCALL _lcd_send_byte
568 ;
569 ; command = dat & 0xf0;
570 ; SOURCE LINE # 104
000E EB 571 MOV A,R3
000F 54F0 572 ANL A,#0F0H
0011 FF 573 MOV R7,A
0012 33 574 RLC A
0013 95E0 575 SUBB A,ACC
576 ;---- Variable 'command?554' assigned to Register 'R4/R5' ----
0015 AD07 577 MOV R5,AR7
578 ; command <<= 8;
579 ; SOURCE LINE # 105
0017 ED 580 MOV A,R5
0018 FC 581 MOV R4,A
582 ; command &= 0xff00;
583 ; SOURCE LINE # 106
584 ; command |= (dat & 0x0f) << 4;
585 ; SOURCE LINE # 107
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 10
0019 EB 586 MOV A,R3
001A 540F 587 ANL A,#0FH
001C FF 588 MOV R7,A
001D 33 589 RLC A
001E 95E0 590 SUBB A,ACC
0020 FE 591 MOV R6,A
0021 EF 592 MOV A,R7
0022 C4 593 SWAP A
0023 F8 594 MOV R0,A
0024 540F 595 ANL A,#0FH
0026 C8 596 XCH A,R0
0027 68 597 XRL A,R0
0028 FF 598 MOV R7,A
0029 EE 599 MOV A,R6
002A C4 600 SWAP A
002B 54F0 601 ANL A,#0F0H
002D 48 602 ORL A,R0
002E FE 603 MOV R6,A
002F EF 604 MOV A,R7
0030 FD 605 MOV R5,A
0031 EE 606 MOV A,R6
0032 4204 607 ORL AR4,A
608 ;
609 ; lcd_send_word(command);
610 ; SOURCE LINE # 109
0034 AF05 611 MOV R7,AR5
0036 AE04 612 MOV R6,AR4
0038 020000 F 613 LJMP _lcd_send_word
614 ; END OF _lcd_write_data
615
616 ; }
617 ;
618 ; void lcd_init(void)
619
---- 620 RSEG ?PR?lcd_init?LCD_DRIVER
0000 621 lcd_init:
622 USING 0
623 ; SOURCE LINE # 112
624 ; {
625 ; SOURCE LINE # 113
626 ; SET_LCD_SCLK(0);
627 ; SOURCE LINE # 114
0000 C2A7 628 CLR P2_7
629 ; SET_LCD_CS(1);
630 ; SOURCE LINE # 115
0002 D2A5 631 SETB P2_5
632 ; SET_LCD_RESET(0);
633 ; SOURCE LINE # 116
0004 C280 634 CLR P0_0
635 ; Delay(200);
636 ; SOURCE LINE # 117
0006 7FC8 637 MOV R7,#0C8H
0008 7E00 638 MOV R6,#00H
000A 120000 F 639 LCALL _Delay
640 ; SET_LCD_RESET(1);
641 ; SOURCE LINE # 118
000D D280 642 SETB P0_0
643 ; Delay(200);
644 ; SOURCE LINE # 119
000F 7FC8 645 MOV R7,#0C8H
0011 7E00 646 MOV R6,#00H
0013 120000 F 647 LCALL _Delay
648 ;
649 ; lcd_write_instruction(0x38, 0);
650 ; SOURCE LINE # 121
0016 E4 651 CLR A
A51 MACRO ASSEMBLER LCD_DRIVER 05/23/2006 22:06:29 PAGE 11
0017 FD 652 MOV R5,A
0018 7F38 653 MOV R7,#038H
001A 120000 F 654 LCALL _lcd_write_instruction
655 ; Delay(200);
656 ; SOURCE LINE # 122
001D 7FC8 657 MOV R7,#0C8H
001F 7E00 658 MOV R6,#00H
0021 120000 F 659 LCALL _Delay
660 ; lcd_write_instruction(0x38, 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -