?? 6wmb-main.asm
字號:
;-------------------------------------------------------------------
;
;;
;;;實用秒表數(shù)碼管顯示程序
;;; 杜洋 20050625pm
;;;6位數(shù)碼管中頭三位是秒顯示(最大999秒)
;;;后3位是毫秒(千進(jìn)制,最大999毫秒),最大精度為1MS.
;;;段碼為P0口,數(shù)位碼為P2口。
;;;3個控制鍵:P3.2是開始計時,P3.3是停止,P3.4是清零。
;;
;
;--------------------------------------------------------------------
WS EQU P2 ;WS(位數(shù))
DM EQU P0 ;DM(段碼)
WS_5 EQU P2.5 ;WS_5(第6位的顯示)
KEY_1 EQU P3.2 ;開始計時或繼續(xù)計時
KEY_2 EQU P3.3 ;計時中斷
KEY_3 EQU P3.4 ;顯示清零
;---------------------------------------------------------------------
ORG 00H
JMP START
ORG 0BH ;定時器T0入口
JMP TT0
ORG 13H ;外中斷1入口
JMP INT
ORG 30H
;----------------------------------------------------------------------
START:
MOV R0,#70H ;清70H-7AH共11個內(nèi)存單元
MOV R7,#0BH ;
CLEARDISP:
MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV TMOD,#01H ;設(shè)T0為16位定時器
MOV TH0,#0FCH ;50MS定時初值(T0計時用)
MOV TL0,#18H ;50MS定時初值(1MS延時,F(xiàn)C18H)
SETB EA
SETB IT1 ;INT1下沉觸發(fā)
LOOP0:
MOV P3,#0FFH
MOV P0,#0
MOV P2,#0FFH
LOOP1:; ;等待開始
JNB KEY_1,KEY1 ;等待按鍵開始
JNB KEY_3,KEY3 ;(如果用單片機硬件按鍵復(fù)位可省去此鍵)
CALL DISPLAY
JMP LOOP1
KEY1:; ;開始鍵消抖動
CALL DS20MS
JB KEY_1,LOOP1
SETB EX1
SETB TR0 ;開啟T0定時器
SETB ET0
JMP LOOP0
KEY3: ;清零鍵去抖
CALL DS20MS
JB KEY_3,LOOP0
CLR TR0
CLR ET0
JMP START
;---------------------------------------------------------
TT0: ;定時中斷
CLR TR0
CLR ET0
MOV R0,#70H
TTT1:
MOV A,@R0
INC A
CJNE A,#10,GO1
MOV A,#0
MOV @R0,A
INC R0
CJNE R0,#76H,TTT1
MOV R0,#70H
GO1: ;中斷結(jié)束
MOV @R0,A
MOV TH0,#0FCH
MOV TL0,#18H
SETB ET0
SETB TR0
RETI
;-------------------------------------------------------------
INT: ;停止鍵按下處理
CLR ET0 ;(為了保證停止時間的精準(zhǔn),采用了中斷停止)
CLR TR0
RETI
;-------------------------------------------------------------
DISPLAY: ;顯示程序(顯示程序占時20MS)
MOV R1,#70H
MOV R5,#0FEH
PLAY:
MOV A,R5
MOV WS,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DM,A
LCALL DL1MS ;顯示1MS
INC R1
MOV A,R5
JNB ACC.5,ENDOUT
RL A
MOV R5,A
JMP PLAY
ENDOUT:
SETB WS_5
MOV DM,#0FFH
MOV WS,#0FFH
RET
TAB: ;數(shù)碼顯示段碼表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;------------------------------------------------------------
;延時程序
DL1MS: ;1MS延時程序,LED顯示程序用
MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
DS20MS: ;20MS延時程序
CALL DISPLAY
CALL DISPLAY
RET
;-------------------------------------------------------------
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -