📄 wl010.lst
字号:
00FD 32 246 RETI
247
248 ;===============================================================================
249 USING 0
00FE 250 TIMER1:
251 ; 定时器1中断服务程序, 产生时基信号10ms
252 ;
253 ;
00FE C0D0 254 PUSH PSW
0100 C0E0 255 PUSH ACC
0102 C0F0 256 PUSH B
A51 MACRO ASSEMBLER WL010 12/02/2005 21:33:07 PAGE 5
0104 C083 257 PUSH DPH
0106 C082 258 PUSH DPL
259
0108 758DDC 260 MOV TH1,#0DCH
261
010B 0500 F 262 INC SEC100
263
010D E500 F 264 MOV A,SEC100
010F C3 265 CLR C
0110 9464 266 SUBB A,#100 ; 是否中断100次(达到1s)
0112 4006 267 JC END_TIMER1 ; < 1S
268
0114 750000 F 269 MOV SEC100,#00H ; 达到1s
0117 120000 F 270 LCALL INC_SEC ; 秒加1
271
011A 272 END_TIMER1:
011A D082 273 POP DPL
011C D083 274 POP DPH
011E D0F0 275 POP B
0120 D0E0 276 POP ACC
0122 D0D0 277 POP PSW
278
0124 32 279 RETI ;
280
281 ;===============================================================================
0125 282 INC_SEC:
0125 0500 F 283 INC SEC
284
0127 E500 F 285 MOV A,SEC
0129 D3 286 SETB C
012A 943B 287 SUBB A,#59 ;
012C 4006 288 JC UPDATE_SEC
289
012E E4 290 CLR A
012F F500 F 291 MOV SEC,A
0131 120000 F 292 LCALL INC_MIN
293
0134 294 UPDATE_SEC:
0134 E500 F 295 MOV A,SEC
0136 75F00A 296 MOV B,#10
0139 84 297 DIV AB ; A = SEC / 10
013A 900000 F 298 MOV DPTR,#DIS_CODE
013D 93 299 MOVC A,@A+DPTR ;
013E F500 F 300 MOV BUF_SEC_H,A ;
301
0140 E500 F 302 MOV A,SEC
0142 75F00A 303 MOV B,#10
0145 84 304 DIV AB
0146 E5F0 305 MOV A,B ; A = SEC % 10
0148 93 306 MOVC A,@A+DPTR
0149 F500 F 307 MOV BUF_SEC_L,A
014B 22 308 RET
309
310 ;===============================================================================
311
014C 312 INC_MIN:
014C 0500 F 313 INC MIN ; 分钟加1
314
014E E500 F 315 MOV A,MIN ;
0150 D3 316 SETB C
0151 943B 317 SUBB A,#59
0153 4006 318 JC UPDATE_MIN ; 如果分钟等于60,则分清0,小时加1
319
0155 E4 320 CLR A ;
0156 F500 F 321 MOV MIN,A
0158 120000 F 322 LCALL INC_HOUR ; 小时加1
A51 MACRO ASSEMBLER WL010 12/02/2005 21:33:07 PAGE 6
323
015B 324 UPDATE_MIN: ; 更新分显示缓冲区
015B E500 F 325 MOV A,MIN
015D 75F00A 326 MOV B,#10
0160 84 327 DIV AB ; A = MIN / 10
0161 900000 F 328 MOV DPTR,#DIS_CODE
0164 93 329 MOVC A,@A+DPTR
0165 F500 F 330 MOV BUF_MIN_H,A ; 更新分十位
331
0167 E500 F 332 MOV A,MIN
0169 75F00A 333 MOV B,#10
016C 84 334 DIV AB
016D E5F0 335 MOV A,B ; A = MIN % 10
016F 93 336 MOVC A,@A+DPTR
0170 F500 F 337 MOV BUF_MIN_L,A ; 更新分个位
338
0172 22 339 RET
340
341 ;===============================================================================
342
0173 343 INC_HOUR:
0173 0500 F 344 INC HOUR ; 小时加1
0175 E500 F 345 MOV A,HOUR
0177 D3 346 SETB C
0178 9418 347 SUBB A,#24
017A 4003 348 JC UPDATE_HOUR ; 如果小时等于24,则小时清0
349
017C E4 350 CLR A
017D F500 F 351 MOV HOUR,A ; 小时清0
352
017F 353 UPDATE_HOUR:
017F E500 F 354 MOV A,HOUR
0181 D3 355 SETB C
0182 940A 356 SUBB A,#10
0184 400E 357 JC UPDATE_HOUR1 ; 如果小时小于10,则十位0不显示
358
0186 E500 F 359 MOV A,HOUR
0188 75F00A 360 MOV B,#10
018B 84 361 DIV AB
018C 900000 F 362 MOV DPTR,#DIS_CODE
018F 93 363 MOVC A,@A+DPTR ;
0190 F500 F 364 MOV BUF_HOUR_H,A
0192 8003 365 SJMP UPDATE_HOUR2
366
0194 367 UPDATE_HOUR1:
0194 7500FF F 368 MOV BUF_HOUR_H,#0FFH
369
0197 370 UPDATE_HOUR2:
0197 E500 F 371 MOV A,HOUR
0199 75F00A 372 MOV B,#10
019C 84 373 DIV AB
019D E5F0 374 MOV A,B
019F 900000 F 375 MOV DPTR,#DIS_CODE
01A2 93 376 MOVC A,@A+DPTR
01A3 F500 F 377 MOV BUF_HOUR_L,A
01A5 22 378 RET
379
380 ;===============================================================================
381
01A6 382 DELAYMS:
383 ; 延时子程序
384 ; 传入参数:R7 --- 延时值(MS)
385 ; 返回值:无
386
01A6 EF 387 MOV A,R7
01A7 6009 388 JZ END_DLYMS
A51 MACRO ASSEMBLER WL010 12/02/2005 21:33:07 PAGE 7
01A9 389 DLY_LP1:
01A9 7EB9 390 MOV R6,#185
01AB 391 DLY_LP2:
01AB 00 392 NOP
01AC 00 393 NOP
01AD 00 394 NOP
01AE DEFB 395 DJNZ R6,DLY_LP2
01B0 DFF7 396 DJNZ R7,DLY_LP1
397
01B2 398 END_DLYMS:
01B2 22 399 RET
400
401 ; END OF DELAYMS
402
403 ;===============================================================================
404
01B3 405 DIS_CODE:
01B3 C0 406 DB 0C0H
01B4 F9 407 DB 0F9H
01B5 A4 408 DB 0A4H
01B6 B0 409 DB 0B0H
01B7 99 410 DB 099H
01B8 92 411 DB 092H
01B9 82 412 DB 082H
01BA F8 413 DB 0F8H
01BB 80 414 DB 080H
01BC 90 415 DB 090H
01BD FF 416 DB 0FFH
417
418 END
A51 MACRO ASSEMBLER WL010 12/02/2005 21:33:07 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.4 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 12/02/2005 21:33:07 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 + -