?? 13.lst
字號:
0153 753209 MOV ML, #09H
0156 7835 MOV R0, #HH
0158 316A ACALL ADDBCD
015A D083 OUTT0: POP DPH ;恢復(fù)現(xiàn)場
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 ;移入被操作數(shù)的高位
016B 18 DEC R0 ;指針減一
016C C4 SWAP A
016D 46 ORL A, @R0 ;移入被操作數(shù)的低位
016E 75F001 MOV B, #01H ;B寄存器送立即數(shù)#01H
0171 A220 MOV C, IFDEC ;若 減法標(biāo)志位為1,則
0173 92F3 MOV B.3, C ;
0175 92F4 MOV B.4, C ; B寄存器的值被改為#99H
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實(shí)例13\13.ASM
頁 6
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機(jī)器碼 源程序
0177 92F7 MOV B.7, C ;
0179 25F0 ADD A, B ; 對一個(gè)壓縮的BCD碼加#99H等于對其減一
017B D4 DA A ;BCD碼調(diào)整
017C FB MOV R3, A ;暫存結(jié)果
017D 540F ANL A, #0FH ;取低位碼
017F F6 MOV @R0, A ;存數(shù)
0180 EB MOV A, R3 ;取回結(jié)果
0181 08 INC R0 ;指針加一
0182 C4 SWAP A ;交換
0183 540F ANL A, #0FH ;取結(jié)果數(shù)的高位
0185 F6 MOV @R0, A ;存數(shù)
0186 22 RET
0187 00 NOP
0188 00 NOP
0189 02040D LJMP ERR ;軟件陷阱
;
;**************
; 加1程序 ;
;**************
018C A83D ADDONE: MOV R0, ADDRES ;移入被加數(shù)單元的地址
018E C220 CLR IFDEC ;設(shè)定BCD子程序做加法
0190 316A ACALL ADDBCD ;調(diào)用BCD子程序
0192 C3 CLR C ;判斷被加數(shù)是否大于
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 ;軟件陷阱
;
;******************
; 調(diào)時(shí)快進(jìn)程序 ;
;******************
01A3 C239 QUICK: CLR LPLMOD ;設(shè)定顯示方式不閃爍
01A5 C23A CLR HPLMOD
01A7 318C ACALL ADDONE ;調(diào)用加1子程序
01A9 8C36 MOV L0, R4 ;將工作模式選擇數(shù)移入顯存
01AB 0536 INC L0 ;加1轉(zhuǎn)化成顯示值
01AD 71D1 ACALL KEYDLY ;延時(shí)
01AF 71E9 ACALL DL100
01B1 30B1EF JNB MKEY, QUICK ;判斷鍵是否松開
01B4 D239 SETB LPLMOD ;若松開則恢復(fù)閃爍顯示方式
01B6 BE0204 CJNE R6, #02H, ENDQUK
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實(shí)例13\13.ASM
頁 7
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機(jī)器碼 源程序
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 計(jì)功能鍵按鍵次數(shù)
01C5 753D05 MOV ADDRES, #05H ; 將 R5 的地址送入,以便于改變 R4 的值
01C8 753E04 MOV MAX, #04H ; 定義工作模式選擇寄存器R4 的最大值
01CB 753A36 MOV DSPLYP, #L0 ;定義顯示指針指向顯存
01CE D239 SETB LPLMOD ;設(shè)定低兩位數(shù)閃爍
01D0 C23A CLR HPLMOD
01D2 8C36 MOV L0, R4 ;送顯示數(shù)據(jù)"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 ;延時(shí)消抖動
01ED 20B12B JB MKEY, JGFKEY ; 未按下則轉(zhuǎn)F鍵掃描
01F0 BE0012 CJNE R6, #00H, NEXT1 ;
01F3 753000 MOV SL, #00H ;若中途改變定時(shí)方式,則清除原計(jì)時(shí)數(shù)據(jù)
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用于判斷按鍵時(shí)間是否超過0.5秒
0207 318C NEXT2: ACALL ADDONE ;調(diào)用加1程序
0209 8C36 MOV L0, R4 ;移入工作方式選擇數(shù)
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則調(diào)用快進(jìn)子程序
0214 4002 JGQUIC: JC WATMK1
0216 31A3 ACALL QUICK
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實(shí)例13\13.ASM
頁 8
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機(jī)器碼 源程序
0218 30B1F2 WATMK1: JNB MKEY, WAITMK ; R2小于200則等待M鍵釋放
;
021B 20B0C8 JGFKEY: JB FKEY, MENU1 ;功能(F)鍵掃描
021E 71D1 ACALL KEYDLY ;延時(shí)消抖動
0220 20B0C3 JB FKEY, MENU1 ;鍵未按下則轉(zhuǎn)修改(M)鍵掃描
0223 0E INC R6 ;F鍵按鍵次數(shù)加1
0224 EE MOV A, R6 ;移入按鍵次數(shù)
0225 23 RL A ;指針放大
0226 90022A MOV DPTR, #FUNTAB
0229 73 JMP @A+DPTR ;根據(jù)按鍵次數(shù)跳轉(zhuǎn)到相應(yīng)的程序段
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: ;工作模式設(shè)定,不需另外改變菜單
;
0236 753E60 SETLOW: MOV MAX, #60H ;設(shè)置低位(秒位或分位)
0239 EC MOV A, R4 ;移入工作模式選擇數(shù)
023A 23 RL A ;指針放大
023B 90023F MOV DPTR, #FTAB1
023E 73 JMP @A+DPTR ;根據(jù)工作模式選擇數(shù)跳轉(zhuǎn)到相應(yīng)的程序段
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 ;設(shè)定顯示區(qū)域?yàn)镸M:SS
024E 753D31 MOV ADDRES, #SH
0251 21E1 AJMP WAITFK
0253 753A32 SETM60: MOV DSPLYP, #ML ; 設(shè)定顯示區(qū)域?yàn)镠H:MM
0256 753D33 MOV ADDRES, #MH
0259 21E1 AJMP WAITFK
;
025B C239 SETHI: CLR LPLMOD ;設(shè)置高位(分位或時(shí)位)
025D D23A SETB HPLMOD ;高兩位數(shù)碼管閃爍
025F 753E31 MOV MAX, #31H ;最大數(shù)為30
0262 EC MOV A, R4 ;移入工作模式選擇數(shù)
0263 23 RL A ;指針放大
0264 900268 MOV DPTR, #FTAB2 ;移入表首地址
0267 73 JMP @A+DPTR ;根據(jù)工作模式選擇數(shù)跳轉(zhuǎn)到相應(yīng)的程序段
0268 4174 FTAB2: AJMP SETM30
026A 4179 AJMP SETHH
026C 4174 AJMP SETM30
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實(shí)例13\13.ASM
頁 9
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機(jī)器碼 源程序
026E 4179 AJMP SETHH
0270 00 NOP
0271 00 NOP
0272 21E1 AJMP WAITFK ;返回等待鍵釋放
0274 753D33 SETM30: MOV ADDRES, #MH ;移入分位的地址
0277 21E1 AJMP WAITFK ;轉(zhuǎn)向等待鍵釋放
0279 753D35 SETHH: MOV ADDRES, #HH ;移入時(shí)位的地址
027C 21E1 AJMP WAITFK ;轉(zhuǎn)向等待鍵釋放
;
027E C23A ENDMEN: CLR HPLMOD ;恢復(fù)不閃爍顯示方式
0280 22 RET
0281 00 NOP
0282 00 NOP
0283 02040D LJMP ERR ;軟件陷阱
;
;****************
; 到點(diǎn)工作程序 ;
;****************
0286 8C36 ACTION: MOV L0, R4 ;移入工作模式選擇數(shù)
0288 0536 INC L0 ;送顯示數(shù)"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 ;設(shè)定顯示方式不閃爍
029A D23A SETB HPLMOD
029C EC MOV A, R4 ;移入工作模式選擇數(shù)
029D 23 RL A ;
029E 9002A2 MOV DPTR, #A_TAB
02A1 73 JMP @A+DPTR ;根據(jù)工作模式選擇數(shù)跳轉(zhuǎn)
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 ;工作模式一(或二): 關(guān)繼電器
02B1 753F82 MOV R_MOD, #82H ;響鈴模式參數(shù)#82H
02B4 7A96 MOV R2, #96H ;響鈴次數(shù)參數(shù)#96H
02B6 7102 ACTF11: ACALL RING ;調(diào)用響鈴子程序
02B8 30B135 JNB MKEY, ENDACT ;等待鍵按下
02BB 30B032 JNB FKEY, ENDACT ; 有鍵按下則結(jié)束響鈴
02BE DAF6 DJNZ R2, ACTF11 ;次數(shù)未滿繼續(xù)響鈴
02C0 753FFF MOV R_MOD, #0FFH ;參數(shù)#0FF使響鈴無效
02C3 41B6 AJMP ACTF11 ;無鍵按下返回
02C5 00 NOP
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實(shí)例13\13.ASM
頁 10
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -