Proteus VSM Studio汇编 + 8位数码管时钟按键可调

Proteus VSM Studio汇编 + 8位数码管时钟按键可调


  • Proteus基于VSM Studio编译仿真演示
    在这里插入图片描述

VSM Studio代码(.asm)

基于Keil编译器
在这里插入图片描述

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		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
		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
		CLR		P3.6
		MOVC	A,@A+DPTR
		MOV		P0,A
		LCALL	DELAY
		SETB	P3.6
		MOV		A,B
		CLR		P3.7
		MOVC	A,@A+DPTR
		MOV		P0,A
		LCALL	DELAY
		SETB	P3.7

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

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

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

	   	MOV		A,HOUR		;显示小时
		MOV		B,#10
		DIV		AB
		CLR		P3.0
		MOVC	A,@A+DPTR
		MOV		P0,A
		LCALL	DELAY
		SETB	P3.0
		MOV		A,B
		CLR		P3.1
		MOVC	A,@A+DPTR
		MOV		P0,A
		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

程序源码和仿真资源

程序可以基于Proteus中的VSM Studio代码编译,也可以通过外部keil软件编译后,导入hex文件仿真,本实验基于Proteus8.9SP2平台。

链接:https://pan.baidu.com/s/1cCiI6KyQPN6dgpq9rJjclA 
提取码:bu07

  抓不住的沙,你就放下一把;抓不住的人,那么放下也罢。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值