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

📄 时钟与秒表.asm

📁 是我在电子竞赛期间写的一些单片机汇编程序
💻 ASM
字号:
ORG 0000H
AJMP MAIN

ORG 000BH		;定时器计数器0的定口地地址				
AJMP T0INT

ORG 001BH		;定时器计数器1的定口地地址
AJMP T1INT

ORG 0030H
MAIN:			;此程序的跑表部分由TO计数完成,计时部分由T1计数完成.
	MOV 30H,#00H
	MOV 31H,#00H
	MOV 32H,#00H
	
	MOV 40H,#00H
	MOV 41H,#00H
	MOV 42H,#00H

	MOV 50H,#00H
	MOV 51H,#00H
	MOV 52H,#00H

	MOV SP,#60H
	MOV TMOD,#10H	;定时器计数器1工作方式1,同时设置定时器T0为工作方式0
	MOV TH0,#0CH
	MOV TL0,#78H
	SETB ET0

	MOV TH1,#03CH	
	MOV TL1,#0AFH	
	SETB ET1			
	SETB TR1		
	SETB EA		

	
DISPLAY:
	MOV A,50H
	CJNE A,#00H,KGD	;如果50H中的数不等于0则转移
	MOV R0,#41H
	ACALL INKEY
	AJMP DT
KGD:	
	CJNE A,#01H,DT
	MOV R0,#31H
	ACALL OUTKEY
	MOV A,51H
	CJNE A,#00H,DT
	ACALL INKEY
DT:	
	ACALL DISPLAY1	
	AJMP DISPLAY
	
DISPLAY1:			;显示子程序
	MOV A,@R0
	ANL A,#0FH
	ACALL TABLE
	MOV P2,A
	CLR P0.6
	ACALL DELAY
	SETB P0.6
	
	MOV A,@R0
	SWAP A
	ANL A,#0FH
	ACALL TABLE
	MOV P2,A
	CLR P0.5
	ACALL DELAY
	SETB P0.5

	INC R0
	MOV A,@R0
	ANL A,#0FH
	ACALL TABLE 
	MOV P2,A
	CLR P0.4
	ACALL DELAY
	SETB P0.4

	MOV A,@R0
	SWAP A
	ANL A,#0FH
	ACALL TABLE
	MOV P2,A
	CLR P0.3
	ACALL DELAY
	SETB P0.3
	
	RET


OUTKEY:
	MOV P3,#0FFH
	JB P3.5,OUT
DD:	ACALL BUZZER
	JNB P3.5,DD			;去抖
	INC 51H
	MOV A,51H
	CJNE A,#01H,DD22
	MOV TH0,#3CH
	MOV TL0,#0AFH
	SETB TR0
	AJMP OUT
DD22:	CJNE A,#02H,DD33
	CLR TR0
	AJMP OUT
DD33:			
	MOV 51H,#00H
	MOV 30H,#00H
	MOV 31H,#00H
	MOV 32H,#00H
OUT:	RET

INKEY:	
	MOV P3,#0FFH
	JB P3.3,NEXT1		;P3.3等于1则转移	
KK:	ACALL BUZZER
	JNB P3.3 ,KK
	INC 50H
	MOV A,50H
	CJNE A,#01H,KK22
	AJMP NEXT1
KK22:	MOV 50H,#00H
NEXT1:  RET 	
	
	
DELAY:	MOV	55H,#10H
DELAY0:	MOV	54H,#50H
DELAY1:	DJNZ	54H,DELAY1
		DJNZ	55H,DELAY0
		RET

TABLE:  INC     A	          ;基地址加一
        MOVC    A,       @A+PC    ;查段码表,取其相应的段码
        RET

DB      0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,090H	;0-9的段码

BUZZER:
	CLR P1.0
	ACALL DELAY
	SETB P1.0
	RET	

T0INT:
	PUSH ACC
	CLR	TR0
	MOV	TH0,	#0CH
	MOV	TL0,	#78H
	INC	30H
	MOV 	A,30H
	CJNE	A,#02H,EXIT		;得到了1%秒
	MOV	30H,	#00H
	INC	31H
	MOV	A,	31H
	DA	A
	MOV 	31H,A
	CJNE	A,#100H,EXIT
	MOV 	31H,#00H
	INC	32H
	MOV	A,	32H
	DA	A
	MOV	32H,	A
	CJNE	A,#100H,EXIT
	MOV	32H,	#00H	;前面用到了 R0,R1,R2
EXIT:	
	SETB TR0
	POP ACC		
	RETI	

T1INT:
	PUSH ACC
	CLR TR1						
	MOV TH1,#3CH
	MOV TL1,#0AFH
	INC 40H
	MOV A,40H
	CJNE A,#14H,EXIT1
	MOV 40H,#00H
	INC 41H
	MOV A,41H
	DA A
	MOV 41H,A
	CJNE A,#60H,EXIT1
	MOV 41H,#00H
	INC 42H
	MOV A,42H
	DA A
	MOV 42H,A
	CJNE A,#60H,EXIT1
	MOV 42H,#00H
EXIT1:	
	SETB TR1
	POP ACC
	RETI 

	END 


     

⌨️ 快捷键说明

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