📄 13.lst
字号:
0153 753209 MOV ML, #09H
0156 7835 MOV R0, #HH
0158 316A ACALL ADDBCD
015A D083 OUTT0: POP DPH ;恢复现场
015C D082 POP DPL
015E D0D0 POP PSW
0160 D0E0 POP ACC
0162 D2AF SETB EA
0164 32 RETI ;中断返回
0165 00 NOP
0166 00 NOP
0167 02040D LJMP ERR ;软件陷阱
;
;
;**************************
; BCD子程序(加1或减1 ) ;
;**************************
016A E6 ADDBCD: MOV A, @R0 ;移入被操作数的高位
016B 18 DEC R0 ;指针减一
016C C4 SWAP A
016D 46 ORL A, @R0 ;移入被操作数的低位
016E 75F001 MOV B, #01H ;B寄存器送立即数#01H
0171 A220 MOV C, IFDEC ;若 减法标志位为1,则
0173 92F3 MOV B.3, C ;
0175 92F4 MOV B.4, C ; B寄存器的值被改为#99H
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 6
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0177 92F7 MOV B.7, C ;
0179 25F0 ADD A, B ; 对一个压缩的BCD码加#99H等于对其减一
017B D4 DA A ;BCD码调整
017C FB MOV R3, A ;暂存结果
017D 540F ANL A, #0FH ;取低位码
017F F6 MOV @R0, A ;存数
0180 EB MOV A, R3 ;取回结果
0181 08 INC R0 ;指针加一
0182 C4 SWAP A ;交换
0183 540F ANL A, #0FH ;取结果数的高位
0185 F6 MOV @R0, A ;存数
0186 22 RET
0187 00 NOP
0188 00 NOP
0189 02040D LJMP ERR ;软件陷阱
;
;**************
; 加1程序 ;
;**************
018C A83D ADDONE: MOV R0, ADDRES ;移入被加数单元的地址
018E C220 CLR IFDEC ;设定BCD子程序做加法
0190 316A ACALL ADDBCD ;调用BCD子程序
0192 C3 CLR C ;判断被加数是否大于
0193 EB MOV A, R3 ;最大值"MAX"
0194 B53E00 CJNE A, MAX, JGOVER
0197 4004 JGOVER: JC ENDADO
0199 E4 CLR A ;若大于"MAX",则清零
019A F6 MOV @R0, A
019B 18 DEC R0
019C F6 MOV @R0, A
019D 22 ENDADO: RET
019E 00 NOP
019F 00 NOP
01A0 02040D LJMP ERR ;软件陷阱
;
;******************
; 调时快进程序 ;
;******************
01A3 C239 QUICK: CLR LPLMOD ;设定显示方式不闪烁
01A5 C23A CLR HPLMOD
01A7 318C ACALL ADDONE ;调用加1子程序
01A9 8C36 MOV L0, R4 ;将工作模式选择数移入显存
01AB 0536 INC L0 ;加1转化成显示值
01AD 71D1 ACALL KEYDLY ;延时
01AF 71E9 ACALL DL100
01B1 30B1EF JNB MKEY, QUICK ;判断键是否松开
01B4 D239 SETB LPLMOD ;若松开则恢复闪烁显示方式
01B6 BE0204 CJNE R6, #02H, ENDQUK
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 7
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
01B9 D23A SETB HPLMOD
01BB C239 CLR LPLMOD
01BD 22 ENDQUK: RET
01BE 00 NOP
01BF 00 NOP
01C0 02040D LJMP ERR ;软件陷阱
;
;
;******************
; 功能菜单程序 ;
;******************
01C3 7E00 MENU: MOV R6, #00H ; 初始化; R6 计功能键按键次数
01C5 753D05 MOV ADDRES, #05H ; 将 R5 的地址送入,以便于改变 R4 的值
01C8 753E04 MOV MAX, #04H ; 定义工作模式选择寄存器R4 的最大值
01CB 753A36 MOV DSPLYP, #L0 ;定义显示指针指向显存
01CE D239 SETB LPLMOD ;设定低两位数闪烁
01D0 C23A CLR HPLMOD
01D2 8C36 MOV L0, R4 ;送显示数据"F-0X"
01D4 0536 INC L0
01D6 753700 MOV L1, #00H
01D9 75380B MOV L2, #0BH
01DC 753900 MOV L3, #00H
01DF D230 SETB LED4
;
01E1 711F WAITFK: ACALL DISPLY ;等待F键释放
01E3 30B0FB JNB FKEY, WAITFK
01E6 711F MENU1: ACALL DISPLY
01E8 20B130 JB MKEY, JGFKEY ;M键扫描
01EB 71D1 ACALL KEYDLY ;延时消抖动
01ED 20B12B JB MKEY, JGFKEY ; 未按下则转F键扫描
01F0 BE0012 CJNE R6, #00H, NEXT1 ;
01F3 753000 MOV SL, #00H ;若中途改变定时方式,则清除原计时数据
01F6 753100 MOV SH, #00H
01F9 753200 MOV ML, #00H
01FC 753300 MOV MH, #00H
01FF 753400 MOV HL, #00H
0202 753500 MOV HH, #00H
0205 7A00 NEXT1: MOV R2, #00H ;R2用于判断按键时间是否超过0.5秒
0207 318C NEXT2: ACALL ADDONE ;调用加1程序
0209 8C36 MOV L0, R4 ;移入工作方式选择数
020B 0536 INC L0
;
020D 711F WAITMK: ACALL DISPLY ;等待M键释放
020F 0A INC R2 ;R2自增一
0210 C3 CLR C
0211 BAC800 CJNE R2, #0C8H, JGQUIC ;若R2大于等于200则调用快进子程序
0214 4002 JGQUIC: JC WATMK1
0216 31A3 ACALL QUICK
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 8
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0218 30B1F2 WATMK1: JNB MKEY, WAITMK ; R2小于200则等待M键释放
;
021B 20B0C8 JGFKEY: JB FKEY, MENU1 ;功能(F)键扫描
021E 71D1 ACALL KEYDLY ;延时消抖动
0220 20B0C3 JB FKEY, MENU1 ;键未按下则转修改(M)键扫描
0223 0E INC R6 ;F键按键次数加1
0224 EE MOV A, R6 ;移入按键次数
0225 23 RL A ;指针放大
0226 90022A MOV DPTR, #FUNTAB
0229 73 JMP @A+DPTR ;根据按键次数跳转到相应的程序段
022A 21E1 FUNTAB: AJMP WAITFK
022C 4136 AJMP SETLOW
022E 415B AJMP SETHI
0230 417E AJMP ENDMEN
0232 00 NOP
0233 00 NOP
0234 417E AJMP ENDMEN
;STWKMD: ;工作模式设定,不需另外改变菜单
;
0236 753E60 SETLOW: MOV MAX, #60H ;设置低位(秒位或分位)
0239 EC MOV A, R4 ;移入工作模式选择数
023A 23 RL A ;指针放大
023B 90023F MOV DPTR, #FTAB1
023E 73 JMP @A+DPTR ;根据工作模式选择数跳转到相应的程序段
023F 414B FTAB1: AJMP SETSS
0241 4153 AJMP SETM60
0243 414B AJMP SETSS
0245 4153 AJMP SETM60
0247 00 NOP
0248 00 NOP
0249 21E1 AJMP WAITFK
024B 753A30 SETSS: MOV DSPLYP, #SL ;设定显示区域为MM:SS
024E 753D31 MOV ADDRES, #SH
0251 21E1 AJMP WAITFK
0253 753A32 SETM60: MOV DSPLYP, #ML ; 设定显示区域为HH:MM
0256 753D33 MOV ADDRES, #MH
0259 21E1 AJMP WAITFK
;
025B C239 SETHI: CLR LPLMOD ;设置高位(分位或时位)
025D D23A SETB HPLMOD ;高两位数码管闪烁
025F 753E31 MOV MAX, #31H ;最大数为30
0262 EC MOV A, R4 ;移入工作模式选择数
0263 23 RL A ;指针放大
0264 900268 MOV DPTR, #FTAB2 ;移入表首地址
0267 73 JMP @A+DPTR ;根据工作模式选择数跳转到相应的程序段
0268 4174 FTAB2: AJMP SETM30
026A 4179 AJMP SETHH
026C 4174 AJMP SETM30
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 9
01-29-03
02:14:23
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
026E 4179 AJMP SETHH
0270 00 NOP
0271 00 NOP
0272 21E1 AJMP WAITFK ;返回等待键释放
0274 753D33 SETM30: MOV ADDRES, #MH ;移入分位的地址
0277 21E1 AJMP WAITFK ;转向等待键释放
0279 753D35 SETHH: MOV ADDRES, #HH ;移入时位的地址
027C 21E1 AJMP WAITFK ;转向等待键释放
;
027E C23A ENDMEN: CLR HPLMOD ;恢复不闪烁显示方式
0280 22 RET
0281 00 NOP
0282 00 NOP
0283 02040D LJMP ERR ;软件陷阱
;
;****************
; 到点工作程序 ;
;****************
0286 8C36 ACTION: MOV L0, R4 ;移入工作模式选择数
0288 0536 INC L0 ;送显示数"F-0X"
028A 753700 MOV L1, #00H
028D 75380B MOV L2, #0BH
0290 753900 MOV L3, #00H
0293 D230 SETB LED4
0295 753A36 MOV DSPLYP, #L0 ;指针指向显存
0298 D239 SETB LPLMOD ;设定显示方式不闪烁
029A D23A SETB HPLMOD
029C EC MOV A, R4 ;移入工作模式选择数
029D 23 RL A ;
029E 9002A2 MOV DPTR, #A_TAB
02A1 73 JMP @A+DPTR ;根据工作模式选择数跳转
02A2 41AF A_TAB: AJMP ACTF1 ;工作模式一
02A4 41AF AJMP ACTF1 ;工作模式二
02A6 41CA AJMP ACTF3 ;工作模式三
02A8 41CA AJMP ACTF3 ;工作模式四
02AA 00 NOP
02AB 00 NOP
02AC 02040D LJMP ERR ;软件陷阱
02AF D2B7 ACTF1: SETB SWITCH ;工作模式一(或二): 关继电器
02B1 753F82 MOV R_MOD, #82H ;响铃模式参数#82H
02B4 7A96 MOV R2, #96H ;响铃次数参数#96H
02B6 7102 ACTF11: ACALL RING ;调用响铃子程序
02B8 30B135 JNB MKEY, ENDACT ;等待键按下
02BB 30B032 JNB FKEY, ENDACT ; 有键按下则结束响铃
02BE DAF6 DJNZ R2, ACTF11 ;次数未满继续响铃
02C0 753FFF MOV R_MOD, #0FFH ;参数#0FF使响铃无效
02C3 41B6 AJMP ACTF11 ;无键按下返回
02C5 00 NOP
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例13\13.ASM
页 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -