📄 13.lst
字号:
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
02C6 00 NOP
02C7 02040D LJMP ERR ;软件陷阱
02CA C2B7 ACTF3: CLR SWITCH ;工作模式三(或四): 开继电器
02CC C297 CLR BELL ;蜂鸣器短鸣一声
02CE 9103 ACALL DL1S
02D0 D297 SETB BELL
02D2 753FFF MOV R_MOD, #0FFH ;响铃模式参数#0FFH
02D5 7A96 MOV R2, #96H ;响铃时间参数#96H
02D7 7102 ACTF31: ACALL RING ;调用响铃子程序
02D9 30B114 JNB MKEY, ENDACT ;等待键按下
02DC 30B011 JNB FKEY, ENDACT ; 有键按下则结束
02DF DAF6 DJNZ R2, ACTF31 ;次数未满继续
02E1 7A96 MOV R2, #96H ;重新赋值
02E3 C297 CLR BELL ;短鸣一声(说明: 响铃模式参数#0FFH使
02E5 71E9 ACALL DL100 ; 响铃程序无效,仅起延时作用,
02E7 D297 SETB BELL ; 每延时一段时间短鸣一声,以
02E9 41D7 AJMP ACTF31 ; 提醒使用者继电器仍在工作)
02EB 00 NOP
02EC 00 NOP
02ED 02040D LJMP ERR ;软件陷阱
02F0 D2B7 ENDACT: SETB SWITCH ;关继电器
02F2 711F AWAITF: ACALL DISPLY ;调用显示
02F4 30B0FB JNB FKEY, AWAITF ;等待键释放
02F7 711F AWAITM: ACALL DISPLY ;调用显示
02F9 30B1FB JNB MKEY, AWAITM ;等待键释放
02FC 22 RET
02FD 00 NOP
02FE 00 NOP
02FF 02040D LJMP ERR ;软件陷阱
;
;**************
; 响铃程序 ;
;**************
0302 7D18 RING: MOV R5, #18H ;R5为循环控制变量
0304 30B110 RING1: JNB MKEY , R_EXIT ;键扫描
0307 30B00D JNB FKEY , R_EXIT ;有键按下则退出
030A E53F MOV A, R_MOD ;移入响铃模式参数
030C A2E7 MOV C, ACC.7 ;根据响铃模式参数改变响铃
030E 9297 MOV BELL, C
0310 23 RL A
0311 F53F MOV R_MOD, A
0313 71E9 ACALL DL100 ;延时
0315 DDED DJNZ R5, RING1 ;循环次数控制
0317 D297 R_EXIT: SETB BELL ;关闭响铃
0319 22 RET
031A 00 NOP
031B 00 NOP
031C 02040D LJMP ERR ;软件陷阱
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 11
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;
;**************
; 显示程序 ;
;**************
031F C0E0 DISPLY: PUSH ACC ;数据压栈保护
0321 C0D0 PUSH PSW
0323 75D010 MOV PSW, #10H ;选用寄存器组2
0326 A83A MOV R0, DSPLYP ;移入显示指针
0328 7AFD MOV R2, #0FDH ;R2寄存的是数码管选通数
032A E53B MOV A, PLYTS ;移入显示循环控制量
032C 7005 JNZ PLAY ;不为0则转PLAY
032E 753B64 MOV PLYTS, #64H ;否则从新赋值
0331 B23B CPL BRIGHT ;亮灭指示位取反
0333 153B PLAY: DEC PLYTS ;显示循环控制量减1
0335 30390C JNB LPLMOD, PLAYL ;低两位数码管不闪则"PLAYL"
0338 203B09 JB BRIGHT, PLAYL ;亮灭指示为1也"PLAYL"
033B 71B4 ACALL NOPLAY ;否则灭灯延时
033D 615C AJMP PLAY1 ;转显示高位数码管
033F 00 NOP
0340 00 NOP
0341 02040D LJMP ERR ;软件陷阱
;用来显示低位
0344 43907F PLAYL: ORL P1, #7FH ;清原显示数据
0347 43B03C ORL P3, #3CH ;清原选通数据
034A EA MOV A, R2 ;移入数码管位选数
034B 23 RL A ;换一位
034C 52B0 ANL P3, A ;选通低位的个位数码管
034E FA MOV R2, A ;暂存位选数
034F E6 MOV A, @R0 ;移入显示数值
0350 90039D MOV DPTR, #TABLE1 ;移入表首地址
0353 93 MOVC A, @A+DPTR ;查表
0354 5290 ANL P1, A ;送显示数据
0356 71C4 ACALL DL1MS ;延时
0358 08 INC R0 ;指向低位的十位数
0359 20B3E8 JB P3.3, PLAYL ;显示低位的十位数
;
035C 303A0C PLAY1: JNB HPLMOD, PLAYH ;高两位数码管不闪则"PLAYH"
035F 203B09 JB BRIGHT, PLAYH ;亮灭指示为1也"PLAYH"
0362 71B4 ACALL NOPLAY ; 否则灭灯延时
0364 6193 AJMP OUTPLY ;转结束
0366 00 NOP
0367 00 NOP
0368 02040D LJMP ERR ;软件陷阱
;
;用来显示高位
036B 43907F PLAYH: ORL P1, #7FH ;清原显示数据
036E 43B03C ORL P3, #3CH ;清原选通数据
0371 53B0EF ANL P3, #0EFH ;选通高位的个位数数码管
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 12
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0374 E6 MOV A, @R0 ;移入显示数值
0375 90039D MOV DPTR, #TABLE1 ;移入表首地址
0378 93 MOVC A, @A+DPTR ;查表
0379 5290 ANL P1, A ;送显示数据
037B 71C4 ACALL DL1MS ;延时
037D 08 INC R0 ;指向高位的十位数
; ;显示高位的十位数
037E 43907F ORL P1, #7FH ;清原显示数据
0381 43B03C ORL P3, #3CH ;清原选通数据
0384 53B0DF ANL P3, #0DFH ;选通高位的十位数
0387 E6 MOV A, @R0 ;移入显示数值
0388 A230 MOV C, LED4 ;指针放大+小灯状态
038A 33 RLC A ;
038B 9003AA MOV DPTR, #TABLE2 ;移入表首地址
038E 93 MOVC A, @A+DPTR ;查表
038F 5290 ANL P1, A ;送显示数据
0391 71C4 ACALL DL1MS ;延时
;
0393 D0D0 OUTPLY: POP PSW ;恢复数据
0395 D0E0 POP ACC
0397 22 RET
0398 00 NOP
0399 00 NOP
039A 02040D LJMP ERR ;软件陷阱
;
039D C0F9A4
03A0 B09992
03A3 82F880
03A6 90BF8E
03A9 FF TABLE1: DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H, 80H, 90H,0BFH, 8EH,0FFH
; "0", "1", ... ... "9", "-", "F", " "
;
03AA FFDFF9
03AD D9A484
03B0 B090BF
03B3 9F TABLE2: DB 0FFH, 0DFH, 0F9H, 0D9H, 0A4H, 84H, 0B0H, 90H, 0BFH, 09FH
; " ", " :", "1 ", "1:", "2 ", "2:", "3 ", "3:", "- ", "-:"
;
;
;
;**********************
; 无显示(灭灯)程序 ;
;**********************
03B4 43907F NOPLAY: ORL P1, #7FH ;清显示数据
03B7 43B03C ORL P3, #3CH ;清选通数据
03BA 08 INC R0 ;指针自增2
03BB 08 INC R0
03BC 71C4 ACALL DL1MS ;延时
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 13
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
03BE 22 RET
03BF 00 NOP
03C0 00 NOP
03C1 02040D LJMP ERR ;软件陷阱
;
;******************
; 延时程序 ;
;******************
03C4 7BF9 DL1MS: MOV R3, #0F9H ;延时 1250US 只为DISPLY所调用
03C6 00 DL1MS1: NOP
03C7 00 NOP
03C8 00 NOP
03C9 DBFB DJNZ R3, DL1MS1
03CB 22 RET
03CC 00 NOP
03CD 00 NOP
03CE 02040D LJMP ERR ;软件陷阱
;
03D1 C297 KEYDLY: CLR BELL ; 按键消抖动专用延时程序,
03D3 711F ACALL DISPLY ; 在消除抖动的同时发出按键提示音
03D5 D297 SETB BELL
03D7 22 RET
03D8 00 NOP
03D9 00 NOP
03DA 02040D LJMP ERR ;软件陷阱
;
03DD 7F0A DL50MS: MOV R7, #0AH ;50毫秒延时程序
03DF 711F DL50M1: ACALL DISPLY ; 每调用一次显示程序5MS
03E1 DFFC DJNZ R7, DL50M1 ; 调用10次
03E3 22 RET
03E4 00 NOP
03E5 00 NOP
03E6 02040D LJMP ERR ;软件陷阱
;
03E9 71DD DL100: ACALL DL50MS ;延时100毫秒
03EB 71DD ACALL DL50MS
03ED 22 RET
03EE 00 NOP
03EF 00 NOP
03F0 02040D LJMP ERR ;软件陷阱
;
03F3 71E9 DL05S: ACALL DL100 ; 延时0.5秒
03F5 71E9 ACALL DL100
03F7 71E9 ACALL DL100
03F9 71E9 ACALL DL100
03FB 71E9 ACALL DL100
03FD 22 RET
03FE 00 NOP
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 14
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
03FF 00 NOP
0400 02040D LJMP ERR ;软件陷阱
;
0403 71F3 DL1S: ACALL DL05S ;延时1秒
0405 71F3 ACALL DL05S
0407 22 RET
0408 00 NOP
0409 00 NOP
040A 02040D LJMP ERR ;软件陷阱
;
;****************************
; ERR(出错处理) 程序 ;
;****************************
040D C2AF ERR: CLR EA ;关中断
040F 900417 MOV DPTR, #ERR1 ; 准备返回地址
0412 C082 PUSH DPL ; 压栈
0414 C083 PUSH DPH ;
0416 32 RETI ;中断返回
0417 7556AA ERR1: MOV 56H, #0AAH ;建立上电标志(出错标志)
041A 755755 MOV 57H, #55H
041D 7400 MOV A, #00H ; 准备返回地址
041F C0E0 PUSH A ; 压栈
0421 C0E0 PUSH A
0423 32 RETI ; 中断返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -