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

📄 wildman.asm

📁 数字电子钟程序
💻 ASM
字号:
LEDBUF	EQU	60H		;显示缓冲区
HOUR	EQU	40H
MINUTE	EQU	41H
SECOND	EQU	42H
C100US	EQU	43H
TICK	EQU	10000		;中断次数计数器
T100US	EQU	256-50		;100US定时初值
	
	ORG	0000H		;复位入口
	LJMP	START		
	ORG	000BH		;定时器T0中断入口
	LJMP	T0INT
	ORG	0030H

LEDMAP:	
	DB	0C0H,0F9H,0A4H,0B0H,99H
	DB	92H,82H,0F8H,80H,90H
	DB	40H,0F9H,24H,30H,19H	;数码管显示代码
	DB	12H,02H,78H,00H,10H
DELAY:	MOV	R7,#0		;延时子程序
DELAYLOOP:
	DJNZ	R7,DELAYLOOP
	DJNZ	R6,DELAYLOOP
	RET

DISPLAYLED:			;显示子程序
	MOV	50H,#0FBH	
	MOV	51H,#0F7H	
	MOV	52H,#0EFH
	MOV	53H,#0DFH
	MOV	54H,#0BFH
	MOV	55H,#7FH
	MOV	R0,#LEDBUF
	MOV	R2,#6		;共6个数码管
	MOV	R1,#50H		;从左边开始显示
LOOP:	MOV	A,@R0
	MOV	P0,A
	MOV	A,@R1
	MOV	P2,A		;显示一位八段管
	MOV	R6,#1
	CALL	DELAY
	INC	R1
	INC	R0
	DJNZ	R2,LOOP
	RET
		
TOLED:	MOV	DPTR,#LEDMAP		;查表取显示代码子程序
	MOVC	A,@A+DPTR
	RET

START:	MOV	TMOD,#02H		;主程序
	MOV	TH0,#T100US		;设置T0工作方式及初值
	MOV	TL0,#T100US
	MOV	IE,#10000010B		;开中断
	MOV	HOUR,#0
	MOV	MINUTE,#0
	MOV	SECOND,#0
	MOV	C100US,#HIGH(TICK)
	MOV	C100US+1,#LOW(TICK)
	SETB	TR0			;启动T0
MLOOP:	MOV	A,HOUR
	MOV	B,#10
	DIV	AB
	CALL	TOLED
	MOV	LEDBUF,A
	MOV	A,B
	CALL	TOLED
	ORL	A,#80H
	MOV	LEDBUF+1,A
	MOV	A,MINUTE
	MOV	B,#10
	DIV	AB
	CALL	TOLED
	MOV	LEDBUF+2,A
	MOV	A,B
	CALL	TOLED
	ORL	A,#80H
	MOV	LEDBUF+3,A
	MOV	A,SECOND
	MOV	B,#10H
	DIV	AB
	CALL	TOLED
	MOV	LEDBUF+4,A
	MOV	A,B
	CALL	TOLED
	MOV	LEDBUF+5,A
	CALL	DISPLAYLED
	LJMP	MLOOP

T0INT:	PUSH	PSW			;定时器T0中断服务程序
	PUSH	ACC
	MOV	A,C100US+1
	JNZ	GOON
	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
	MOV	SECOND,#0
	INC	MINUTE
	MOV	A,MINUTE
	CJNE	A,#60,EXIT
	MOV	MINUTE,#0
	INC	HOUR
	MOV	A,HOUR
	CJNE	A,#24,EXIT
	MOV	HOUR,#0
EXIT:	POP	ACC
	POP	PSW
	RETI
	END

⌨️ 快捷键说明

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