⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6wmb-main.asm

📁 一个用单片机做的秒表程序
💻 ASM
字号:

;-------------------------------------------------------------------
;
;;
;;;实用秒表数码管显示程序
;;; 杜洋  20050625pm
;;;6位数码管中头三位是秒显示(最大999秒)
;;;后3位是毫秒(千进制,最大999毫秒),最大精度为1MS.
;;;段码为P0口,数位码为P2口。
;;;3个控制键:P3.2是开始计时,P3.3是停止,P3.4是清零。
;;
;
;--------------------------------------------------------------------
WS  EQU P2		   ;WS(位数)
DM  EQU P0		   ;DM(段码)
WS_5 EQU P2.5	   ;WS_5(第6位的显示)
KEY_1 EQU P3.2	   ;开始计时或继续计时
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个内存单元
MOV   R7,#0BH      	;
CLEARDISP:  
MOV   @R0,#00H      	;
INC   R0             ;
DJNZ  R7,CLEARDISP   ;

MOV 	TMOD,#01H      ;设T0为16位定时器
MOV   TH0,#0FCH   	;50MS定时初值(T0计时用)
MOV   TL0,#18H   	   ;50MS定时初值(1MS延时,FC18H)

SETB  EA
SETB  IT1            ;INT1下沉触发
            
LOOP0:
MOV P3,#0FFH
MOV P0,#0
MOV P2,#0FFH

LOOP1:;				   ;等待开始
JNB KEY_1,KEY1		   ;等待按键开始
JNB KEY_3,KEY3		   ;(如果用单片机硬件按键复位可省去此键)
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:					 ;中断结束
MOV @R0,A
MOV  TH0,#0FCH   	   
MOV  TL0,#18H   	      
SETB ET0
SETB TR0
RETI
			 
;-------------------------------------------------------------
INT:					 ;停止键按下处理
CLR ET0					  ;(为了保证停止时间的精准,采用了中断停止)
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: 						   ;数码显示段码表
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



                     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -