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

📄 aa.asm

📁 数字钟程序 数字钟程序数字钟序数字钟程序
💻 ASM
字号:
S_SET	BIT		P1.0						;数字钟秒控制位
M_SET	BIT		P1.1						;分钟控制位
H_SET	BIT		P1.2						;小时控制位
SECOND	EQU		30H
MINUTE	EQU		31H
HOUR	EQU		32H
TCNT	EQU		34H
		ORG	00H
		SJMP	START
		ORG	0BH
		LJMP	INT_T0

START:   MOV	 P0,#3FH
         CLR      P3.0
          CLR      P3.1
          
          CLR      P3.3
          CLR      P3.4
		  
          CLR     P3.6
          CLR    P3.7
		   CLR P1.4
	    	
         JB P1.3,START


        MOV	DPTR,#TABLE
		MOV	HOUR,#0						;初始化
		MOV	MINUTE,#0
		MOV	SECOND,#0
		MOV	TCNT,#0
		MOV	TMOD,#01H
		MOV	TH0,#(65536-50000)/256		;定时50毫秒
		MOV	TL0,#(65536-50000)MOD 256
		MOV	IE,#82H
		SETB	TR0
;****************************************************
;判断是否有控制键按下,是哪一个键按下
        A1:	LCALL	DISPLAY		
		JNB	S_SET,S1
		JNB	M_SET,S2
		JNB	H_SET,S3				
		LJMP	A1
        S1:	LCALL	DELAY		;去抖动
		JB	S_SET,A1
		
		INC	SECOND		;秒值加1
		MOV	A,SECOND
		CJNE	A,#60,J0	;判断是否加到60秒
		MOV	SECOND,#0
		LJMP	K1
	S2:	LCALL	DELAY
		JB	M_SET,A1
		
	K1:	INC	MINUTE		;分钟值加1
		MOV	A,MINUTE
		CJNE	A,#60,J1	;判断是否加到60分
		MOV	MINUTE,#0
	  
		LJMP	K2
	S3:	LCALL	DELAY
		JB	H_SET,A1
		
	K2:	INC	HOUR		;小时值加1
		MOV	A,HOUR
		CJNE	A,#24,J2	;判断是否加到24小时
		MOV	HOUR,#0
		MOV	MINUTE,#0
		MOV	SECOND,#0
		LJMP	A1
;****************************************************
;等待按键抬起
J0:		JB	S_SET,A1
		LCALL	DISPLAY
		SJMP	J0
J1:		JB	M_SET,A1
		LCALL	DISPLAY
		SJMP	J1
J2:		JB	H_SET,A1
		LCALL	DISPLAY
		SJMP	J2
;***********************************************
;定时器中断服务程序,对秒,分钟和小时的计数
INT_T0:	MOV		TH0,#(65536-50000)/256
		MOV	TL0,#(65536-50000)MOD 256		
		INC	TCNT
		MOV	A,TCNT
		CJNE	A,#20,RETUNE	;计时1秒
		INC	SECOND
		MOV	TCNT,#0
		MOV	A,SECOND
		CJNE	A,#60,RETUNE
		INC	MINUTE
		MOV	SECOND,#0
		MOV	A,MINUTE
		CJNE	A,#60,RETUNE
		 LCALL	DELAY
		SETB P1.4
		LCALL	DELAY
		CLR P1.4
		LCALL	DELAY
		LCALL	DELAY
		INC	HOUR
		MOV	MINUTE,#0
		MOV	A,HOUR
		CJNE	A,#24,RETUNE
		MOV	HOUR,#0
		MOV	MINUTE,#0
		MOV	SECOND,#0
		MOV	TCNT,#0
RETUNE:	RETI
;******************************************
;显示控制子程序
DISPLAY:        MOV	A,SECOND	;显示秒
		MOV	B,#10
		DIV	AB
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.6
  		LCALL	DELAY
		SETB	P3.6
		MOV	A,B
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.7
		LCALL	DELAY
		SETB	P3.7

		CLR	P3.5
		MOV	P0,#40H		;显示分隔符
		LCALL	DELAY
		SETB	P3.5

		MOV	A,MINUTE	;显示分钟
		MOV	B,#10
		DIV	AB
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.3
		LCALL	DELAY
		SETB	P3.3
		MOV	A,B
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.4
		LCALL	DELAY
		SETB	P3.4

		CLR	P3.2
		MOV	P0,#40H		;显示分隔符
		LCALL	DELAY
		SETB	P3.2

	   	MOV	A,HOUR		;显示小时
		MOV	B,#10
		DIV	AB
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.0
		LCALL	DELAY
		SETB	P3.0
		MOV	A,B
		
		MOVC	A,@A+DPTR
		MOV	P0,A
                CLR	P3.1
		LCALL	DELAY
		SETB	P3.1
		RET

TABLE: 	DB 	3FH,06H,5BH,4FH,66H
        DB	6DH,7DH,07H,7FH,6FH
DELAY:	MOV	R6,#10
D1:		MOV	R7,#250
		DJNZ	R7,$
		DJNZ	R6,D1
		RET

		END

⌨️ 快捷键说明

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