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

📄 bjsj.asm

📁 用12C887制作的电子时钟,用89C51单片机读取并显示.
💻 ASM
字号:
	;***********	PRO	***************
	ORG	0000H
	ECS	EQU	P1.7
	ESO	EQU	P3.0
	ESI	EQU	P3.3
	ESCK	EQU	P3.1
	K1	EQU	P3.5	;SET
	K2	EQU	P3.4	;UP	
	K3	EQU	P2.6	;DOWN
	JX	EQU	4BH
	IX	EQU	4CH
	;--------------------------------
	LJMP	FIST
	ORG	0003H	;X0	INT
	LJMP	X0IN
	ORG	000BH	;T0	INT
	LJMP	INT0
FIST:	MOV	SP,#70H
	MOV	IE,#00H
	MOV	P1,#0FFH
	;MOV	P2,#80H
	SETB	P2.7
	CLR	P2.0
	CLR	P2.1
	CLR	P2.2
	CLR	P2.3	
	CLR	P2.4
	CLR	P2.5
	MOV	P3,#0FFH
	MOV	TMOD,#11H
	MOV	TCON,#00H
	MOV	IE,#00H
	MOV	SCON,#00
	MOV	PCON,#00
	MOV	20H,#00H
	MOV	22H,#00H
	MOV	29H,#00H
	MOV	2AH,#00H
	MOV	2BH,#00H
	MOV	2CH,#00H
	MOV	2DH,#00H
	MOV	2EH,#00H
	MOV	2FH,#00H
	LCALL	DISP
	LCALL	PP1XV
	MOV	TH0,#0D8H
	MOV	TL0,#0EFH
	CLR	TF0
	SETB	TR0
	SETB	ET0
	SETB	IT0
	;SETB	EX0
	SETB	EA
	MOV	R2,#10
FTM1:	LCALL	DELAY
	LCALL	DELAY
	LCALL	TCS
	DJNZ	R2,FTM1
	LCALL	MRSR
	;************MAIN*************
MAIN:	LCALL	X0IN
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	MOV	C,K1
	JC	MJ1
	LCALL	DELAY
	LCALL	DELAY
	MOV	C,K1
	JC	MJ1
	CLR	EX0
	MOV	48H,#00
	MOV	49H,#00
	MOV	4AH,#00
	CLR	EA
	LCALL	DI48
	MOV	2CH,#00
	MOV	2DH,#00
	MOV	2EH,#00
	MOV	2FH,#00
	SETB	EA
	LCALL	DELAY
MJ11:	LCALL	DELAY
	MOV	C,K1
	JNC	MJ11
	LCALL	PP
MJ1:	LJMP	MAIN
	;*************TCS**********
TCS:	CLR	ECS
	NOP
	SETB	ECS
	RET
	;*************PP***************
PP:	MOV	C,K1
	JC	PB
	LCALL	DELAY
	MOV	C,K1
	JC	PB
	CLR	EX0
	MOV	49H,#00
	MOV	4AH,#00
	CLR	EA
	LCALL	DI49
	MOV	2EH,#00
	MOV	2FH,#00
	SETB	EA
	LCALL	DELAY
MJ12:	LCALL	DELAY
	MOV	C,K1
	JNC	MJ12
	LJMP	PP49
PB:	LCALL	DELAY
	MOV	C,K2
	JC	PC
	LCALL	PBA1
PC:	LCALL	DELAY
	MOV	C,K3
	JC	PB1
	LCALL	PC1
PB1:	LJMP	PP
	;-------------PP49--------------
PP49:	MOV	C,K1
	JC	PBB
	LCALL	DELAY
	MOV	C,K1
	JC	PBB
	CLR	EX0
	MOV	4AH,#00
	CLR	EA
	LCALL	DI4A
	SETB	EA
	LCALL	DELAY
MJ13:	LCALL	DELAY
	MOV	C,K1
	JNC	MJ13
	LJMP	PP4A
PBB:	LCALL	DELAY
	MOV	C,K2
	JC	PCC
	LCALL	PBA2
PCC:	LCALL	DELAY
	MOV	C,K3
	JC	PBB1
	LCALL	PC2
PBB1:	LJMP	PP49
	;-------------PP4A--------------
