?? 13.lst
?? 51單片機匯編
?? LST
?? 第 1 頁 / 共 4 頁
字號:
??
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 + -