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

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Proteus VSM Studio汇编 + 8位数码管时钟按键可调的主要内容,如果未能解决你的问题,请参考以下文章

Proteus VSM Studio汇编 +交通信号灯模拟

Proteus VSM Studio汇编 + 蜂鸣器播放谱曲八月桂花香

Proteus VSM Studio汇编驱动直流电机按键正反转控制

Proteus基于VSM Studio驱动LM016驱动模板

Proteus仿真VSM Studio Arduino UNO串口通讯示例

基于Proteus VSM Studio Arduino UNO RGB效果仿真