PP4A:	MOV	C,K1
	JC	PBBB
	LCALL	DELAY
	MOV	C,K1
	JC	PBBB
	LCALL	WDS87
	;SETB	EX0
	;LCALL	DELAY
MJ14:	LCALL	DELAY
	MOV	C,K1
	JNC	MJ14
	RET
PBBB:	LCALL	DELAY
	MOV	C,K2
	JC	PCCC
	LCALL	PBA3
PCCC:	LCALL	DELAY
	MOV	C,K3
	JC	PBBB1
	LCALL	PC3
PBBB1:	LJMP	PP4A
	;***********PBA1秒+1)	***********
PBA1:	MOV	A,48H
	ADD	A,#01
	MOV	48H,A
	CLR	C
	SUBB	A,#60
	JC	FBA1
	MOV	48H,#00
FBA1:	LCALL	DI48
	MOV	R2,#30
FBA2:	LCALL	DELAY
	MOV	C,K2
	JNC	FBA3
	RET
FBA3:	DJNZ	R2,FBA2
PBA4:	MOV	R2,#10
PBA5:	LCALL	DELAY
	MOV	C,K2
	JC	PBA6
	DJNZ	R2,PBA5
	LJMP	PBA7
PBA6:	RET
PBA7:	MOV	A,48H
	ADD	A,#01
	MOV	48H,A
	CLR	C
	SUBB	A,#60
	JC	PBA8
	MOV	48H,#00
PBA8:	LCALL	DI48
	LJMP	PBA4
	RET
	;*******************PC1秒减1*********************
PC1:	MOV	A,48H
	SUBB	A,#01
	MOV	48H,A
	CLR	C
	SUBB	A,#60
	JC	LI1
	MOV	48H,#00
LI1:	LCALL	DI48
	MOV	R2,#30
LI2:	LCALL	DELAY
	MOV	C,K3
	JNC	LI3
	RET
LI3:	DJNZ	R2,LI2
LI4:	MOV	R2,#10
LI5:	LCALL	DELAY
	MOV	C,K2
	JC	LI6
	DJNZ	R2,PBA5
	LJMP	LI7
LI6:	RET
LI7:	MOV	A,48H
	SUBB	A,#01
	MOV	48H,A
	CLR	C
	SUBB	A,#60
	JC	LI8
	MOV	48H,#00
LI8:	LCALL	DI48
	LJMP	LI4
	RET
	;***********PBA2	(分+1)	***********
PBA2:	MOV	A,49H
	ADD	A,#01
	MOV	49H,A
	CLR	C
	SUBB	A,#60
	JC	QBA1
	MOV	49H,#00
QBA1:	LCALL	DI49
	MOV	R2,#30
QBA2:	LCALL	DELAY
	MOV	C,K2
	JNC	QBA3
	RET
QBA3:	DJNZ	R2,QBA2
QBA4:	MOV	R2,#10
QBA5:	LCALL	DELAY
	MOV	C,K2
	JC	QBA6
	DJNZ	R2,QBA5
	LJMP	QBA7
QBA6:	RET
QBA7:	MOV	A,49H
	ADD	A,#01
	MOV	49H,A
	CLR	C
	SUBB	A,#60
	JC	QBA8
	MOV	49H,#00
QBA8:	LCALL	DI49
	LJMP	QBA4
	RET
	;****************PC2分减1******************
PC2:	MOV	A,49H
	SUBB	A,#01
	MOV	49H,A
	CLR	C
	SUBB	A,#60
	JC	LII1
	MOV	49H,#00
LII1:	LCALL	DI49
	MOV	R2,#30
LII2:	LCALL	DELAY
	MOV	C,K3
	JNC	LII3
	RET
LII3:	DJNZ	R2,LII2
LII4:	MOV	R2,#10
LII5:	LCALL	DELAY
	MOV	C,K3
	JC	LII6
	DJNZ	R2,LII5
	LJMP	LII7
LII6:	RET
LII7:	MOV	A,49H
	SUBB	A,#01
	MOV	49H,A
	CLR	C
	SUBB	A,#60
	JC	LII8
	MOV	49H,#00
LII8:	LCALL	DI49
	LJMP	LII4
	RET
	;***********PBA3	(时+1)	***********
