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

📄 clock.txt

📁 电子表程序,数码管显示,显示时分秒,三键控制,带误差调整功能.
💻 TXT
字号:
	ORG	0000H
	LJMP	main
	ORG     000BH
	LJMP    ICT0 
MAIN:	mov	a,#0ffh		;谁备读p0口
	mov	p0,a
	mov	r1,#00h		;闪动位置
	mov	r2,#00h		;
	mov	r3,#00h		;500ms定时
	mov	r4,#00h
	mov	r5,#00h
	mov	r6,#00h		;闪动标志
	mov	r7,#00h		;1s闪动标志
	mov	46h,#00h 
	mov	49h,#00h
	mov	a,70h		;判第一次加电
	cjne	a,#05h,main1	;51h,50h,第一次加电标志
	mov	a,71h
	cjne	a,#10h,main1
	ljmp	start
main1:	MOV	30H,#01H	;小时十分位
	mov	70h,#05h
	mov	71h,#10h
	MOV	31H,#02H	;小时个位
	mov	32h,#00h	;分钟十分位
	MOV	33H,#00H	;分钟个位
	MOV	34H,#00H	;秒十分位
	MOV	35H,#00H	;秒个位
	MOV	36H,#00H	;月定时
	MOV	37H,#00H	;显示延时计数器
	MOV	38H,#00H	;月误差存储器
	MOV	39H,#00H	;62.5MS计数器
	mov	50h,#0b0h	;定时器低位数单元
	mov	51h,#0bh	;定时器高位数单元
	MOV	R0,#00H		;显示位数码管计数单元
	mov	r7,#00h		;秒闪状态单元
	MOV	R1,#00H		;
	MOV	P1,#0FFH	;位输出口
	MOV	P2,#00H		;段输出口
start:	mov	tmod,#01h	;定时器工作方式2
	mov	tl0,50h		;置初值
	mov	th0,51h		;
	setb	TR0		;启动T0
	setb	ET0		;开T0中断
	setb	EA		;开cpu中断
	setb	px0
	setb	it0
	setb	it1
	SETB	EX0
	SETB	EX1
	ljmp	award
ICT0:	mov	tl0,50h		;重装初值
	mov	th0,51h
	inc	39h			;1/16s计时+1
	reti
award:	lcall	replay			;调1ms延时
	inc	37h
	inc	r3
	cjne	r3,#0ffh,awarda		;500ms定时
	mov	r3,#00h
	mov	a,r6
	cpl	a
	mov	r6,a
awarda:	mov	A,37H			;
	cjne	a,#03h,award1		;;判显示延时等3,等清0不等转
	mov	37h,#00h
	lcall	disp
	inc	r0			;显示位加1	
set:	cjne	r1,#00h,key111		;判设置标志不为0转设置
set1:	jb	p0.0,award1		;判设置键有无按下
	clr	ea
	lcall	key1
key111:	lcall	key
award1:	mov	a,39h			;0.5s置闪烁定时
	cjne	a,#08h,award2
	mov	r7,#0ffh
award2:cjne	a,#10h,award3		;到1S进位
	mov	39h,#00h		;
	mov	r7,#00h			;清闪烁标志
	inc	35h		
award3:	mov	A,35H
	cjne	a,#0ah,award9		;;判秒个位
	mov	35h,#00h
	inc	34h
award4:	mov	A,34H
	cjne	a,#06h,award9		;;判秒十位
	mov	34h,#00h
	inc	33h		
award5:	mov	a,33h
	cjne	a,#0ah,award9		;;判分个位
	mov	33h,#00h
	inc	32h
award6:	mov	a,32h
	cjne	a,#06h,award9		;;判分十位
	mov	32h,#00h
	inc	31h		
award7:	mov	a,31h
	cjne	a,#0ah,award8		;;小时个位够10,10位+1
	mov 	31h,#00h
	inc	30h
award8:	mov	a,30h
	cjne	a,#02h,award9
	nop
	nop
	nop			
	mov	a,31h
	cjne	a,#04h,award9	;判小时个位等4判十位等2送01数到小时两位
	mov	31h,#00h
	mov	30h,#00h
	inc	36h		;月计时加1
	mov	a,36h
	cjne	a,#1eh,award9	;判月到30
	mov	36h,#00h	;清月计数器
	mov	a,38h		;移月差到A
	mov	b,#10h		;移16到B
	div	ab		;A/B
	mov	3ch,a		;商送3CH
	mov	3dh,b		;余数送3DH
	mov	a,34h		;
	subb	a,3ch		;秒十位减误差高位
	mov	34h,a		;
	mov	a,35h		;
	subb	a,3dh		;秒低位减误差低位
	mov	35h,a		;
award9:	ljmp	award			;;循环判断	
DISP:	cjne	r0,#07h,dis		;显示小时十分位
	MOV	R0,#00H
dis:	cjne	r1,#00h,dis12		;判闪位计数器
	lcall	disa
dis12:	cjne	r1,#07h,disa		;判闪位计数器满转闪动显示方式
	mov	r1,#00h
	setb	ea			;开中断
	lcall	disa
	ret
DISa:	CJNE	R0,#00H,DISa1		;
	cjne	r1,#06h,disb1
	cjne	r6,#00h,disb1
	mov	p1,#00000000b
	acall	disp1
	ret
disb1:	mov	p1,#00000001b
	acall	disp1
	ret
disa1:	cjne	r0,#01h,disa2		;显示小时个分位
	cjne	r1,#05h,disb2
	cjne	r6,#00h,disb2
	mov	p1,#00000000b
	acall	disp2
	ret
disb2:	mov	p1,#00000010b
	acall	disp2
	ret
disa2:	cjne	r0,#02h,disa3		;显示分个分位
	cjne	r1,#04h,disb3
	cjne	r6,#00h,disb3
	mov	p1,#00000000b
	acall	disp3
	ret
disb3:	mov	p1,#00000100b
	acall	disp3
	ret
disa3:	cjne	r0,#03h,disa4		;显示分个分位
	cjne	r1,#03h,disb4
	ljmp	disb42
disb41:	cjne	r1,#09h,disb4
disb42:	cjne	r6,#00h,disb4
	mov	p1,#00000000b
	acall	disp4
	ret
disb4:	mov	p1,#00001000b
	acall	disp4
	ret
disa4:	cjne	r0,#04h,disa5		;显示秒个分位
	cjne	r1,#02h,disb51
	ljmp	disb52
disb51:	cjne	r1,#08h,disb5
disb52:	cjne	r6,#00h,disb5
	mov	p1,#00000000b
	acall	disp4
	ret
disb5:	mov	p1,#00010000b
	acall	disp5
	ret
disa5:	cjne	r0,#05h,disa6		;显示秒个分位
	cjne	r1,#01h,disb61
	ljmp	disb63
disb61:	cjne	r1,#07h,disb62
	ljmp	disb63
disb62:	cjne	r1,#0ah,disb6
disb63:	cjne	r6,#00h,disb6
	mov	p1,#00000000b
	acall	disp6
	ret
disb6:	mov	p1,#00100000b
	acall	disp6
disa6:	ret
dispb2:	cjne	a,#00h,play1a
	mov	p2,#01000000b
	ret
play1a:	cjne	A,#01h,play2a		;判时间数1
	mov	p2,#01111001b
	ret
play2a:	cjne	A,#02h,play3a		;2
	mov	p2,#00100100b
	ret
play3a:	cjne	A,#03h,play4a		;3
	mov	p2,#00110000b
	ret
play4a:	cjne	A,#04h,play5a		;4
	mov	p2,#00011001b
	ret
play5a:	cjne	A,#05h,play6a		;5
	mov	p2,#00010010b
	ret
play6a:	cjne	A,#06h,play7a		;6
	mov	p2,#00000010b
	ret
play7a:	cjne	A,#07h,play8a		;7
	mov	p2,#01111000b
	ret
play8a:	cjne	A,#08h,play9a		;8
	mov	p2,#00000000b
	ret
play9a:	cjne	A,#09h,play10a		;9
	mov	p2,#00010000b
	ret
play10a:cjne	A,#0ah,play11a		;a
	mov	p2,#00000000b
	ret
play11a:cjne	A,#0bh,play12a		;b
	mov	p2,#00000000b
	ret
play12a:cjne	A,#0ch,play13a		;c
	mov	p2,#00000000b
	ret
play13a:cjne	A,#0dh,play14a		;d
	mov	p2,#00000000b
	ret
play14a:cjne	A,#0eh,play15a		;e
	mov	p2,#00000000b
	ret
play15a:cjne	A,#0fh,dispba		;f
	mov	p2,#00000000b
dispba:	ret
disp1:	mov	a,30h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
disp2:	mov	a,31h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
disp3:	mov	a,32h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
disp4:	mov	a,33h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
disp5:	mov	a,34h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
disp6:	mov	a,35h
	cjne	r7,#00h,dispb1
	lcall	dispb
	ret
dispb1:	lcall	dispb2
	ret
dispb:	cjne	a,#00h,play1
	mov	p2,#11000000b
	ret
play1:	cjne	A,#01h,play2		;判时间数
	mov	p2,#11111001b
	ret
play2:	cjne	A,#02h,play3		;
	mov	p2,#10100100b
	ret
play3:	cjne	A,#03h,play4		;
	mov	p2,#10110000b
	ret
play4:	cjne	A,#04h,play5		;
	mov	p2,#10011001b
	ret
play5:	cjne	A,#05h,play6		;
	mov	p2,#10010010b
	ret
play6:	cjne	A,#06h,play7		;
	mov	p2,#10000010b
	ret
play7:	cjne	A,#07h,play8		;
	mov	p2,#11111000b
	ret
play8:	cjne	A,#08h,play9		;
	mov	p2,#10000000b
	ret
play9:	cjne	A,#09h,play10	;
	mov	p2,#10010000b
	ret
play10:	cjne	A,#0ah,play11		;a
	mov	p2,#00000000b
	ret
play11:	cjne	A,#0bh,play12		;b
	mov	p2,#00000000b
	ret
play12:	cjne	A,#0ch,play13		;c
	mov	p2,#00000000b
	ret
play13:	cjne	A,#0dh,play14		;d
	mov	p2,#00000000b
	ret
play14:	cjne	A,#0eh,play15		;e
	mov	p2,#00000000b
	ret
play15:	cjne	A,#0fh,play16		;f
	mov	p2,#00000000b
play16:	ret
replay:	mov	3ah,#34h		;1ms延时
rep:	mov	3bh,#0ah
rep1:	djnz	3bh,rep1
	djnz	3ah,rep
	ret
yan10m:	mov	3ah,#34h		;10M延时
repa:	mov	3bh,#34h
repa1:	djnz	3bh,repa1
	djnz	3ah,repa
	ret
PASS:	LJMP	AWARD1		;无键按下返回时间循环
INT0:	RETI
INT1:	RETI
key1:	lcall	replay		;
	jb	p0.0,pass
KEY:	clr	ea		;
	JB	P0.0,KEYA	;
	lCALL	replay		;
	JB	P0.0,KEYA	;
key2:	jnb	p0.0,key2	;
	lCALL	YAN10M		;
	JnB	P0.0,key2	;
	inc	r1		;
	;inc	r2		;
KEYa:	JB	P0.1,KEYb	;
	lCALL	replay		;
	JB	P0.1,KEYb	;
keya1:	jnb	p0.1,keya1	;
	lCALL	replay		;
	JnB	P0.1,keya1	;
	cjne	r1,#01h,seta1	;转秒低位加1程序
	lcall	setb1		;
	ret			;
seta1:	cjne	r1,#02h,seta2	;转秒高位加1程序
	lcall	setb2
	ret
seta2:	cjne	r1,#03h,seta3	;转分低位加1程序
	lcall	setb3
	ret
seta3:	cjne	r1,#04h,seta4	;转分高位加1程序
	lcall	setb4
	ret
seta4:	cjne	r1,#05h,seta5	;转小时低位加1程序
	lcall	setb5
	ret
seta5:	cjne	r1,#06h,seta6	;转小时高位加1程序
	lcall	setb6
	ret
seta6:	cjne	r1,#07h,seta7	;转定时器修正值低位
	lcall	setb7
	ret
;seta7:	cjne	r1,#08h,seta8	;转定时器修正值高位
;	lcall	setb8
;	ret
;seta8:	cjne	r1,#09h,keyb	;
;	lcall	setb9
;	ret
;seta9:	cjne	r1,#010h,keyb	;
;	lcall	setb10
;	ret
setb7:	ret
seta7:	ret
KEYb:	ret	
setb1:	inc	35h
	mov	a,35h
	cjne	a,#0ah,setc1
	mov	35h,#00h
setc1:	ret
setb2:	inc	34h
	mov	a,34h
	cjne	a,#06h,setc2
	mov	34h,#00h
setc2:	ret
setb3:	inc	33h
	mov	a,33h
	cjne	a,#0ah,setc3
	mov	33h,#00h
setc3:	ret
setb4:	inc	32h
	mov	a,32h
	cjne	a,#06h,setc4
	mov	32h,#00h
setc4:	ret
setb5:	inc	31h
	mov	a,31h
	mov	a,30h
	cjne	a,#02h,setc51
	mov	a,31h
	cjne	a,#04h,setc5
	mov	31h,#00h
	ret
setc51:	mov	a,31h
	cjne	a,#0ah,setc5
	mov	31h,#00h
setc5:	ret
setb6:	inc	30h
	mov	a,30h
	cjne	a,#03h,setc6
	mov	30h,#00h
setc6:	ret
;setb7:	mov	a,46h
;	cjne	a,#00h,setc7
;	mov	40h,30h		;40h-45h暂存时间位
;	mov	41h,31h
;	mov	42h,32h
;	mov	43h,33h
;	mov	44h,34h	
;	mov	45h,35h
;	mov	32h,#03h		;前3位送3表示处在定时器校准状态
;	mov	31h,#03h
;	mov	30h,#03h
;	mov	33h,51h
;	mov	a,50h
;	mov	b,#10
;	div	ab
;	mov	34h,a
;	mov	35h,b
;	mov	46h,#feh
;setc7:	inc	35h
;	mov	a,35h
;	cjne	a,#10h,setc71
;	mov	35h,#00h	
;setc71:	ret
;setb8:	inc	34h
;	mov	a,34h
;	cjne	a,#10h,setc8
;	mov	34h,#00h	
;setc8:	ret
;setb9:	inc	33h
;	mov	a,33h
;	cjne	a,#10h,setc9
;	mov	33h,#00h	
;setc9:	ret
;setb10:mov	a,49h;
;	cjne	a,#00h,setc10;
;	mov	51h,33h
;	mov	a,34h
;	mov	b,#10h
;	mul	ab
;	mov	a,b
;	add	a,35h
;	mov	50h,a
;	mov	30h,#04h
;	mov	31h,#04h
;	mov	32h,#04h
;	mov	46h,#00h	
;	mov	49h,#efh
;setc10:	inc	38h
;	mov	a,38h
;	cjne	a,#3eh,setc101
;	mov	38h,#00h
;setc101:mov	b,#10h
;	div	ab
;	mov	34h,a
;	mov	35h,b
;	ret












⌨️ 快捷键说明

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