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

📄 watch.asm

📁 一个时钟源程序
💻 ASM
字号:
KEY1	equ	P2.7
KEY2	equ	P2.6
KEY3	equ	P2.5
KEY4	equ	P2.4

		bseg	;位变量 
stop:			;停止/计秒

		dseg	at	30h	;内部RAM变量
buf:		ds	4	;显示缓冲区
ms:		ds	1	;计秒辅助变量
disppoint:	ds 	1	;显示数码管指针 
	
	CSEG  AT   0
	jmp	start
	org	0003h		;外部中断0
	reti
	org	000bh		;定时器0溢出
	jmp	timer0
	org	0013h 	;外部中断1
	reti
	org	001bh		;定时器1溢出
	reti
	org	0023h		;串行口
	reti
	org	002bh		;定时器2溢出
	reti

	org	20h
seg:	db	022h	
	db	0fah	
	db	031h	
	db	025h	
	db	0ach	
	db	064h	
	db	060h	
	db	02fh	
	db	020h	
	db	024h
	db	0ffh
	db	0ffh
	db	0ffh
	db	0ffh
	db	0ffh
	db	0ffh
sel:	db	0feh
	db	0fdh
	db	0fbh
	db	0f7h

timer0:	;定时器0服务程序
	clr	EA
	mov	th0,#(256-4) ;about 1000uS on 12MHz
	mov	tl0,#0
;轮换显示数码管:
	mov	a,disppoint
	add	a,#buf	;显示缓冲区
	mov	r0,a
	mov	a,@r0
	anl	a,#0fh
	mov	dptr,#seg
	movc	a,@a+dptr
	mov	p0,a

	mov	a,disppoint
	mov	dptr,#sel
	movc	a,@a+dptr
	mov	p2,a
	mov	a,disppoint
	inc	a
	anl	a,#3
	mov	disppoint,a
;秒表计时:
	jb	stop,b0009 ;如果在停止状态,不计时
	dec	ms
	mov	a,ms
	jnz	b0009		
	mov	ms,#100
	inc	buf+3	;个位数码管+1
	mov	a,buf+3
	cjne	a,#10,b0009 ;>10?
	mov	buf+3,#0
	inc	buf+2		;十位数码管+1
	mov	a,buf+2
	cjne	a,#10,b0009
	mov	buf+2,#0
	inc	buf+1		;百位数码管+1
	mov	a,buf+1
	cjne	a,#10,b0009
	mov	buf+1,#0
	inc	buf+0		;千位数码管+1
	mov	a,buf+0
	cjne	a,#10,b0009
	mov	buf+0,#0

b0009:
	setb	EA
	reti
delay:
	mov	r7,#0
	mov	r6,#0
d001:
	djnz	r7,d001
	djnz	r6,d001
	ret
;------------
start:
	mov	buf,#0
	mov	buf+1,#0
	mov	buf+2,#0
	mov	buf+3,#0
	clr	stop
	mov	tmod,#01h
	mov	th0,#(256-4) ;about 1000uS on 12MHz
	mov	tl0,#0
	setb	TR0
	setb	EA
loop:
	setb	ET0
	jb	KEY1,l001
	clr	stop		;开始计秒
	call	delay
l001:
	jb	KEY2,l002
	setb	stop		;停止计秒
	call	delay
l002:
	jb	KEY3,l003	;清零并且停止
	setb	stop
	mov	buf,#0
	mov	buf+1,#0
	mov	buf+2,#0
	mov	buf+3,#0
	call	delay
l003:
	jmp	loop	


	end

⌨️ 快捷键说明

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