PBA3:	MOV	A,4AH
	ADD	A,#01
	MOV	4AH,A
	CLR	C
	SUBB	A,#13
	JC	SBA1
	MOV	4AH,#01
SBA1:	LCALL	DI4A
	MOV	R2,#30
SBA2:	LCALL	DELAY
	MOV	C,K2
	JNC	SBA3
	RET
SBA3:	DJNZ	R2,SBA2
SBA4:	MOV	R2,#10
SBA5:	LCALL	DELAY
	MOV	C,K2
	JC	SBA6
	DJNZ	R2,SBA5
	LJMP	SBA7
SBA6:	RET
SBA7:	MOV	A,4AH
	ADD	A,#01
	MOV	4AH,A
	CLR	C
	SUBB	A,#13
	JC	SBA8
	MOV	4AH,#01
SBA8:	LCALL	DI4A
	LJMP	SBA4
	RET
	;************PC3时减1******
PC3:	MOV	A,4AH
	SUBB	A,#01
	MOV	4AH,A
	CLR	C
	SUBB	A,#13
	JC	LCH1
	MOV	4AH,#01
LCH1:	LCALL	DI4A
	MOV	R2,#30
LCH2:	LCALL	DELAY
	MOV	C,K3
	JNC	LCH3
	RET
LCH3:	DJNZ	R2,LCH2
LCH4:	MOV	R2,#10
LCH5:	LCALL	DELAY
	MOV	C,K3
	JC	LCH6
	DJNZ	R2,LCH5
	LJMP	LCH7
LCH6:	RET
LCH7:	MOV	A,4AH
	SUBB	A,#01
	MOV	4AH,A
	CLR	C
	SUBB	A,#13
	JC	LCH8
	MOV	4AH,#01
LCH8:	LCALL	DI4A
	LJMP	LCH4
	RET
	;***********DELAY*********
DELAY:	SETB	RS0
	CLR	RS1
	MOV	R7,#20	;#50
DL12:	MOV	R6,#250
	DJNZ	R6,$
	DJNZ	R7,DL12	;10MS	;25MS
	CLR	RS0
	CLR	RS1
	RET
	;*********INT0************
INT0:	PUSH	PSW
	PUSH	ACC
	CLR	EA
	CLR	TR0
	INC	20H
	MOV	A,20H
	CLR	C
	SUBB	A,#8
	JC	IN2
	MOV	20H,#01
IN2:	MOV	A,20H
	DEC	A
	JZ	DISA
	DEC	A
	JZ	DISB
	DEC	A
	JZ	DISC
	DEC	A
	JZ	DISD
	DEC	A
	JZ	DISE
	DEC	A
	JZ	DISF
	DEC	A
	JZ	DISG
DISA:	LJMP	DIS1
DISB:	LJMP	DIS2
DISC:	LJMP	DIS3
DISD:	LJMP	DIS4
DISE:	LJMP	DIS5
DISF:	LJMP	DIS6
;DISG:	LJMP	DIS7
	;============1================
DIS1:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2FH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.2
	LJMP	DIS8
	;============2================
DIS2:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2EH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.1
	LJMP	DIS8
	;============3================
DIS3:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2DH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.5
	LJMP	DIS8
	;============4================
DIS4:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2CH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.0
	LJMP	DIS8
	;============5================
DIS5:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2BH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.4
	LJMP	DIS8
	;============6================
DIS6:	;MOV	P2,#0FFH
	SETB	P2.0
	SETB	P2.1
	SETB	P2.2
	SETB	P2.3
	SETB	P2.4
	SETB	P2.5
	MOV	A,2AH
	ORL	A,#10000000B
	MOV	P1,A
	CLR	P2.3
	LJMP	DIS8
	;============7================
DIS7:	;MOV	P2,#0FFH
	MOV	P1,#00
	SETB	P1.1
	MOV	C,10H
	MOV	P1.3,C
	LJMP	DIS8
	;============================
DIS8:	LCALL	TCS
	MOV	TL0,#00H
	MOV	TH0,#0FBH	;ECH	;5000
	CLR	TF0
	SETB	TR0
	POP	ACC
	POP	PSW
	SETB	EA
	RETI
	;*******	DI48	********
DI48:	MOV	A,48H
	MOV	B,#10
	DIV	AB
	MOV	2AH,B
	MOV	2BH,A
	;--------------------------
	CLR	EA
	MOV	A,2AH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2AH,A
	MOV	A,2BH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2BH,A
	SETB	EA
	RET
	;*******	DI49	********
DI49:	CLR	EA
	MOV	A,49H
	MOV	B,#10
	DIV	AB
	MOV	2CH,B
	MOV	2DH,A
	;---------------------------
	MOV	A,2CH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2CH,A
	MOV	A,2DH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2DH,A
	SETB	EA
	RET
	;*******	DI4A	********
DI4A:	MOV	A,4AH
	MOV	B,#10
	DIV	AB
	MOV	2EH,B
	MOV	2FH,A
	MOV	A,2EH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2EH,A
	MOV	A,2FH
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	2FH,A
	SETB	EA
	RET
	;*******	DISP	********
DISP:	CLR	EA
	MOV	R0,#07
	MOV	R1,#29H
LOOP1:	MOV	A,@R1
	MOV	DPTR,#TAB
	NOP
	NOP
	MOVC	A,@A+DPTR
	MOV	@R1,A
	INC	R1
	DJNZ	R0,LOOP1
	SETB	EA
	RET
TAB:	DB	08H,3BH,14H,11H,23H
	DB	41H,40H,1BH,00H,01H
	DB	00H,01H,02H,04H,08H
	DB	10H,20H,40H,80H,0FFH
	;*********EREAD*********
EREAD:	SETB	ESO
	MOV	R0,#08H
INBYT1:	SETB	ESCK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	ESCK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	C,ESO
	RLC	A
	DJNZ	R0,INBYT1
	RET
	;*********EWRITE********
EWRITE:	MOV	R0,#08H
OUTBYT1:	CLR	ESCK
	RLC	A
	MOV	ESI,C
	SETB	ESCK
	DJNZ	R0,OUTBYT1
	CLR	ESI
	RET
	;**********ERB**********
ERB:	MOV	R1,IX
	MOV	R6,JX
	CLR	ESCK
	CLR	ECS
	MOV	A,DPH
	ANL	A,#01H
	SWAP	A
	RR	A
	ORL	A,#00000011B
	ACALL	EWRITE
	MOV	A,DPL
	ACALL	EWRITE
ERB1:	ACALL	EREAD
	MOV	@R1,A
	INC	R1
	DJNZ	R6,ERB1
	CLR	ESCK
	SETB	ECS
	RET
	;***********ERDS*********
ERDS:	CLR	ESCK
	CLR	ECS
	MOV	A,#00000101B
	ACALL	EWRITE
	ACALL	EREAD
	CLR	ESCK
	SETB	ECS
	RET
	;**********EWRS*********
EWRS:	CLR	ESCK
	CLR	ECS
	MOV	A,#01H
	LCALL	EWRITE
	MOV	A,#00H
	LCALL	EWRITE
	CLR	ESCK
	SETB	ECS
EWRS1:	LCALL	ERDS
	JB	ACC.0,EWRS1
	RET
	;**********PAWR**********
PAWR:	MOV	R1,IX
	MOV	R6,JX
	CLR	ESCK
	CLR	ECS
	MOV	A,#00000110B
	ACALL	EWRITE
	SETB	ECS
	NOP
	CLR	ECS
	MOV	A,DPH
	ANL	A,#01
	SWAP	A
	RR	A
	ORL	A,#00000010B
	ACALL	EWRITE
	MOV	A,DPL
	ACALL	EWRITE
PAWR1:	MOV	A,@R1
	ACALL	EWRITE
	INC	R1
	DJNZ	R6,PAWR1
	CLR	ESCK
	SETB	ECS
PAWR2:	LCALL	ERDS
	JB	ACC.0,PAWR2
	RET
	;**********MRSR**********
MRSR:	CLR	ESCK
	CLR	ECS
	MOV	A,#00000110B
	LCALL	EWRITE
	CLR	ESCK
	SETB	ECS
	NOP
	CLR	ECS
	MOV	A,#01H
	LCALL	EWRITE
	MOV	A,#00H
	LCALL	EWRITE
	CLR	ESCK
	SETB	ECS
EWRW1:	LCALL	ERDS
	JB	ACC.0,EWRW1
	RET
	;***************PP1XV********
PP1XV:	CLR	EA
	CLR	P2.7
XAT1:	MOV	DPTR,#000AH
	MOVX	A,@DPTR
	JBC	ACC.7,XAT1
	MOV	DPTR,#000CH
	MOVX	A,@DPTR
	SETB	P2.7
	SETB	EA
	RET
	;*********X0IN*******
X0IN:	PUSH	ACC
	PUSH	PSW
	CLR	EA
	CPL	10H
	CLR	P2.7
WAT1:	MOV	DPTR,#000AH
	MOVX	A,@DPTR
	JBC	ACC.7,WAT1
	;----------------------------------
	MOV	DPTR,#00
	MOVX	A,@DPTR	;SECONDS
	MOV	R0,A
	MOV	DPTR,#02
	MOVX	A,@DPTR	;MINUTES
	MOV	R1,A
	MOV	DPTR,#04
	MOVX	A,@DPTR	;HOUSE
	MOV	R2,A
	MOV	DPTR,#06
	MOVX	A,@DPTR	;DAY	OF	THE	WEEK
	MOV	R3,A
	MOV	DPTR,#07
	MOVX	A,@DPTR	;DAY	OF	THE	MONTH
	MOV	R4,A
	MOV	DPTR,#08
	MOVX	A,@DPTR	;MONTH
	MOV	R5,A
	MOV	DPTR,#09
	MOVX	A,@DPTR	;YEAR
	MOV	R6,A
	MOV	DPTR,#000CH
	MOVX	A,@DPTR
	SETB	P2.7
	;-------------------------
	MOV	A,R0
	MOV	B,#10
	DIV	AB
	MOV	2AH,B
	MOV	2BH,A
	;--------------------------
	MOV	A,R1
	MOV	B,#10
	DIV	AB
	MOV	2CH,B
	MOV	2DH,A
	;---------------------------
	;MOV	A,R2
	;CLR	C
	;SUBB	A,#10001100B
	;JNC	DDD
	;MOV	A,R2
	;CLR	C
	;SUBB	A,#80H
	;MOV	R2,A
;DDD:	MOV	A,R2
	MOV	A,R2
	ANL	A	#01111111B
	MOV	B,#10
	DIV	AB
	MOV	2EH,B
	MOV	2FH,A
	LCALL	DISP
	;-----------------------------
	POP	PSW
	POP	ACC
	SETB	EA
	RET	;I
	;*********WRITE	DS12C887*******
WDS87:	CLR	EA
	CLR	P2.7
	MOV	A,#10010100B	;#10010111B
	MOV	DPTR,#000BH
	MOVX	@DPTR,A
	;------------------------------
	MOV	A,48H
	MOV	DPTR,#00
	MOVX	@DPTR,A	;SECONDS
	MOV	A,49H
	MOV	DPTR,#02
	MOVX	@DPTR,A	;MINUTES
	MOV	A,4AH
	MOV	DPTR,#04
	MOVX	@DPTR,A	;HOUSE
	;-------------------------------
	MOV	A,#0A0H
	MOV	DPTR,#000AH
	MOVX	@DPTR,A
	;-------------------------------
	MOV	A,#00
	MOV	DPTR,#000CH
	MOVX	A,@DPTR
	;-------------------------------
	MOV	A,#00
	MOV	DPTR,#000DH
	MOVX	A,@DPTR
	JB	ACC.7,DS81
	LCALL	ERR1
DS81:	MOV	A,#00010100B	;#00010101B
	MOV	DPTR,#000BH
	MOVX	@DPTR,A	;STAR	THE	DS887
	SETB	P2.7
	SETB	EA
	RET
ERR1:	MOV	29H,#1
	MOV	2AH,#1
	MOV	2BH,#1
	MOV	2CH,#1
	MOV	2DH,#1
	MOV	2EH,#1
	MOV	2FH,#1
	LCALL	DISP
	MOV	R2,#100
ERR2:	LCALL	DELAY
	LCALL	DELAY
	LCALL	TCS
	DJNZ	R2,ERR2
	RET	END

⌨️ 快捷键说明

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