📄 subprogram.lst
字号:
A51 MACRO ASSEMBLER SUBPROGRAM 02/06/2005 11:28:44 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN Subprogram.OBJ
ASSEMBLER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\A51.EXE Subprogram.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;SUBPROGRAM FOR LCD DISPLAY
2 ;ASM FILE FOR LCD DISPLAY
3
4 ;;;;.asm
5 ; 直接访问方式地址定义,根据用户平台接口修改
6
D000 7 CWADD1 EQU 0D000H ; 写指令代码地址
D001 8 DWADD1 EQU 0D001H ; 写参数及显示数据地址
D001 9 DRADD1 EQU 0D001H ; 读参数及显示数据地址
10 ; 间接控制方式信号定义,根据用户平台接口修改
11 ;//RS EQU P3.0 ; RS
12 ;//RD EQU P3.1 ; /RD
13 ;//WR EQU P3.2 ; /WR
14 ;//DATBUS EQU P1 ; 数据总线
15 ; 程序参数定义,根据用户选择的LCM型号修改
00A0 16 PARA1 EQU 0A0H ; 显示区域宽度
17 ; 程序变量定义,根据用户平台提供的内部资源修改
0050 18 COM EQU 50H ; 指令寄存器
0051 19 DAT1 EQU 51H ; 参数及显示数据寄存器
0052 20 COUNT1 EQU 52H ; 计数器1
0053 21 COUNT2 EQU 53H ; 计数器2
0054 22 O_XL EQU 54H ; X坐标低8位寄存器(字节)
23 ; X坐标低8位寄存器(点列)
0055 24 O_XH EQU 55H ; X坐标高8位寄存器(点列)
25 ; D7位为绘点(D7=1)和消点(D7=0)标志位
0056 26 O_YL EQU 56H ; Y坐标寄存器低8位(点行)
0057 27 O_YH EQU 57H ; Y坐标寄存器高8位(点行)
0058 28 CODEE EQU 58H ; 字符代码
29
0059 30 GRAYB EQU 59H
31 ; 00H-暗;01H-淡;
32 ; 10H-深;11H-亮
005A 33 GRAYH EQU 5AH ; 灰度数据寄存器高字节
005B 34 GRAYL EQU 5BH ; 灰度数据寄存器低?
35 EXTRN XDATA (CCTAB,CCTAB24,CHTAB816,CHTAB1616)
36 PUBLIC GRAYB
37
38 PUBLIC CLEAR,_ONEBYTE_PR,_CLCW_PR,_CL_DOT
39 PUBLIC _W_DOT,_CH1616_PR,_CC24PR,_C816_PR,_C1632_PR,_CLCW_PRR,_C1616_PR
40 mypro segment code
---- 41 rseg mypro ; 允许编译器重新定位
42
43
44
45
46
47
48
49
50
51
52
53
54
55 ; 汉字(24x24点阵)演示程序 callby
56 ;DISCH24:MOV GRAYB,#4CH ;灰度值设置: 正向显示
57 ; MOV O_XL,#0CH
58 ; MOV O_YL,#20H
A51 MACRO ASSEMBLER SUBPROGRAM 02/06/2005 11:28:44 PAGE 2
59 ; MOV O_YH,#00H
60 ; MOV CODEE,#00H
61 ; LCALL _CC24PR
62 ;;; MOV GRAYB,#0C4H ;灰度值设置: 负向显示
63 ; MOV O_XL,#15H
64 ; MOV O_YL,#38H
65 ; MOV O_YH,#01H
66 ; MOV CODEE,#01H
67 ; LCALL _CC24PR
68 ; SJMP $
69 ; 绘图演示程序段 callby
70 ;DRAW: MOV GRAYB,#0C0H ;有灰度的显示将把所有显示都分成相应的灰度等级
71 ; MOV R2,#00H
72 ; MOV R3,#00H
73 ; MOV R4,#00H
74 ; MOV R5,#00H
75 ; LOOP1: MOV O_XL,R2
76 ; MOV O_XH,R3
77 ; MOV O_YL,R4
78 ; MOV O_YH,R5
79 ; LCALL _W_DOT
80 ; MOV A,R2
81 ; MOV R2,A
82 ; MOV A,R3
83 ; ADDC A,#00H
84 ; MOV R3,A
85 ; MOV A,R4
86 ; ADD A,#01H
87 ; MOV R4,A
88 ; MOV A,R5
89 ; ADDC A,#00H
90 ; MOV R5,A
91 ; CJNE A,#01H,LOOP1
92 ; SJMP $
93 ;----------------------------------callby----------------
94 ;WIPE: MOV GRAYB,#00H
95 ; MOV R2,#00H
96 ; MOV R3,#80H
97 ; MOV R4,#00H
98 ; MOV R5,#00H
99 ; LOOP2: MOV O_XL,R2
100 ; MOV O_XH,R3
101 ; MOV O_YL,R4
102 ; MOV O_YH,R5
103 ; LCALL _W_DOT
104 ; MOV A,R2
105 ; ADD A,#01H
106 ; MOV R2,A
107 ; MOV A,R3
108 ; ADDC A,#00H
109 ; MOV R3,A
110 ; MOV A,R4
111 ; ADD A,#01H
112 ; MOV R4,A
113 ; MOV A,R5
114 ; ADDC A,#00H
115 ; MOV R5,A
116 ; CJNE A,#01H,LOOP2
117 ; SJMP $
118 ;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
119 ; 直接访问方式的驱动子程序
120 ; 程序口地址设置CWADD1,DWADD1,DRADD1
121 ; 占用内部资源DAT1,A,COM
122 ; 程序输入变量: DAT1,,COM
123 ;===============直接访问方式驱动子程序==================
124 ; 写指令子程序 ////childprogram(7)
A51 MACRO ASSEMBLER SUBPROGRAM 02/06/2005 11:28:44 PAGE 3
0000 C082 125 PR1: PUSH DPL
0002 C083 126 PUSH DPH
0004 90D000 127 MOV DPTR,#CWADD1
0007 E550 128 MOV A,COM
0009 F0 129 MOVX @DPTR,A
000A D083 130 POP DPH
000C D082 131 POP DPL
000E 22 132 RET
133 ; 写数据子程序 childprogram(8)
000F C082 134 PR2: PUSH DPL
0011 C083 135 PUSH DPH
0013 90D001 136 MOV DPTR,#DWADD1
0016 E551 137 MOV A,DAT1
0018 F0 138 MOVX @DPTR,A
0019 D083 139 POP DPH
001B D082 140 POP DPL
001D 22 141 RET
142 ; 读数据子程序 childprogram(9)
001E C082 143 PR3: PUSH DPL
0020 C083 144 PUSH DPH
0022 90D001 145 MOV DPTR,#DRADD1
0025 E0 146 MOVX A,@DPTR
0026 F551 147 MOV DAT1,A
0028 D083 148 POP DPH
002A D082 149 POP DPL
002C 22 150 RET
151 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
152
153
154
155
156 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
157 ; 灰度生成子程序(字节)GRAYt m childprogram//(6)//
158 ; 占用内部资源:GRAYB,GRAYH,GRAYL,COUNT2,A
159 ; 内部调用子程序:PR2
160 ; 程序调用入口: GRAY
161 ; 程序输入变量:GRAYB
162 ; 灰度生成子程序(字节)如下:
163
002D 164 _GRAY: ; MOV GRAYB,R7 ;用两个字节来描述一个字节的内容这一个字节的数据,1代表前景数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -