📄 lcd.lst
字号:
0098 1200EB 131 LCALL DELAY_MS
009B 22 132 RET
133
134 ;设置LCD当前光标的位置
135
009C 136 SET_LCD_POS:
009C 4480 137 ORL A,#80H ;
009E 1200A2 138 LCALL LCD_WRITE_COMMAND
00A1 22 139 RET
140
141 ; 写入控制指令到LCD
142 ; 传入参数: ACC(要写入的命令)
143 ; 返回值: 无
00A2 144 LCD_WRITE_COMMAND:
00A2 1200D6 145 LCALL CHECK_LCD_BUSY
00A5 C2A6 146 CLR RS
00A7 C2A5 147 CLR RW
00A9 C2A7 148 CLR EP
00AB 00 149 NOP
00AC 00 150 NOP
00AD F580 151 MOV P0,A ; 写入数据到LCD端口
00AF 00 152 NOP
00B0 00 153 NOP
00B1 00 154 NOP
00B2 00 155 NOP
00B3 D2A7 156 SETB EP
00B5 00 157 NOP
00B6 00 158 NOP
00B7 00 159 NOP
00B8 00 160 NOP
00B9 C2A7 161 CLR EP
00BB 22 162 RET
163
164 ; 写入显示数据到LCD
165 ; 传入参数: ACC(要写入的数据)
166 ; 返回值: 无
00BC 167 LCD_WRITE_DATA:
00BC 1200D6 168 LCALL CHECK_LCD_BUSY
00BF D2A6 169 SETB RS
00C1 C2A5 170 CLR RW
00C3 C2A7 171 CLR EP
00C5 00 172 NOP
00C6 00 173 NOP
00C7 F580 174 MOV P0,A ; 写入数据到LCD端口
00C9 00 175 NOP
00CA 00 176 NOP
00CB 00 177 NOP
00CC 00 178 NOP
00CD D2A7 179 SETB EP
00CF 00 180 NOP
00D0 00 181 NOP
00D1 00 182 NOP
00D2 00 183 NOP
00D3 C2A7 184 CLR EP
00D5 22 185 RET
186
00D6 187 CHECK_LCD_BUSY:
00D6 C2A6 188 CLR RS
00D8 D2A5 189 SETB RW
00DA D2A7 190 SETB EP
A51 MACRO ASSEMBLER LCD 03/24/2009 19:21:11 PAGE 4
00DC 00 191 NOP
00DD 00 192 NOP
00DE 00 193 NOP
00DF 00 194 NOP
00E0 A287 195 MOV C,P0.7 ; 读取忙碌位
00E2 00 196 NOP
00E3 00 197 NOP
00E4 C2A7 198 CLR EP
00E6 00 199 NOP
00E7 00 200 NOP
00E8 40EC 201 JC CHECK_LCD_BUSY ; 等待LCD空闲(P0.7=0)
202
00EA 22 203 RET
204
205 ; 延时子程序
206 ; 传入参数: ACC(延时时间,单位毫秒)
207 ; 返回值: 无
00EB 208 DELAY_MS:
00EB FF 209 MOV R7,A
00EC 210 DELAY_LOOP1:
00EC 7EE8 211 MOV R6,#0E8H
00EE 212 DELAY_LOOP2:
00EE 00 213 NOP
00EF 00 214 NOP
00F0 DEFC 215 DJNZ R6,DELAY_LOOP2
00F2 DFF8 216 DJNZ R7,DELAY_LOOP1
00F4 22 217 RET
218
219
00F5 220 TAB_WILLAR:
00F5 7777772E 221 DB "www.PRECHIN.com"
00F9 50524543
00FD 48494E2E
0101 636F6D
0104 00 222 DB 00 ; 字符结束标志
223
0105 224 TAB_WELCOME:
0105 57656C63 225 DB "Welcome!"
0109 6F6D6521
010D 00 226 DB 00 ; 字符结束标志
227
228 END
A51 MACRO ASSEMBLER LCD 03/24/2009 19:21:11 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
CHECK_LCD_BUSY . . C ADDR 00D6H A
DELAY_LOOP1. . . . C ADDR 00ECH A
DELAY_LOOP2. . . . C ADDR 00EEH A
DELAY_MS . . . . . C ADDR 00EBH A
DISPLAY_STRING . . C ADDR 0050H A
END_DISPLAY_STRING C ADDR 005FH A
EP . . . . . . . . B ADDR 00A0H.7 A
LCD_CLEAR. . . . . C ADDR 0091H A
LCD_INIT . . . . . C ADDR 0060H A
LCD_TURN_OFF . . . C ADDR 0086H A
LCD_TURN_ON. . . . C ADDR 007BH A
LCD_WRITE_COMMAND. C ADDR 00A2H A
LCD_WRITE_DATA . . C ADDR 00BCH A
MAIN . . . . . . . C ADDR 0003H A
MAIN_LOOP. . . . . C ADDR 000BH A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
RS . . . . . . . . B ADDR 00A0H.6 A
RW . . . . . . . . B ADDR 00A0H.5 A
SET_LCD_POS. . . . C ADDR 009CH A
TAB_WELCOME. . . . C ADDR 0105H A
TAB_WILLAR . . . . C ADDR 00F5H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -