📄 sz03.lst
字号:
388
A51 MACRO ASSEMBLER SZ03 01/04/2007 21:53:58 PAGE 7
389
390 ;************************ 增加倒计时程序部分 *********************
391
392 ;---------- 设置倒数时间 ----------
393 ;设置倒数时间
01E5 394 DOWN_ATIME:
01E5 C28C 395 CLR TR0 ;定时器动作暂停
01E7 753C01 396 MOV SS_D, #1 ;秒钟变量为1
01EA 397 S0:
01EA 11D1 398 ACALL DISP ;扫描显示
399 ;-----------
400 ;按K2分钟数增加
01EC 20A513 401 JB K2, S12 ;未按下K2继续扫描
01EF 30A5FD 402 JNB K2, $ ;有按下则等待放开来
403
01F2 053B 404 INC MM_D ;分钟数加1
01F4 E53B 405 MOV A, MM_D
01F6 B43C03 406 CJNE A, #60,S11 ;是否60min到了
01F9 753B00 407 MOV MM_D,#0 ;分钟变量请除为0
01FC 408 S11:
01FC 5133 409 ACALL DOWN_CONV ;显示倒数的时间
01FE 11D1 410 ACALL DISP ;扫描显示
0200 80E8 411 JMP S0 ;继续对按键扫描
412 ;------------
413 ;按K3分钟数减少
0202 20A613 414 S12: JB K3, S2 ;未按下K3继续扫描
0205 30A6FD 415 JNB K3, $ ;有按下则等待放开来
416
0208 153B 417 DEC MM_D ;分钟数减少1
020A E53B 418 MOV A,MM_D
020C B40003 419 CJNE A, #0,S21 ;是否为0?
020F 753B3C 420 MOV MM_D, #60 ;分钟数赋值为60
0212 421 S21:
0212 5133 422 ACALL DOWN_CONV ;加载倒数时间数据
0214 11D1 423 ACALL DISP ;扫描显示
0216 80D2 424 JMP S0 ;循环执行
425 ;------------
0218 20A7CF 426 S2: JB K4, S0 ;未按下K4继续扫描
021B 30A7FD 427 JNB K4, $ ;等K4键放开
428 ;K4设置完成......
021E 3138 429 ACALL BZ ;响4声
0220 3138 430 ACALL BZ
0222 3138 431 ACALL BZ
0224 3138 432 ACALL BZ
433
0226 3145 434 ACALL LED_BL ;LED闪动
0228 D28C 435 SETB TR0 ;启动定时器
436
022A 437 S3:
022A 5145 438 ACALL DOWN_TIME ;检查倒计时
022C 5133 439 ACALL DOWN_CONV ;加载倒数时间数据
022E 11D1 440 ACALL DISP ;扫描显示
0230 80F8 441 JMP S3
442
0232 22 443 RET
444
445 ;---------------- 加载倒计时时间 -----------------------
446 ;显示倒数的分钟数
0233 447 DOWN_CONV:
0233 E53B 448 MOV A, MM_D
0235 75F00A 449 MOV B,#10 ;设置被除数
0238 84 450 DIV AB ;除法运算,结果A存商数,B存余数
0239 9000C1 451 MOV DPTR,#TABLE ;查表转换
023C 93 452 MOVC A, @A+DPTR
023D F532 453 MOV BUF+2, A ;商数存入BUF+2
023F E5F0 454 MOV A, B ;余数暂存入A
A51 MACRO ASSEMBLER SZ03 01/04/2007 21:53:58 PAGE 8
0241 93 455 MOVC A, @A+DPTR ;查表转换
0242 F533 456 MOV BUF+3, A ;余数存入BUF+3
0244 22 457 RET
458
459 ;---------- 检查倒计时 ------------
460 ;检查倒计时
0245 461 DOWN_TIME: ;检查是否倒数终止
0245 E536 462 MOV A,SEC ;加载现在秒数
0247 853AF0 463 MOV B,SEC0 ;载入旧秒数
024A B5F001 464 CJNE A,B,D01 ;是否过了1秒
024D 22 465 RET
466 ;-----------------------------------
024E 467 D01:
024E 85363A 468 MOV SEC0,SEC ;记录旧的秒数
0251 153C 469 DEC SS_D ;秒数减1
0253 E53C 470 MOV A,SS_D
0255 B4000F 471 CJNE A,#0, D11 ;秒钟数是否为0
0258 E53B 472 MOV A,MM_D
025A B40005 473 CJNE A,#0,D12 ;分钟数是否为0
474 ;秒钟数=0 且 分钟数=0 则倒数终止
025D 31D6 475 ACALL TIME_OUT ;倒数终了处理程序
025F 011D 476 JMP LOOP
0261 22 477 RET
478 ;-----------
0262 479 D12:
0262 753C3B 480 MOV SS_D,#59 ;秒钟数=59
0265 153B 481 DEC MM_D ;分钟数减1
482
0267 483 D11:
0267 5133 484 ACALL DOWN_CONV ;显示倒计时时间
0269 22 485 RET
486 ;------------------------------
487 END
A51 MACRO ASSEMBLER SZ03 01/04/2007 21:53:58 PAGE 9
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
ALB. . . . . . . . B ADDR 0020H.0 A
B. . . . . . . . . D ADDR 00F0H A
B1 . . . . . . . . C ADDR 013AH A
BK . . . . . . . . C ADDR 01D5H A
BUF. . . . . . . . N NUMB 0030H A
BZ . . . . . . . . C ADDR 0138H A
CONV . . . . . . . C ADDR 009EH A
CONVA. . . . . . . C ADDR 019CH A
D01. . . . . . . . C ADDR 024EH A
D1 . . . . . . . . C ADDR 0152H A
D11. . . . . . . . C ADDR 0267H A
D12. . . . . . . . C ADDR 0262H A
DE1. . . . . . . . C ADDR 015DH A
DEDA . . . . . . . N NUMB 0037H A
DELAY. . . . . . . C ADDR 0150H A
DEX. . . . . . . . C ADDR 015BH A
DISP . . . . . . . C ADDR 00D1H A
DOWN_ATIME . . . . C ADDR 01E5H A
DOWN_CONV. . . . . C ADDR 0233H A
DOWN_TIME. . . . . C ADDR 0245H A
HH . . . . . . . . N NUMB 0038H A
HOUR . . . . . . . N NUMB 0034H A
IE . . . . . . . . D ADDR 00A8H A
INIT . . . . . . . C ADDR 012BH A
INIT_TIMER . . . . C ADDR 0054H A
K1 . . . . . . . . B ADDR 00A0H.4 A
K2 . . . . . . . . B ADDR 00A0H.5 A
K3 . . . . . . . . B ADDR 00A0H.6 A
K4 . . . . . . . . B ADDR 00A0H.7 A
L0 . . . . . . . . C ADDR 00F0H A
L1 . . . . . . . . C ADDR 0108H A
L11. . . . . . . . C ADDR 0102H A
L2 . . . . . . . . C ADDR 011EH A
L21. . . . . . . . C ADDR 0118H A
LE1. . . . . . . . C ADDR 0147H A
LED_BL . . . . . . C ADDR 0145H A
LOOP . . . . . . . C ADDR 001DH A
M1 . . . . . . . . C ADDR 002CH A
M2 . . . . . . . . C ADDR 0035H A
M3 . . . . . . . . C ADDR 003EH A
M31. . . . . . . . C ADDR 004EH A
M4 . . . . . . . . C ADDR 0052H A
MAIN . . . . . . . C ADDR 000DH A
MIN. . . . . . . . N NUMB 0035H A
MM . . . . . . . . N NUMB 0039H A
MM_D . . . . . . . N NUMB 003BH A
N0 . . . . . . . . C ADDR 0163H A
N1 . . . . . . . . C ADDR 017BH A
N11. . . . . . . . C ADDR 0175H A
N2 . . . . . . . . C ADDR 0191H A
N21. . . . . . . . C ADDR 018BH A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
S0 . . . . . . . . C ADDR 01EAH A
S1 . . . . . . . . C ADDR 00D8H A
S11. . . . . . . . C ADDR 01FCH A
S12. . . . . . . . C ADDR 0202H A
A51 MACRO ASSEMBLER SZ03 01/04/2007 21:53:58 PAGE 10
S2 . . . . . . . . C ADDR 0218H A
S21. . . . . . . . C ADDR 0212H A
S3 . . . . . . . . C ADDR 022AH A
SEC. . . . . . . . N NUMB 0036H A
SEC0 . . . . . . . N NUMB 003AH A
SET_ATIME. . . . . C ADDR 0161H A
SET_TIME . . . . . C ADDR 00EBH A
SPK. . . . . . . . B ADDR 00B0H.4 A
SS_D . . . . . . . N NUMB 003CH A
TABLE. . . . . . . C ADDR 00C1H A
TH0. . . . . . . . D ADDR 008CH A
TI3. . . . . . . . C ADDR 01C3H A
TIME_OUT . . . . . C ADDR 01D6H A
TIME_PRO . . . . . C ADDR 01BFH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TO_SRV . . . . . . C ADDR 0063H A
TR0. . . . . . . . B ADDR 0088H.4 A
TT1. . . . . . . . C ADDR 009BH A
WLED . . . . . . . B ADDR 0090H.0 A
X1 . . . . . . . . C ADDR 01D6H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -