📄 lcd.ls1
字号:
794 ; *函数名: lcd_display_text
795 ; *参数: XStart 字符串开始X坐标像素值
796 ; YStart 字符串开始Y坐标像素值,实际得按照pag
e显示
797 ; bReverseDisplay 标识是否反显
798 ; pText 指向字符串ASCII码存放首址的指针
799 ; *返回值: 无
800 ; *描述: 显示小于8个字符的字符串文本
801 ; *编写: 王绍伟
802 ; *版本信息: V1.0 2003年8月15日
803 ; *****************************************************************************************
*/
804 ; extern void lcd_display_text( byte XStart,
805
---- 806 RSEG ?PR?_lcd_display_text?LCD
0000 807 _lcd_display_text:
808 USING 0
809 ; SOURCE LINE # 265
0000 900000 F 810 MOV DPTR,#XStart?764
0003 EF 811 MOV A,R7
0004 F0 812 MOVX @DPTR,A
0005 A3 813 INC DPTR
0006 ED 814 MOV A,R5
0007 F0 815 MOVX @DPTR,A
816 ; byte YStart,
817 ; bool bReverseDisplay,
818 ; byte* pText)
819 ; {
820 ; SOURCE LINE # 269
821 ; byte i;
822 ; byte len;
823 ; len = strlen(pText);
824 ; SOURCE LINE # 272
0008 A3 825 INC DPTR
0009 E0 826 MOVX A,@DPTR
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 14
000A FB 827 MOV R3,A
000B A3 828 INC DPTR
000C E0 829 MOVX A,@DPTR
000D FA 830 MOV R2,A
000E A3 831 INC DPTR
000F E0 832 MOVX A,@DPTR
0010 F9 833 MOV R1,A
0011 120000 F 834 LCALL _strlen
0014 900000 F 835 MOV DPTR,#len?769
0017 EF 836 MOV A,R7
0018 F0 837 MOVX @DPTR,A
838 ; if(len > 8)
839 ; SOURCE LINE # 273
0019 D3 840 SETB C
001A 9408 841 SUBB A,#08H
001C 4003 842 JC ?C0030
843 ; {
844 ; SOURCE LINE # 274
845 ; len = 8;
846 ; SOURCE LINE # 275
001E 7408 847 MOV A,#08H
0020 F0 848 MOVX @DPTR,A
849 ; }
850 ; SOURCE LINE # 276
0021 851 ?C0030:
852 ; for(i = 0; i < len; i++)
853 ; SOURCE LINE # 277
0021 E4 854 CLR A
0022 900000 F 855 MOV DPTR,#i?768
0025 F0 856 MOVX @DPTR,A
0026 857 ?C0031:
0026 900000 F 858 MOV DPTR,#len?769
0029 E0 859 MOVX A,@DPTR
002A FF 860 MOV R7,A
002B 900000 F 861 MOV DPTR,#i?768
002E E0 862 MOVX A,@DPTR
002F FE 863 MOV R6,A
0030 C3 864 CLR C
0031 9F 865 SUBB A,R7
0032 502F 866 JNC ?C0034
867 ; {
868 ; SOURCE LINE # 278
869 ; lcd_display_char(XStart + i * 8, YStart, bReverseDisplay, *pText++);
870 ; SOURCE LINE # 279
0034 EE 871 MOV A,R6
0035 75F008 872 MOV B,#08H
0038 A4 873 MUL AB
0039 FF 874 MOV R7,A
003A 900000 F 875 MOV DPTR,#XStart?764
003D E0 876 MOVX A,@DPTR
003E 2F 877 ADD A,R7
003F FF 878 MOV R7,A
0040 A3 879 INC DPTR
0041 E0 880 MOVX A,@DPTR
0042 FD 881 MOV R5,A
0043 A200 F 882 MOV C,bReverseDisplay?766
0045 9200 F 883 MOV ?_lcd_display_char?BIT,C
0047 A3 884 INC DPTR
0048 E0 885 MOVX A,@DPTR
0049 FB 886 MOV R3,A
004A A3 887 INC DPTR
004B E4 888 CLR A
004C 75F001 889 MOV B,#01H
004F 120000 F 890 LCALL ?C?ILDIX
0052 A9F0 891 MOV R1,B
0054 FA 892 MOV R2,A
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 15
0055 120000 F 893 LCALL ?C?CLDPTR
0058 120000 F 894 LCALL L?0050
895 ; }
896 ; SOURCE LINE # 280
005B 900000 F 897 MOV DPTR,#i?768
005E E0 898 MOVX A,@DPTR
005F 04 899 INC A
0060 F0 900 MOVX @DPTR,A
0061 80C3 901 SJMP ?C0031
902 ; }
903 ; SOURCE LINE # 281
0063 904 ?C0034:
0063 22 905 RET
906 ; END OF _lcd_display_text
907
908 ;
909 ;
910 ; /****************************************************************************************
**
911 ; *函数名: lcd_display_byte
912 ; *参数: XStart
913 ; YStart
914 ; bHex 标识是否为十六进制数据
915 ; bReverseDisplay 标识是否反显
916 ; value
917 ; *返回值: 无
918 ; *描述: 在LCD液晶屏上显示一个字节的内容,若此字节中数标识用
919 ; 十六进制显示,则其中字节的高四位为
一个字符的ASCII码
920 ; 值,低四位又是另外一个字符的ASCII码字
921 ; *编写:王绍伟
922 ; *版本信息:V1.0 2003年8月15日
923 ; *****************************************************************************************
*/
924 ; extern void lcd_display_byte(byte XStart,
925
---- 926 RSEG ?PR?_lcd_display_byte?LCD
0000 927 _lcd_display_byte:
928 USING 0
929 ; SOURCE LINE # 298
0000 900000 F 930 MOV DPTR,#XStart?870
0003 EF 931 MOV A,R7
0004 F0 932 MOVX @DPTR,A
0005 A3 933 INC DPTR
0006 ED 934 MOV A,R5
0007 F0 935 MOVX @DPTR,A
936 ; byte YStart,
937 ; bool bHex,
938 ; bool bReverseDisplay,
939 ; byte value)
940 ; {
941 ; SOURCE LINE # 303
942 ; byte Shift; /*暂存余数*/
943 ; byte Result; /*暂存除得结果值*/
944 ;
945 ; if(bHex)
946 ; SOURCE LINE # 307
0008 300029 F 947 JNB bHex?872,?C0035
948 ; {
949 ; SOURCE LINE # 308
950 ; lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[value&0x0
F]);
951 ; SOURCE LINE # 309
000B 900000 F 952 MOV DPTR,#XStart?870
000E E0 953 MOVX A,@DPTR
000F 2408 954 ADD A,#08H
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 16
0011 FF 955 MOV R7,A
0012 A3 956 INC DPTR
0013 E0 957 MOVX A,@DPTR
0014 FD 958 MOV R5,A
0015 A200 F 959 MOV C,bReverseDisplay?873
0017 9200 F 960 MOV ?_lcd_display_char?BIT,C
0019 A3 961 INC DPTR
001A E0 962 MOVX A,@DPTR
001B 540F 963 ANL A,#0FH
001D 120000 F 964 LCALL L?0049
965 ; lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[value>>4]);
966 ; SOURCE LINE # 310
0020 900000 F 967 MOV DPTR,#XStart?870
0023 E0 968 MOVX A,@DPTR
0024 FF 969 MOV R7,A
0025 A3 970 INC DPTR
0026 E0 971 MOVX A,@DPTR
0027 FD 972 MOV R5,A
0028 A200 F 973 MOV C,bReverseDisplay?873
002A 9200 F 974 MOV ?_lcd_display_char?BIT,C
002C A3 975 INC DPTR
002D E0 976 MOVX A,@DPTR
002E FE 977 MOV R6,A
002F C4 978 SWAP A
0030 540F 979 ANL A,#0FH
980 ; }
981 ; SOURCE LINE # 311
0032 8052 982 SJMP ?C0047
0034 983 ?C0035:
984 ; else
985 ; {
986 ; SOURCE LINE # 313
987 ; Shift = value % 100;
988 ; SOURCE LINE # 314
0034 900000 F 989 MOV DPTR,#value?874
0037 E0 990 MOVX A,@DPTR
0038 FF 991 MOV R7,A
0039 75F064 992 MOV B,#064H
003C 84
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -