📄 定时器6.lst
字号:
0274 753D33 390 SETM30: MOV ADDRES, #MH ;移入分位的地址
0277 21E1 391 AJMP WAITFK ;转向等待键释放
0279 753D35 392 SETHH: MOV ADDRES, #HH ;移入时位的地址
027C 21E1 393 AJMP WAITFK ;转向等待键释放
394 ;
027E C23A 395 ENDMEN: CLR HPLMOD ;恢复不闪烁显示方式
0280 22 396 RET
0281 00 397 NOP
0282 00 398 NOP
0283 02040D 399 LJMP ERR ;软件陷阱
400 ;
401 ;****************
402 ; 到点工作程序 ;
403 ;****************
0286 8C36 404 ACTION: MOV L0, R4 ;移入工作模式选择数
0288 0536 405 INC L0 ;送显示数"F-0X"
028A 753700 406 MOV L1, #00H
028D 75380B 407 MOV L2, #0BH
0290 753900 408 MOV L3, #00H
0293 D297 409 SETB LED4
0295 753A36 410 MOV DSPLYP, #L0 ;指针指向显存
0298 D239 411 SETB LPLMOD ;设定显示方式不闪烁
029A D23A 412 SETB HPLMOD
029C EC 413 MOV A, R4 ;移入工作模式选择数
029D 23 414 RL A ;
029E 9002A2 415 MOV DPTR, #A_TAB
02A1 73 416 JMP @A+DPTR ;根据工作模式选择数跳转
02A2 41AF 417 A_TAB: AJMP ACTF1 ;工作模式一
02A4 41AF 418 AJMP ACTF1 ;工作模式二
02A6 41CA 419 AJMP ACTF3 ;工作模式三
02A8 41CA 420 AJMP ACTF3 ;工作模式四
02AA 00 421 NOP
02AB 00 422 NOP
02AC 02040D 423 LJMP ERR ;软件陷阱
02AF D2B7 424 ACTF1: SETB SWITCH ;工作模式一(或二): 关继电器
02B1 753F82 425 MOV R_MOD, #82H ;响铃模式参数#82H
02B4 7A96 426 MOV R2, #96H ;响铃次数参数#96H
02B6 7102 427 ACTF11: ACALL RING ;调用响铃子程序
02B8 30B135 428 JNB MKEY, ENDACT ;等待键按下
02BB 30B032 429 JNB FKEY, ENDACT ; 有键按下则结束响铃
02BE DAF6 430 DJNZ R2, ACTF11 ;次数未满继续响铃
02C0 753FFF 431 MOV R_MOD, #0FFH ;参数#0FF使响铃无效
02C3 41B6 432 AJMP ACTF11 ;无键按下返回
02C5 00 433 NOP
02C6 00 434 NOP
02C7 02040D 435 LJMP ERR ;软件陷阱
02CA C2B7 436 ACTF3: CLR SWITCH ;工作模式三(或四): 开继电器
02CC C2A7 437 CLR BELL ;蜂鸣器短鸣一声
02CE 9103 438 ACALL DL1S
02D0 D2A7 439 SETB BELL
02D2 753FFF 440 MOV R_MOD, #0FFH ;响铃模式参数#0FFH
02D5 7A96 441 MOV R2, #96H ;响铃时间参数#96H
02D7 7102 442 ACTF31: ACALL RING ;调用响铃子程序
02D9 30B114 443 JNB MKEY, ENDACT ;等待键按下
02DC 30B011 444 JNB FKEY, ENDACT ; 有键按下则结束
02DF DAF6 445 DJNZ R2, ACTF31 ;次数未满继续
02E1 7A96 446 MOV R2, #96H ;重新赋值
02E3 C2A7 447 CLR BELL ;短鸣一声(说明: 响铃模式参数#0FFH使
02E5 71E9 448 ACALL DL100 ; 响铃程序无效,仅起延时作用,
02E7 D2A7 449 SETB BELL ; 每延时一段时间短鸣一声,以
02E9 41D7 450 AJMP ACTF31 ; 提醒使用者继电器仍在工作)
02EB 00 451 NOP
02EC 00 452 NOP
02ED 02040D 453 LJMP ERR ;软件陷阱
02F0 D2B7 454 ENDACT: SETB SWITCH ;关继电器
A51 MACRO ASSEMBLER 定时器6 04/14/2005 16:26:25 PAGE 8
02F2 711F 455 AWAITF: ACALL DISPLY ;调用显示
02F4 30B0FB 456 JNB FKEY, AWAITF ;等待键释放
02F7 711F 457 AWAITM: ACALL DISPLY ;调用显示
02F9 30B1FB 458 JNB MKEY, AWAITM ;等待键释放
02FC 22 459 RET
02FD 00 460 NOP
02FE 00 461 NOP
02FF 02040D 462 LJMP ERR ;软件陷阱
463 ;
464 ;**************
465 ; 响铃程序 ;
466 ;**************
0302 7D18 467 RING: MOV R5, #18H ;R5为循环控制变量
0304 30B110 468 RING1: JNB MKEY , R_EXIT ;键扫描
0307 30B00D 469 JNB FKEY , R_EXIT ;有键按下则退出
030A E53F 470 MOV A, R_MOD ;移入响铃模式参数
030C A2E7 471 MOV C, ACC.7 ;根据响铃模式参数改变响铃
030E 92A7 472 MOV BELL, C
0310 23 473 RL A
0311 F53F 474 MOV R_MOD, A
0313 71E9 475 ACALL DL100 ;延时
0315 DDED 476 DJNZ R5, RING1 ;循环次数控制
0317 D2A7 477 R_EXIT: SETB BELL ;关闭响铃
0319 22 478 RET
031A 00 479 NOP
031B 00 480 NOP
031C 02040D 481 LJMP ERR ;软件陷阱
482 ;
483 ;**************
484 ; 显示程序 ;
485 ;**************
031F C0E0 486 DISPLY: PUSH ACC ;数据压栈保护
0321 C0D0 487 PUSH PSW
0323 75D010 488 MOV PSW, #10H ;选用寄存器组2
0326 A83A 489 MOV R0, DSPLYP ;移入显示指针
0328 7AFD 490 MOV R2, #0FDH ;R2寄存的是数码管选通数
032A E53B 491 MOV A, PLYTS ;移入显示循环控制量
032C 7005 492 JNZ PLAY ;不为0则转PLAY
032E 753B64 493 MOV PLYTS, #64H ;否则从新赋值
0331 B23B 494 CPL BRIGHT ;亮灭指示位取反
0333 153B 495 PLAY: DEC PLYTS ;显示循环控制量减1
0335 30390C 496 JNB LPLMOD, PLAYL ;低两位数码管不闪则"PLAYL"
0338 203B09 497 JB BRIGHT, PLAYL ;亮灭指示为1也"PLAYL"
033B 71B4 498 ACALL NOPLAY ;否则灭灯延时
033D 615C 499 AJMP PLAY1 ;转显示高位数码管
033F 00 500 NOP
0340 00 501 NOP
0341 02040D 502 LJMP ERR ;软件陷阱
503 ;用来显示低位
0344 43907F 504 PLAYL: ORL P1, #7FH ;清原显示数据
0347 43B03C 505 ORL P3, #3CH ;清原选通数据
034A EA 506 MOV A, R2 ;移入数码管位选数
034B 23 507 RL A ;换一位
034C 52B0 508 ANL P3, A ;选通低位的个位数码管
034E FA 509 MOV R2, A ;暂存位选数
034F E6 510 MOV A, @R0 ;移入显示数值
0350 90039D 511 MOV DPTR, #TABLE1 ;移入表首地址
0353 93 512 MOVC A, @A+DPTR ;查表
0354 5290 513 ANL P1, A ;送显示数据
0356 71C4 514 ACALL DL1MS ;延时
0358 08 515 INC R0 ;指向低位的十位数
0359 20B3E8 516 JB P3.3, PLAYL ;显示低位的十位数
517 ;
035C 303A0C 518 PLAY1: JNB HPLMOD, PLAYH ;高两位数码管不闪则"PLAYH"
035F 203B09 519 JB BRIGHT, PLAYH ;亮灭指示为1也"PLAYH"
0362 71B4 520 ACALL NOPLAY ; 否则灭灯延时
A51 MACRO ASSEMBLER 定时器6 04/14/2005 16:26:25 PAGE 9
0364 6193 521 AJMP OUTPLY ;转结束
0366 00 522 NOP
0367 00 523 NOP
0368 02040D 524 LJMP ERR ;软件陷阱
525 ;
526 ;用来显示高位
036B 43907F 527 PLAYH: ORL P1, #7FH ;清原显示数据
036E 43B03C 528 ORL P3, #3CH ;清原选通数据
0371 53B0EF 529 ANL P3, #0EFH ;选通高位的个位数数码管
0374 E6 530 MOV A, @R0 ;移入显示数值
0375 90039D 531 MOV DPTR, #TABLE1 ;移入表首地址
0378 93 532 MOVC A, @A+DPTR ;查表
0379 5290 533 ANL P1, A ;送显示数据
037B 71C4 534 ACALL DL1MS ;延时
037D 08 535 INC R0 ;指向高位的十位数
536 ; ;显示高位的十位数
037E 43907F 537 ORL P1, #7FH ;清原显示数据
0381 43B03C 538 ORL P3, #3CH ;清原选通数据
0384 53B0DF 539 ANL P3, #0DFH ;选通高位的十位数
0387 E6 540 MOV A, @R0 ;移入显示数值
0388 A297 541 MOV C, LED4 ;指针放大+小灯状态
038A 33 542 RLC A ;
038B 9003AA 543 MOV DPTR, #TABLE2 ;移入表首地址
038E 93 544 MOVC A, @A+DPTR ;查表
038F 5290 545 ANL P1, A ;送显示数据
0391 71C4 546 ACALL DL1MS ;延时
547 ;
0393 D0D0 548 OUTPLY: POP PSW ;恢复数据
0395 D0E0 549 POP ACC
0397 22 550 RET
0398 00 551 NOP
0399 00 552 NOP
039A 02040D 553 LJMP ERR ;软件陷阱
554 ;
039D C0F9A4B0 555 TABLE1: DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H, 80H, 90H,0BFH, 8EH,0FFH
03A1 999282F8
03A5 8090BF8E
03A9 FF
556 ; "0", "1", ... ... "9", "-", "F", " "
557 ;
03AA FF7FF979 558 TABLE2: DB 0FFH, 07FH, 0F9H, 079H, 0A4H, 84H, 0B0H, 10H, 0BFH, 03FH
03AE A484B010
03B2 BF3F
559 ; " ", " :", "1 ", "1:", "2 ", "2:", "3 ", "3:","- ", "-:"
560 ;
561 ;
562 ;
563 ;**********************
564 ; 无显示(灭灯)程序 ;
565 ;**********************
03B4 43907F 566 NOPLAY: ORL P1, #7FH ;清显示数据
03B7 43B03C 567 ORL P3, #3CH ;清选通数据
03BA 08 568 INC R0 ;指针自增2
03BB 08 569 INC R0
03BC 71C4 570 ACALL DL1MS ;延时
03BE 22 571 RET
03BF 00 572 NOP
03C0 00 573 NOP
03C1 02040D 574 LJMP ERR ;软件陷阱
575 ;
576 ;******************
577 ; 延时程序 ;
578 ;******************
03C4 7BF9 579 DL1MS: MOV R3, #0F9H ;延时 1250US 只为DISPLY所调用
03C6 00 580 DL1MS1: NOP
03C7 00 581 NOP
A51 MACRO ASSEMBLER 定时器6 04/14/2005 16:26:25 PAGE 10
03C8 00 582 NOP
03C9 DBFB 583 DJNZ R3, DL1MS1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -