📄 wl010.lst
字号:
248
00FD 32 249 RETI
250
251 ;===============================================================================
252 USING 0
00FE 253 TIMER1:
254 ; 定时器1中断服务程序, 产生时基信号10ms
255 ;
256 ;
A51 MACRO ASSEMBLER WL010 02/10/2004 20:14:08 PAGE 5
00FE C0D0 257 PUSH PSW
0100 C0E0 258 PUSH ACC
0102 C0F0 259 PUSH B
0104 C083 260 PUSH DPH
0106 C082 261 PUSH DPL
262
0108 758DDC 263 MOV TH1,#0DCH
264
010B 0500 F 265 INC SEC100
266
010D E500 F 267 MOV A,SEC100
010F C3 268 CLR C
0110 9464 269 SUBB A,#100 ; 是否中断100次(达到1s)
0112 4006 270 JC END_TIMER1 ; < 1S
271
0114 750000 F 272 MOV SEC100,#00H ; 达到1s
0117 120000 F 273 LCALL INC_SEC ; 秒加1
274
011A 275 END_TIMER1:
011A D082 276 POP DPL
011C D083 277 POP DPH
011E D0F0 278 POP B
0120 D0E0 279 POP ACC
0122 D0D0 280 POP PSW
281
0124 32 282 RETI ;
283
284 ;===============================================================================
0125 285 INC_SEC:
0125 0500 F 286 INC SEC
287
0127 E500 F 288 MOV A,SEC
0129 D3 289 SETB C
012A 943B 290 SUBB A,#59 ;
012C 4006 291 JC UPDATE_SEC
292
012E E4 293 CLR A
012F F500 F 294 MOV SEC,A
0131 120000 F 295 LCALL INC_MIN
296
0134 297 UPDATE_SEC:
0134 E500 F 298 MOV A,SEC
0136 75F00A 299 MOV B,#10
0139 84 300 DIV AB ; A = SEC / 10
013A 900000 F 301 MOV DPTR,#DIS_CODE
013D 93 302 MOVC A,@A+DPTR ;
013E F500 F 303 MOV BUF_SEC_H,A ;
304
0140 E500 F 305 MOV A,SEC
0142 75F00A 306 MOV B,#10
0145 84 307 DIV AB
0146 E5F0 308 MOV A,B ; A = SEC % 10
0148 93 309 MOVC A,@A+DPTR
0149 F500 F 310 MOV BUF_SEC_L,A
014B 22 311 RET
312
313 ;===============================================================================
314
014C 315 INC_MIN:
014C 0500 F 316 INC MIN ; 分钟加1
317
014E E500 F 318 MOV A,MIN ;
0150 D3 319 SETB C
0151 943B 320 SUBB A,#59
0153 4006 321 JC UPDATE_MIN ; 如果分钟等于60,则分清0,小时加1
322
A51 MACRO ASSEMBLER WL010 02/10/2004 20:14:08 PAGE 6
0155 E4 323 CLR A ;
0156 F500 F 324 MOV MIN,A
0158 120000 F 325 LCALL INC_HOUR ; 小时加1
326
015B 327 UPDATE_MIN: ; 更新分显示缓冲区
015B E500 F 328 MOV A,MIN
015D 75F00A 329 MOV B,#10
0160 84 330 DIV AB ; A = MIN / 10
0161 900000 F 331 MOV DPTR,#DIS_CODE
0164 93 332 MOVC A,@A+DPTR
0165 F500 F 333 MOV BUF_MIN_H,A ; 更新分十位
334
0167 E500 F 335 MOV A,MIN
0169 75F00A 336 MOV B,#10
016C 84 337 DIV AB
016D E5F0 338 MOV A,B ; A = MIN % 10
016F 93 339 MOVC A,@A+DPTR
0170 F500 F 340 MOV BUF_MIN_L,A ; 更新分个位
341
0172 22 342 RET
343
344 ;===============================================================================
345
0173 346 INC_HOUR:
0173 0500 F 347 INC HOUR ; 小时加1
0175 E500 F 348 MOV A,HOUR
0177 D3 349 SETB C
0178 9418 350 SUBB A,#24
017A 4003 351 JC UPDATE_HOUR ; 如果小时等于24,则小时清0
352
017C E4 353 CLR A
017D F500 F 354 MOV HOUR,A ; 小时清0
355
017F 356 UPDATE_HOUR:
017F E500 F 357 MOV A,HOUR
0181 D3 358 SETB C
0182 940A 359 SUBB A,#10
0184 400E 360 JC UPDATE_HOUR1 ; 如果小时小于10,则十位0不显示
361
0186 E500 F 362 MOV A,HOUR
0188 75F00A 363 MOV B,#10
018B 84 364 DIV AB
018C 900000 F 365 MOV DPTR,#DIS_CODE
018F 93 366 MOVC A,@A+DPTR ;
0190 F500 F 367 MOV BUF_HOUR_H,A
0192 8003 368 SJMP UPDATE_HOUR2
369
0194 370 UPDATE_HOUR1:
0194 7500FF F 371 MOV BUF_HOUR_H,#0FFH
372
0197 373 UPDATE_HOUR2:
0197 E500 F 374 MOV A,HOUR
0199 75F00A 375 MOV B,#10
019C 84 376 DIV AB
019D E5F0 377 MOV A,B
019F 900000 F 378 MOV DPTR,#DIS_CODE
01A2 93 379 MOVC A,@A+DPTR
01A3 F500 F 380 MOV BUF_HOUR_L,A
01A5 22 381 RET
382
383 ;===============================================================================
384
01A6 385 DELAYMS:
386 ; 延时子程序
387 ; 传入参数:R7 --- 延时值(MS)
388 ; 返回值:无
A51 MACRO ASSEMBLER WL010 02/10/2004 20:14:08 PAGE 7
389
01A6 EF 390 MOV A,R7
01A7 6009 391 JZ END_DLYMS
01A9 392 DLY_LP1:
01A9 7EB9 393 MOV R6,#185
01AB 394 DLY_LP2:
01AB 00 395 NOP
01AC 00 396 NOP
01AD 00 397 NOP
01AE DEFB 398 DJNZ R6,DLY_LP2
01B0 DFF7 399 DJNZ R7,DLY_LP1
400
01B2 401 END_DLYMS:
01B2 22 402 RET
403
404 ; END OF DELAYMS
405
406 ;===============================================================================
407
01B3 408 DIS_CODE:
01B3 C0 409 DB 0C0H
01B4 F9 410 DB 0F9H
01B5 A4 411 DB 0A4H
01B6 B0 412 DB 0B0H
01B7 99 413 DB 099H
01B8 92 414 DB 092H
01B9 82 415 DB 082H
01BA F8 416 DB 0F8H
01BB 80 417 DB 080H
01BC 90 418 DB 090H
01BD FF 419 DB 0FFH
420
421 END
A51 MACRO ASSEMBLER WL010 02/10/2004 20:14:08 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
AN1. . . . . . . . B ADDR 00B0H.2 A
AN2. . . . . . . . B ADDR 00B0H.3 A
AN2_UPDATE_MIN . . C ADDR 00B9H R SEG=CODE_SEG
AR0. . . . . . . . D ADDR 0000H A
B. . . . . . . . . D ADDR 00F0H A
BUF_HOUR_H . . . . D ADDR 0008H R SEG=DATA_SEG
BUF_HOUR_L . . . . D ADDR 0009H R SEG=DATA_SEG
BUF_MIN_H. . . . . D ADDR 000BH R SEG=DATA_SEG
BUF_MIN_L. . . . . D ADDR 000CH R SEG=DATA_SEG
BUF_SEC_H. . . . . D ADDR 000EH R SEG=DATA_SEG
BUF_SEC_L. . . . . D ADDR 000FH R SEG=DATA_SEG
CODE_SEG . . . . . C SEG 01BEH REL=UNIT
DATA_SEG . . . . . D SEG 0010H REL=UNIT
DELAYMS. . . . . . C ADDR 01A6H R SEG=CODE_SEG
DIS_BUF. . . . . . D ADDR 0008H R SEG=DATA_SEG
DIS_CODE . . . . . C ADDR 01B3H R SEG=CODE_SEG
DIS_DIGIT. . . . . D ADDR 0002H R SEG=DATA_SEG
DIS_INDEX. . . . . D ADDR 0004H R SEG=DATA_SEG
DLY_LP1. . . . . . C ADDR 01A9H R SEG=CODE_SEG
DLY_LP2. . . . . . C ADDR 01ABH R SEG=CODE_SEG
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
END_DLYMS. . . . . C ADDR 01B2H R SEG=CODE_SEG
END_PROC_KEY . . . C ADDR 00D0H R SEG=CODE_SEG
END_TIMER1 . . . . C ADDR 011AH R SEG=CODE_SEG
HOUR . . . . . . . D ADDR 0005H R SEG=DATA_SEG
IE . . . . . . . . D ADDR 00A8H A
INC_HOUR . . . . . C ADDR 0173H R SEG=CODE_SEG
INC_MIN. . . . . . C ADDR 014CH R SEG=CODE_SEG
INC_SEC. . . . . . C ADDR 0125H R SEG=CODE_SEG
KEY_S. . . . . . . D ADDR 0000H R SEG=DATA_SEG
KEY_V. . . . . . . D ADDR 0001H R SEG=DATA_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
MAIN_LP. . . . . . C ADDR 0077H R SEG=CODE_SEG
MIN. . . . . . . . D ADDR 0006H R SEG=DATA_SEG
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
PROC_AN1 . . . . . C ADDR 00A8H R SEG=CODE_SEG
PROC_AN2 . . . . . C ADDR 00ADH R SEG=CODE_SEG
PROC_KEY . . . . . C ADDR 009CH R SEG=CODE_SEG
PSW. . . . . . . . D ADDR 00D0H A
SCAN_KEY . . . . . C ADDR 008EH R SEG=CODE_SEG
SEC. . . . . . . . D ADDR 0003H R SEG=DATA_SEG
SEC100 . . . . . . D ADDR 0007H R SEG=DATA_SEG
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIMER0 . . . . . . C ADDR 00D3H R SEG=CODE_SEG
TIMER1 . . . . . . C ADDR 00FEH R SEG=CODE_SEG
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
UPDATE_HOUR. . . . C ADDR 017FH R SEG=CODE_SEG
A51 MACRO ASSEMBLER WL010 02/10/2004 20:14:08 PAGE 9
UPDATE_HOUR1 . . . C ADDR 0194H R SEG=CODE_SEG
UPDATE_HOUR2 . . . C ADDR 0197H R SEG=CODE_SEG
UPDATE_MIN . . . . C ADDR 015BH R SEG=CODE_SEG
UPDATE_SEC . . . . C ADDR 0134H R SEG=CODE_SEG
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -