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

📄 digital clock (1).asm

📁 Proteus在MCS-51%26ARM7系统中的应用百例 Proteus在MCS-51%26ARM7系统中的应用百例
💻 ASM
字号:
LEDBUF	EQU		30H					;显示码缓存区
HOUR	EQU		40H
MINUTE	EQU		41H
SECOND	EQU		42H
C100us	EQU		43H
TICK	EQU		10000				;置中断次数
T100us	EQU		256-100				;置定时器初始值
		LJMP	START				;跳转至主程序
		ORG		000BH				;定时器0中断入口
T0INT:	PUSH	PSW 				;状态保护
		PUSH	ACC
		MOV		A,C100us+1
		JNZ		GOON				;计数值是否为0
		DEC		C100us
GOON:	DEC		C100us+1
		MOV		A,C100us
		ORL		A,C100us+1
		JNZ		EXIT
		MOV		C100us,#HIGH(TICK)	;重置计数值
		MOV		C100us+1,#LOW(TICK)
		INC		SECOND				;秒值加一
		MOV		A,SECOND
		CJNE	A,#60,EXIT			;判断秒值是否为60
		MOV		SECOND,#0			;秒值为60,则清0
		INC		MINUTE				;分值加一
		MOV		A,MINUTE
		CJNE	A,#60,EXIT			;判断分值是否为60
		MOV		MINUTE,#0			;分值为60,则清0
		INC		HOUR				;小时值加一
		MOV		A,HOUR
		CJNE	A,#24,EXIT			;判断小时值是否为24
		MOV		HOUR,#0				;小时值为24,则清0
EXIT:	POP		ACC
		POP		PSW
		RETI
DELAY:				        		;延时子程序
		MOV		R7,#0FFH
DELAYLOOP:
		DJNZ	R7,DELAYLOOP
		DJNZ	R6,DELAYLOOP
		RET
LEDMAP:	DB		3FH,06H,5BH,4FH		;八段数码管显示码
		DB		66H,6DH,7DH,07H
		DB		7FH,6FH,77H,7CH
		DB		39H,5EH,79H,71H
DISPLAYLED:
		MOV		R0,#LEDBUF
		MOV		R1,#6				;共6个八段管
		MOV		R2,#01111111B		;位扫描码初值
LOOP:	MOV		A,#0
		MOV		P0,A				;关所有八段管
		MOV		A,@R0
		MOV		P0,A
		MOV		A,R2
		MOV		P3,A				;显示一位八段管
		MOV		R6,#01H
		CALL	DELAY
		MOV		A,R2				;显示下一位
		RR		A
		MOV		R2,A
		INC		R0
		DJNZ	R1,LOOP
		RET
T0LED:	MOV		DPTR,#LEDMAP		;将字段码转换显示码
		MOVC	A,@A+DPTR
		RET
START:	MOV		TMOD,#02H			;定时器工作方式2
		MOV		TH0,#T100us			;置定时器初始值
		MOV		TL0,#T100us
		MOV		IE,#10000010B		;EA=1,IT0=1
		MOV		HOUR,#0				;显示初始值
		MOV		MINUTE,#0
		MOV		SECOND,#0
		MOV		C100us,#HIGH(TICK)
		MOV		C100us+1,#LOW(TICK)
		SETB	TR0					;启动定时器0
MLOOP:	MOV		A,HOUR				;显示小时值十位
		MOV		B,#10
		DIV		AB
		CALL	T0LED
		MOV		LEDBUF,A			;将十位值送显示码缓存区
		MOV		A,B					;显示小时值个位
		CALL	T0LED
		ORL		A,#80H				;显示小数点
		MOV		LEDBUF+1,A			;送显示码缓存区
		MOV		A,MINUTE			;显示分钟值十位
		MOV		B,#10
		DIV		AB
		CALL	T0LED
		MOV		LEDBUF+2,A			;将十位值送显示码缓存区
		MOV		A,B					;显示分钟个位值
		CALL	T0LED		  		
		ORL		A,#80H				;显示小数点
		MOV		LEDBUF+3,A			;送显示码缓存区
		MOV		A,SECOND
		MOV		B,#10				;显示秒十位值
		DIV		AB
		CALL	T0LED
		MOV		LEDBUF+4,A			;送显示码缓存区
		MOV		A,B
		CALL	T0LED
		MOV		LEDBUF+5,A
		CALL	DISPLAYLED			;调用显示子程序
		LJMP	MLOOP
		END

⌨️ 快捷键说明

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