📄 lcd.ls1
字号:
008A 594 ?C0045:
008A 90F800 595 MOV DPTR,#0F800H
008D F0 596 MOVX @DPTR,A
597 ; }
598 ; SOURCE LINE # 200
599 ; }
600 ; SOURCE LINE # 201
008E 601 ?C0017:
008E 0F 602 INC R7
008F 80D2 603 SJMP ?C0015
604 ; }
605 ; SOURCE LINE # 202
0091 606 ?C0014:
0091 0E 607 INC R6
0092 80B0 608 SJMP ?C0012
609 ; }
610 ; SOURCE LINE # 203
0094 611 ?C0020:
0094 22 612 RET
613 ; END OF _lcd_display_graphic
614
615 ;
616 ;
617 ; /****************************************************************************************
**
618 ; *函数名: lcd_display_char
619 ; *参数: XStart 开始显示的X坐标像素值
620 ; YStart 开始显示的Y坐标像素值
621 ; bReverseDisplay 标识是否反显,1为反显,0为不反显
622 ; character 显示字符的ASCII码表值
623 ; *返回值: 无
624 ; *描述: 字符显示程序
625 ; *编写: 王绍伟
626 ; *版本信息: V1.0 2003年8月15日
627 ; *****************************************************************************************
*/
628 ; extern void lcd_display_char( /*为整个PAGE显示,不能任意位置*/
629
---- 630 RSEG ?PR?_lcd_display_char?LCD
0000 631 L?0048:
632 USING 0
0000 FF 633 MOV R7,A
0001 A3 634 INC DPTR
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 11
0002 E0 635 MOVX A,@DPTR
0003 FD 636 MOV R5,A
0004 A200 F 637 MOV C,bReverseDisplay?873
0006 9200 F 638 MOV ?_lcd_display_char?BIT,C
0008 900000 F 639 MOV DPTR,#Result?876
000B E0 640 MOVX A,@DPTR
000C 641 L?0049:
000C 900000 F 642 MOV DPTR,#g_Data2Char
000F 93 643 MOVC A,@A+DPTR
0010 644 L?0050:
0010 900000 F 645 MOV DPTR,#?_lcd_display_char?BYTE+02H
0013 F0 646 MOVX @DPTR,A
0014 647 _lcd_display_char:
648 USING 0
649 ; SOURCE LINE # 217
650 ;---- Variable 'YStart?656' assigned to Register 'R5' ----
651 ;---- Variable 'XStart?655' assigned to Register 'R1' ----
0014 A907 652 MOV R1,AR7
653 ; byte XStart,
654 ; byte YStart,
655 ; bool bReverseDisplay,
656 ; byte character)
657 ; {
658 ; SOURCE LINE # 222
659 ; byte PageCounter; /*页标志*/
660 ; byte ColumnCounter; /*X位置标志*/
661 ; byte PageStart; /*起始页码*/
662 ; byte PageEnd; /*终止页码*/
663 ; byte code *pChar; /*指向字符存放数据(按page划分存储)区的指针*/
664 ;
665 ; pChar = g_ASCII[character-0x20]; /*r根据ASCI码表,*/
666 ; SOURCE LINE # 229
0016 900000 F 667 MOV DPTR,#character?658
0019 E0 668 MOVX A,@DPTR
001A 75F010 669 MOV B,#010H
001D A4 670 MUL AB
001E 2400 F 671 ADD A,#LOW (g_ASCII+0FE00H)
0020 F582 672 MOV DPL,A
0022 E5F0 673 MOV A,B
0024 3400 F 674 ADDC A,#HIGH (g_ASCII+0FE00H)
675 ;---- Variable 'pChar?663' assigned to Register 'R2/R3' ----
0026 AB82 676 MOV R3,DPL
0028 FA 677 MOV R2,A
678 ; PageStart = YStart >> 3; /*r由于是整页显示,不能随意位置,所以指定除8*
/
679 ; SOURCE LINE # 230
0029 AF05 680 MOV R7,AR5
002B EF 681 MOV A,R7
002C 13 682 RRC A
002D 13 683 RRC A
002E 13 684 RRC A
002F 541F 685 ANL A,#01FH
0031 FF 686 MOV R7,A
687 ;---- Variable 'PageStart?661' assigned to Register 'R7' ----
688 ; PageEnd = PageStart + 2; /*r一个字符在纵向占两个page*/
689 ; SOURCE LINE # 231
0032 2402 690 ADD A,#02H
0034 900000 F 691 MOV DPTR,#PageEnd?662
0037 F0 692 MOVX @DPTR,A
693 ;
694 ; for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
695 ; SOURCE LINE # 233
696 ;---- Variable 'PageCounter?659' assigned to Register 'R6' ----
0038 AE07 697 MOV R6,AR7
003A 698 ?C0021:
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 12
003A 900000 F 699 MOV DPTR,#PageEnd?662
003D E0 700 MOVX A,@DPTR
003E FF 701 MOV R7,A
003F EE 702 MOV A,R6
0040 C3 703 CLR C
0041 9F 704 SUBB A,R7
0042 5040 705 JNC ?C0029
706 ; {
707 ; SOURCE LINE # 234
708 ; SetColumn(XStart);
709 ; SOURCE LINE # 235
0044 AF01 710 MOV R7,AR1
0046 120000 F 711 LCALL _SetColumn
712 ; SetPage(PageCounter);
713 ; SOURCE LINE # 236
0049 AF06 714 MOV R7,AR6
004B 120000 F 715 LCALL _SetPage
716 ;
717 ; RS = 1;
718 ; SOURCE LINE # 238
004E 90F802 719 MOV DPTR,#0F802H
0051 7401 720 MOV A,#01H
0053 F0 721 MOVX @DPTR,A
722 ; for(ColumnCounter = 0; ColumnCounter < 8; ColumnCounter++) /*r一个字符
在横向占8列*/
723 ; SOURCE LINE # 239
724 ;---- Variable 'ColumnCounter?660' assigned to Register 'R7' ----
0054 E4 725 CLR A
0055 FF 726 MOV R7,A
0056 727 ?C0024:
728 ; {
729 ; SOURCE LINE # 240
730 ; if(!bReverseDisplay)
731 ; SOURCE LINE # 241
0056 200010 F 732 JB bReverseDisplay?657,?C0027
733 ; {
734 ; SOURCE LINE # 242
735 ; WLCD = *pChar++;
736 ; SOURCE LINE # 243
0059 0B 737 INC R3
005A EB 738 MOV A,R3
005B AC02 739 MOV R4,AR2
005D 7001 740 JNZ ?C0043
005F 0A 741 INC R2
0060 742 ?C0043:
0060 14 743 DEC A
0061 F582 744 MOV DPL,A
0063 8C83 745 MOV DPH,R4
0065 E4 746 CLR A
0066 93 747 MOVC A,@A+DPTR
748 ; }
749 ; SOURCE LINE # 244
0067 800F 750 SJMP ?C0046
0069 751 ?C0027:
752 ; else
753 ; {
754 ; SOURCE LINE # 246
755 ; WLCD = ~(*pChar++);
756 ; SOURCE LINE # 247
0069 0B 757 INC R3
006A EB 758 MOV A,R3
006B AC02 759 MOV R4,AR2
006D 7001 760 JNZ ?C0044
006F 0A 761 INC R2
0070 762 ?C0044:
0070 14 763 DEC A
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 13
0071 F582 764 MOV DPL,A
0073 8C83 765 MOV DPH,R4
0075 E4 766 CLR A
0076 93 767 MOVC A,@A+DPTR
0077 F4 768 CPL A
0078 769 ?C0046:
0078 90F800 770 MOV DPTR,#0F800H
007B F0 771 MOVX @DPTR,A
772 ; }
773 ; SOURCE LINE # 248
774 ; }
775 ; SOURCE LINE # 249
007C 776 ?C0026:
007C 0F 777 INC R7
007D EF 778 MOV A,R7
007E B408D5 779 CJNE A,#08H,?C0024
780 ; }
781 ; SOURCE LINE # 250
0081 782 ?C0023:
0081 0E 783 INC R6
0082 80B6 784 SJMP ?C0021
785 ; }
786 ; SOURCE LINE # 251
0084 787 ?C0029:
0084 22 788 RET
789 ; END OF _lcd_display_char
790
791 ;
792 ;
793 ; /****************************************************************************************
**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -