📄 lcd2401.lst
字号:
0142 228 MEU:
0142 90014A 229 MOV DPTR,#MENU0 ;存入工作菜单
0145 7401 230 MOV A,#1 ;第一行
0147 319F 231 CALL LCD_PRINT
0149 22 232 RET
233 ;――――――――――――――――
234 ; 工作菜单
014A 20534543 235 MENU0: DB " SECOND-CLOCK 0 ",0
014E 4F4E442D
0152 434C4F43
0156 4B203020
015A 00
015B 20424547 236 MENU1: DB " BEGIN COUNT 1 ",0
015F 494E2043
0163 4F554E54
0167 20203120
016B 00
016C 20504155 237 MENU2: DB " PAUST COUNT 2 ",0
0170 53542043
0174 4F554E54
0178 20203220
017C 00
017D 20424547 238 MENU3: DB " BEGIN COUNT 3 ",0
0181 494E2043
0185 4F554E54
A51 MACRO ASSEMBLER LCD2401 01/05/2007 14:53:27 PAGE 5
0189 20203320
018D 00
018E 20504155 239 MENU4: DB " PAUST COUNT 4 ",0
0192 53542043
0196 4F554E54
019A 20203420
019E 00
240 ;――――――――――――――――
241 ;―――――――――――――――――――――
242 ;菜单显示子程序
243 ;一行、二行显示字符
019F 244 LCD_PRINT:
019F B40108 245 CJNE A,#1,LINE2 ;判断是否为第一行
01A2 246 LINE1:
01A2 3139 247 ACALL CLR_LINE ;清除该行字符数据
01A4 7480 248 MOV A, #80H ;设置 LCD 的第一行地址
01A6 311D 249 ACALL WR_COMM ;写入命令
01A8 8006 250 JMP FILL
01AA 251 LINE2:
01AA 3139 252 ACALL CLR_LINE ;清除该行字符数据
01AC 74C0 253 MOV A,#0C0H ;设置 LCD 的第二行地址
01AE 311D 254 ACALL WR_COMM
01B0 E4 255 FILL: CLR A ;填入字符
01B1 93 256 MOVC A,@A+DPTR ;由消息区取出字符
01B2 B40001 257 CJNE A,#0,LC1 ;判断是否为结束码
01B5 22 258 RET
259 ;――――――――――――――
260 ;写入数据
01B6 312A 261 LC1: ACALL WR_DATA
01B8 A3 262 INC DPTR ;指针加1
01B9 80F5 263 JMP FILL ;继续填入字符
01BB 22 264 RET
265
266 ;―――――――――――――――――――――
267 ;转换数据子程
01BC 268 CONV: ;转换为 ASCII 码并显示
01BC E530 269 MOV A,HOUR ;加载小时数据
01BE 753605 270 MOV X,#5 ;设置位置
01C1 31F1 271 ACALL SKOW_LINE2 ;显示数据
01C3 0536 272 INC X ;
01C5 743A 273 MOV A,#':' ;
01C7 8536F0 274 MOV B,X ;
01CA 510C 275 ACALL LCDP2 ;
01CC E531 276 MOV A,MIN ;加载分钟数据
01CE 0536 277 INC X ;设置位置
01D0 31F1 278 ACALL SKOW_LINE2 ;显示数据
01D2 0536 279 INC X ;
01D4 743A 280 MOV A,#':' ;
01D6 8536F0 281 MOV B,X ;
01D9 510C 282 ACALL LCDP2 ;
01DB E532 283 MOV A,SEC ;加载秒数数据
01DD 0536 284 INC X ;设置位置
01DF 31F1 285 ACALL SKOW_LINE2 ;显示数据
01E1 0536 286 INC X ;
01E3 743A 287 MOV A,#':' ;
01E5 8536F0 288 MOV B,X ;
01E8 510C 289 CALL LCDP2 ;
01EA E533 290 MOV A,DEDA ;加载秒数数据
01EC 0536 291 INC X ;设置位置
01EE 31F1 292 ACALL SKOW_LINE2 ;显示数据
01F0 22 293 RET ;
294
295 ;―――――――――――――――――――――
296 ;在 LCD 的第二行显示数字
01F1 297 SKOW_LINE2:
01F1 75F00A 298 MOV B,#10 ;设置被除数
A51 MACRO ASSEMBLER LCD2401 01/05/2007 14:53:27 PAGE 6
01F4 84 299 DIV AB ;结果A存商数,B存余数
01F5 2430 300 ADD A,#30H ;A为十位数,转换为字符
01F7 C0F0 301 PUSH B ;B放入堆栈暂存
01F9 8536F0 302 MOV B,X ;设置 LCD 显示的位置
01FC 510C 303 ACALL LCDP2 ;由 LCD 显示出来
01FE D0F0 304 POP B ;出栈
0200 E5F0 305 MOV A,B ;B为个位数
0202 2430 306 ADD A,#30H ;转换为字符
0204 0536 307 INC X ;LCD 显示位置加1
0206 8536F0 308 MOV B,X ;设置 LCD 显示的位置
0209 510C 309 ACALL LCDP2 ;由 LCD 显示出来
020B 22 310 RET
311 ;―――――――――――――――
312 ;在LCD的第二行显示字符
020C 313 LCDP2:
020C C0E0 314 PUSH ACC ;
020E E5F0 315 MOV A,B ;设置显示地址
0210 24C0 316 ADD A,#0C0H ;设置LCD的第二行地址
0212 311D 317 CALL WR_COMM ;写入命令
0214 D0E0 318 POP ACC ;由堆栈取出A
0216 312A 319 CALL WR_DATA ;写入数据
0218 22 320 RET
321
322 ;―――――――――――――――――――――
323 ;喇叭鸣响子程序
0219 324 SPK_BZ:
0219 7E64 325 MOV R6,#100
021B 5126 326 B1:ACALL DEX
021D B2A4 327 CPL SPK
021F DEFA 328 DJNZ R6,B1
0221 7D0A 329 MOV R5,#10
0223 512C 330 ACALL DELAY
0225 22 331 RET
0226 7FB4 332 DEX:MOV R7,#180
0228 00 333 DE1:NOP
0229 DFFD 334 DJNZ R7,DE1
022B 22 335 RET
336
337 ;―――――――――――――――――――――
338 ;延时10MS
022C 339 DELAY:
022C 7E32 340 MOV R6,#50
022E 7F64 341 D1:MOV R7,#100
0230 DFFE 342 DJNZ R7,$
0232 DEFA 343 DJNZ R6,D1
0234 DDF6 344 DJNZ R5,DELAY
0236 22 345 RET
346 ;―――――――――――――――
347 ;延时5MS子程序
0237 348 DELAY1:
0237 7E19 349 MOV R6,#25
0239 7F64 350 DEY: MOV R7,#100
023B DFFE 351 DJNZ R7,$
023D DEFA 352 DJNZ R6,DEY
023F 22 353 RET
354 ;―――――――――――――――
355 ;延时500微秒
0240 356 DE:
0240 DFFE 357 DJNZ R7,$
0242 22 358 RET
359 ;――――――――――――――――――――
360 END ;程序结束
A51 MACRO ASSEMBLER LCD2401 01/05/2007 14:53:27 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
B1 . . . . . . . . C ADDR 021BH A
CL1. . . . . . . . C ADDR 013BH A
CLR_LINE . . . . . C ADDR 0139H A
CONV . . . . . . . C ADDR 01BCH A
D1 . . . . . . . . C ADDR 022EH A
DE . . . . . . . . C ADDR 0240H A
DE1. . . . . . . . C ADDR 0228H A
DEDA . . . . . . . N NUMB 0033H A
DELAY. . . . . . . C ADDR 022CH A
DELAY1 . . . . . . C ADDR 0237H A
DEX. . . . . . . . C ADDR 0226H A
DEY. . . . . . . . C ADDR 0239H A
E. . . . . . . . . B ADDR 00B0H.7 A
FILL . . . . . . . C ADDR 01B0H A
HOUR . . . . . . . N NUMB 0030H A
IE . . . . . . . . D ADDR 00A8H A
INIT . . . . . . . C ADDR 002CH A
INIT_LCD . . . . . C ADDR 010AH A
INIT_TIMER . . . . C ADDR 003EH A
K1 . . . . . . . . B ADDR 00B0H.3 A
K1_C . . . . . . . N NUMB 0037H A
K1_N . . . . . . . N NUMB 0034H A
K1_P . . . . . . . N NUMB 0035H A
K2 . . . . . . . . B ADDR 00B0H.4 A
KEY. . . . . . . . C ADDR 008FH A
KEY0 . . . . . . . C ADDR 009CH A
KEY1 . . . . . . . C ADDR 00B2H A
KEY2 . . . . . . . C ADDR 00C1H A
KEY3 . . . . . . . C ADDR 00D0H A
KEY4 . . . . . . . C ADDR 00DEH A
LC1. . . . . . . . C ADDR 01B6H A
LCDP2. . . . . . . C ADDR 020CH A
LCD_PRINT. . . . . C ADDR 019FH A
LINE1. . . . . . . C ADDR 01A2H A
LINE2. . . . . . . C ADDR 01AAH A
LMESS1 . . . . . . C ADDR 00F6H A
LMESS2 . . . . . . C ADDR 0100H A
LOOP . . . . . . . C ADDR 001DH A
LOOP1. . . . . . . C ADDR 0087H A
LOOP2. . . . . . . C ADDR 008EH A
MAIN . . . . . . . C ADDR 000DH A
MENU0. . . . . . . C ADDR 014AH A
MENU1. . . . . . . C ADDR 015BH A
MENU2. . . . . . . C ADDR 016CH A
MENU3. . . . . . . C ADDR 017DH A
MENU4. . . . . . . C ADDR 018EH A
MEU. . . . . . . . C ADDR 0142H A
MIN. . . . . . . . N NUMB 0031H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
RS . . . . . . . . B ADDR 00B0H.5 A
RW . . . . . . . . B ADDR 00B0H.6 A
SEC. . . . . . . . N NUMB 0032H A
SET_LCD. . . . . . C ADDR 00DFH A
SKOW_LINE2 . . . . C ADDR 01F1H A
SP . . . . . . . . D ADDR 0081H A
SPK. . . . . . . . B ADDR 00A0H.4 A
A51 MACRO ASSEMBLER LCD2401 01/05/2007 14:53:27 PAGE 8
SPK_BZ . . . . . . C ADDR 0219H A
T0_INT . . . . . . C ADDR 004BH A
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TT . . . . . . . . C ADDR 0084H A
WR_COMM. . . . . . C ADDR 011DH A
WR_DATA. . . . . . C ADDR 012AH A
X. . . . . . . . . N NUMB 0036H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -