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

📄 dtsy.asm

📁 89C51做的单相预付费电表源程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		setb	card_check
		nop
		nop
		JB 	CARD_CHECK,CARDIE
		nop
		nop
		setb	card_check
		nop
		nop
		JB 	CARD_CHECK,CARDIE
		nop
		nop
CARD11: 	JB	CARD_BIT,CARDIE1
		nop
		nop
CARD10:  
		MOV	R5,#03H
car1:		ACALL	DL150MS
		DJNZ	R5,CAR1
		MOV	LED_BUFF1,#16H	;----]
		MOV	LED_BUFF2,#10H
		MOV	LED_BUFF3,#10H
		MOV	LED_BUFF4,#10H
		MOV	DISPTIME,#66
		clr	dispfh
		clr	poibit
		CLR	DISPBLK
		CLR	DISP_BIT
		PUSH	PSW
		MOV 	PSW,#08H
		MOV	R5,#03H
car2:		ACALL	DL150MS
		DJNZ	R5,CAR2
		CLR	TLEDBIT
		CLR	TLEDBIT1
		SETB  	CARD_BIT
		MOV	R5,#04H
		MOV	R3,#078H
		MOV	R2,#00H
		MOV	R0,#BUFFER_A
		LCALL	RDCAR
		MOV	R0,#BUFFER_A
		MOV	A,@R0
		XRL	A,#0AAH
		JNZ	SALCAR
		INC	R0
		MOV	A,@R0
		XRL	A,#0AAH
		JNZ	CARDE
		INC	R0
		MOV	A,@R0
		XRL	A,#0BBH
		JNZ	CARDE
		INC	R0
		MOV	A,@R0
		XRL	A,#0CDH
		JZ	CARCANS
		MOV	A,@R0
		XRL	A,#099H
		JZ	CARTEST
		MOV	A,@R0
		XRL	A,#0AAH
		JZ	CARRST
		MOV	A,@R0
		XRL	A,#0BBH
		JZ	CARHUI
		AJMP	CARDE
SALCAR:
		ACALL  SALEPRO
		AJMP CARDE
CARCANS:	LCALL  CLEARR2
		AJMP CARDE
CARTEST:	LCALL  TESTPRO
		AJMP CARDE
CARHUI: 	LCALL  HUICARD
		AJMP CARDE
CARRST: 	LCALL RSTPRO
CARDE:		NOP
		MOV	ADDR,#00H
		MOV	LENGTH,#1AH
		MOV	RADD1,#MBUY1
		lcall	CERTIFY
;		JNB	LESBIT,CARDe1
;		CLR	LESBIT
;		SETB	LESTA
;		clr	jdqerr
carde1: ;	ACALL	POWEND
		SETB	CARDISP
		CLR	DISPH
		MOV	DSPLOOP,#01H
CARDF:		POP 	PSW
CARDRET:	RET
;============
PBCD1:		MOV	A,@R0
		ANL	A,#0FH
		CJNE	A,#0AH,PBCD2
PBCD2:		JNC	PBCDEND
		MOV	A,@R0
		SWAP	A
		ANL	A,#0FH
		CJNE	A,#0AH,PBCD3
PBCD3:		JNC	PBCDEND
		INC	R0
		MOV	A,@R0
		ANL	A,#0FH
		CJNE	A,#0AH,PBCD4
PBCD4:		JNC	PBCDEND
		MOV	A,@R0
		SWAP	A
		ANL	A,#0FH
		CJNE	A,#0AH,PBCD5
PBCD5:		JNC	PBCDEND
		CLR	bcderr
		RET
PBCDEND:	SETB	BCDERR
		RET
;======================================
HUIXIE:		MOV	R0,#MIMA1
		MOV	R3,#7EH
		MOV	R5,#2H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,MIMA1
		XRL	A,MFIELD1
		JNZ	JMPERR1
		MOV	A,MIMA2
		XRL	A,MFIELD2
		JNZ	JMPERR1
		MOV	R0,#BUFFER_A
		MOV	R7,#04H
		MOV	R1,#MUSE1
HUIXIE1:	MOV	A,@R0
		XRL	A,@R1
		JNZ	JMPERR1
		INC	R0
		INC	R1
		DJNZ	R7,HUIXIE1
		CLR	C
		MOV	A,BUFFER_E
		XRL	A,MNO1
		JNZ	JMPERR1

;		MOV	A,MLEF1
;		ORL	A,MLEF2
;		JNZ	HUIXIE2	
;		ACALL	POW5
;huixieret:	RET

HUIXIE2:
		jb	chaka_bit,huixieret
		JNB	POWER_BIT,HUIXIE3
		CLR	POWER_BIT
		ACALL	POWSTA
huixieret:	RET
HUIXIE3:
		ACALL	POW5
		ACALL	DL150MS
		nop
		ACALL	PZERO
		MOV	A,R7
		mov	resg1,a
		MOV	R5,#1
		MOV	R3,#23H
		MOV	R2,#00H
		MOV	R0,#resg1
		LCALL	WRCAR		;小数
		ACALL	REWRIC1
		CLR	A
		MOV	MLEF1,A
		MOV	MLEF2,A
		MOV	MNOW1,A
		MOV	MNOW2,A
		MOV	RADD1,#MLEF1
		MOV	LENGTH,#02H
		MOV	ADDR,#14H
		LCALL	WRRAM
		MOV	ADDR,#0AH
		MOV	LENGTH,#02H
		MOV	RADD1,#MNOW1
		LCALL	WRRAM
		MOV	R7,#0AH
		MOV	R2,#060H
HUIXIE4:	MOV	R5,#01H
		MOV	R0,#MNOW1
		ACALL	WRITE
		DJNZ	R7,HUIXIE4	
		AJMP	ERETT1		
;===================================
ERRR1:		MOV	A,MNO1
		JZ	SALNO1
JMPERR1:	AJMP	ERR1

salepro:	SETB	XBIT18
		SETB	DISP_BIT
		SETB	DSP30
		MOV	R0,#BUFFER_A
		MOV	R7,#04H
		MOV	R1,#MUSE1
SALNO:		MOV	A,@R0
		XRL	A,@R1
		JNZ	ERRR1
		INC	R0
		INC	R1
		DJNZ	R7,SALNO

;		LCALL	REWRIC1

SALNO1: 	MOV	R0,#BUFFER_G
		MOV	R3,#2AH
		MOV	R5,#2H
		MOV	R2,#00H
		LCALL	RDCAR

		MOV	R0,#BUFFER_E
		MOV	R3,#68H
		MOV	R5,#01H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,BUFFER_G
		JZ	SSSSS
sx12:		AJMP	HUIXIE
SSSSS:		MOV	A,BUFFER_H
		JnZ	Sx12

		MOV	R0,#BUFFER_G
		MOV	R3,#28H
		MOV	R5,#02H
		MOV	R2,#00H
		LCALL	RDCAR
		ACALL	MIMA
		JB	MIMAFLAG,ERR1
		MOV	R0,#BUFFER_G		
		ACALL	PBCD1
		JB	BCDERR,ERR1
		MOV	ADDR,#00H
		MOV	LENGTH,#1AH
		MOV	RADD1,#MBUY1
		LCALL	CERTIFY
		MOV	R0,#MIMA1
		MOV	R3,#7EH
		MOV	R5,#2H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,MNO1
		JNZ	SAL01
		MOV	A,BUFFER_E
		XRL	A,#01H
		JNZ	ERR1
		MOV	A,MBUY1		
		JNZ	SAL01
		MOV	A,MBUY2
		JNZ	SAL01
		MOV	A,MBUY3
		JNZ	SAL01	
		MOV	R0,#MIMA1	
		ACALL	PBCD1
		JB	BCDERR,ERR1
		MOV	R0,#BUFFER_A	
		ACALL	PBCD1
		JB	BCDERR,ERR1
		MOV	R0,#BUFFER_C	
		ACALL	PBCD1
		JB	BCDERR,ERR1
		MOV	R0,#BUFFER_A
		MOV	R1,#MUSE1
		MOV	R7,#07H
SAL00:		MOV	A,@R0
		MOV	@R1,A
		INC	R0
		INC	R1
		DJNZ	R7,SAL00
		CLR	A
		MOV	MALL1,A
		MOV	MALL2,A
		MOV	MBUY3,A
		MOV	A,BUFFER_G
		MOV	MBUY1,A
		MOV	MLEF1,A
		MOV	A,BUFFER_H
		MOV	MBUY2,A
		MOV	MLEF2,A
		MOV	MFIELD1,MIMA1
		MOV	MFIELD2,MIMA2
		AJMP	SAL4
ERR1:	
		MOV	LED_BUFF1,#00H	;NO
		MOV	LED_BUFF2,#13H
		MOV	LED_BUFF3,#11H
		MOV	LED_BUFF4,#11H
		MOV	DISPTIME,#66
		CLR	DISPBLK
		CLR	XBIT18
		RET

SAL01:		MOV	A,MIMA1
		XRL	A,MFIELD1
		JNZ	ERR1
		MOV	A,MIMA2
		XRL	A,MFIELD2
		JNZ	ERR1
		MOV	R0,#BUFFER_A
		MOV	R7,#04H
		MOV	R1,#MUSE1
SAL1:		MOV	A,@R0
		XRL	A,@R1
		JNZ	ERR1
		INC	R0
		INC	R1
		DJNZ	R7,SAL1
		CLR	C
		MOV	A,BUFFER_E
		SUBB	A,#01H
		XRL	A,MNO1
		JNZ	ERR1

JSMLEFT:	MOV	A,MLEF1
		ADD	A,BUFFER_G
		DA	A
		MOV	A,MLEF2
		ADDC	A,BUFFER_H
		DA	A
		JNC	TRAND
JSSM1:		
		MOV	LED_BUFF1,#12H	;FULL
		MOV	LED_BUFF2,#12H
		MOV	LED_BUFF3,#17H
		MOV	LED_BUFF4,#0FH
		MOV	DISPTIME,#66
		CLR	DISPBLK
		mov	mnow1,buffer_G
		mov	mnow2,buffer_H
		setb	sal_bit
		CLR	XBIT18
		RET
TRAND:
		MOV	A,MLEF1
		ADD	A,BUFFER_G
		DA	A
		MOV	MLEF1,A
		MOV	A,MLEF2
		ADDC	A,BUFFER_H
		DA	A
		MOV	MLEF2,A
		MOV	A,MNO1
		ADD	A,#01H
		MOV	MNO1,A
		MOV	A,BUFFER_G
		MOV	MNOW1,A
		MOV	A,BUFFER_H
		MOV	MNOW2,A
		MOV	A,MBUY1
		ADD	A,MNOW1
		DA	A
		MOV	MBUY1,A
		MOV	A,MBUY2
		ADDC	A,MNOW2
		DA	A
		MOV	MBUY2,A
		MOV	A,MBUY3
		ADDC	A,#00H
		DA	A
		MOV	MBUY3,A
SAL4:
		MOV	R0,#BUFFER_A
		MOV	R3,#75H
		MOV	R5,#3H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,BUFFER_A
		JNZ	SAL5
		MOV	R0,#BUFFER_B		
		ACALL	PBCD1
		JB	BCDERR,ERR12
		MOV	A,BUFFER_B
		CJNE	A,MLOAD1,SAL41
		MOV	A,BUFFER_C
		CJNE	A,MLOAD2,SAL41
		AJMP	SAL5
SAL41:		MOV	A,BUFFER_B
		MOV	MLOAD1,A
		MOV	A,BUFFER_C
		MOV	MLOAD2,A
		CLR	A
		MOV  HLOAD1,A
		MOV  HLOAD2,A
SAL5:
;		MOV	R0,#BUFFER_A
;		MOV	R3,#65H
;		MOV	R5,#03H
;		MOV	R2,#00H
;		LCALL	RDCAR
;		MOV	A,BUFFER_A
;		JNZ	SAL7
;		MOV	R0,#BUFFER_B	
;		ACALL	PBCD1
;		JB	BCDERR,ERR12
;		MOV	A,BUFFER_B
;		MOV	MALP1,A
;		MOV	A,BUFFER_C
;		MOV	MALP2,A
		MOV	MALP1,#00H
		MOV	MALP2,#00H

SAL7:		jb	xbit18,et13
ERR12:		MOV	ADDR,#00H
		MOV	LENGTH,#1AH
		MOV	RADD1,#MBUY1
		LCALL	CERTIFY
		AJMP	ERR1
et13: 
		ACALL	REWRIC
	  	MOV	rADD1,#mbuy1
		MOV	LENGTH,#1AH
		MOV	ADDr,#00h
		LCALL	WRRAM
		MOV	BUFFER_A,#00H
		MOV	R7,#0AH
		MOV	R2,#060H
ET14:		MOV	R5,#01H
		MOV	R0,#BUFFER_A
		ACALL	WRITE
		DJNZ	R7,ET14
		lcall	powend
		mov	chaka_time,#160
		setb	chaka_bit
		CLR	POWER_BIT
ERETT1: 
		MOV	LED_BUFF1,#14H	;END
		MOV	LED_BUFF2,#18H
		MOV	LED_BUFF3,#0EH
		MOV	LED_BUFF4,#11H
		MOV	DISPTIME,#66
		CLR	DISPBLK
		SETB	SAL_BIT
		CLR	XBIT18
		RET
;=================
MIMA:
		MOV	A,BUFFER_E
		ANL	A,#7FH
		RL	A
		MOV	B,A
		MOV	DPTR,#MTABLE
		MOVC	A,@A+DPTR
		XRL	A,#0AAH
		MOV	MIMA2,A
		INC	DPTR
		MOV	A,B
		MOVC	A,@A+DPTR
		XRL	A,#0AAH
		MOV	MIMA1,A
		MOV	A,BUFFER_G
		XRL	MIMA2,A
		MOV	A,BUFFER_C
		XRL	MIMA1,A
		MOV	R0,#RESG1
		MOV	R3,#70H
		MOV	R5,#2H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,MIMA1
		XRL	A,RESG1
		SETB	MIMAFLAG
		JNZ	MIRET
		MOV	A,MIMA2
		XRL	A,RESG2
		JNZ	MIRET
		CLR	MIMAFLAG
SMIMA:
		MOV	A,BUFFER_E
		ANL	A,#7FH
		RL	A
		MOV	B,A
		MOV	DPTR,#TABLE_2
		MOVC	A,@A+DPTR
		MOV	MIMA2,A
		INC	DPTR
		MOV	A,B
		MOVC	A,@A+DPTR
		MOV	MIMA1,A
		MOV	A,BUFFER_H
		XRL	MIMA2,A
		MOV	A,BUFFER_B
		XRL	MIMA1,A
		MOV	R0,#RESG1
		MOV	R3,#72H
		MOV	R5,#2H
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,MIMA2
		XRL	A,RESG1
		SETB	MIMAFLAG
		JNZ	MIRET
		MOV	A,MIMA1
		XRL	A,RESG2
		JNZ	MIRET
		CLR	MIMAFLAG
MIRET:		RET
;==============
REWRIC: 	LCALL	WATDOG
		MOV	BUFFER_A,#0FFH
		MOV	BUFFER_B,#0FFH
		MOV	R5,#2
		MOV	R3,#2AH
		MOV	R2,#00H
		MOV	R0,#BUFFER_A
		LCALL	WRCAR
		MOV	R5,#1
		MOV	R3,#65H
		MOV	R2,#00H
		MOV	R0,#BUFFER_A
		LCALL	WRCAR
		MOV	R5,#1
		MOV	R3,#75H
		MOV	R2,#00H
		MOV	R0,#BUFFER_A
		LCALL	WRCAR
		MOV	R5,#2
		MOV	R3,#24H
		MOV	R2,#00H
		MOV	R0,#MNOW1
		LCALL	WRCAR
		MOV	R5,#2
		MOV	R3,#66H
		MOV	R2,#00H
		MOV	R0,#MALP1
		LCALL	WRCAR
		RET
;
REWRIC1:	LCALL	WATDOG
		MOV	R5,#2
		MOV	R3,#24H
		MOV	R2,#00H
		MOV	R0,#MLEF1
		LCALL	WRCAR
		MOV	A,MALL2
		MOV	MIMA1,A
		MOV	A,MALL1
		MOV	MIMA2,A
		MOV	R5,#2
		MOV	R3,#30H
		MOV	R2,#00H
		MOV	R0,#MIMA1
		LCALL	WRCAR
		MOV	R5,#1
		MOV	R3,#11H
		MOV	R2,#00H
		MOV	R0,#MBUY3
		LCALL	WRCAR
		MOV	R5,#2
		MOV	R3,#12H
		MOV	R2,#00H
		MOV	R0,#MBUY1
		LCALL	WRCAR
		MOV	R5,#2
		MOV	R3,#54H
		MOV	R2,#00H
		MOV	R0,#HLOAD1
		LCALL	WRCAR
		RET
;===================================
HUICARD:
		MOV	R7,#00H
		mov	r2,#00h
HUICARD1:	MOV	A,R7
		MOV	B,#07H
		MUL	AB
		ADD	A,#86H
		MOV	R3,A
		MOV	R1,A
		MOV	A,B
		ADDC	A,#00H
		RL	A
		ANL	A,#0EH
		MOV	R2,A
		MOV	R4,A
		MOV	R5,#01H
		MOV	R0,#BUFFER_A
		LCALL	RDCAR
		MOV	A,BUFFER_A
		XRL	A,#0AAH
		JNZ	HUI1
		lcall	watdog
		INC	R7
		MOV	A,R7
		XRL	A,#250
		JNZ	HUICARD1
HUIFULL:	
		MOV	LED_BUFF1,#12H
		MOV	LED_BUFF2,#12H
		MOV	LED_BUFF3,#17H
		MOV	LED_BUFF4,#0FH
		MOV	DISPTIME,#66
		CLR	DISPBLK
		lJMP	HUIZUU
HUI1:		MOV	A,R1
		CLR	C
		SUBB	A,#06H
		MOV	R3,A
		MOV	A,R4
		RR	A
		SUBB	A,#00H
		RL	A
		ANL	A,#0EH
		MOV	R2,A
		MOV	R5,#4
		MOV	R0,#MUSE1
		LCALL	WRCAR
		MOV	R5,#2
		MOV	R0,#MALL1
		LCALL	WRCAR
		MOV	R5,#1
		MOV	R0,#BUFFER_A
		MOV	@R0,#0AAH
		LCALL	WRCAR
HUIZUU: 	

		MOV	LED_BUFF1,#00H	;CAO
		MOV	LED_BUFF2,#0AH
		MOV	LED_BUFF3,#0CH
		MOV	LED_BUFF4,#11H
		MOV	DISPTIME,#66
		CLR	DISPBLK
		RET
;===================================
RSTPRO:
		MOV	ADDR,#00H
		MOV	LENGTH,#1AH
		MOV	RADD1,#mbuy1
		LCALL	CERTIFY
		JB	RAMERR,CLEARR2
		MOV	R0,#MFIELD1
		LCALL	PBCD1
		JB	BCDERR,CLEARR2
		MOV	R0,#MLEF1
		LCALL	PBCD1
		JB	BCDERR,CLEARR2
		MOV	R5,#02H
		MOV	R3,#07EH
		MOV	R0,#BUFFER_A
		MOV	R2,#00H
		LCALL	RDCAR
		MOV	A,BUFFER_A
		XRL	A,MFIELD1
		JNZ	RSTRET2
		MOV	A,BUFFER_B
		XRL	A,MFIELD2
		JNZ	RSTRET2
CLEARR2:
		CLR	RAMERR
		CLR	XBIT1B
		MOV 	R0,#FLAG2
		MOV 	R5,#60
		MOV 	A,#0
WRRAM0: 	MOV 	@R0,A
		INC 	R0
		DJNZ 	R5,WRRAM0
		MOV	POWST1,#012H
		MOV	POWST2,#034H
		MOV 	MLOAD1,#80H  ;MLOAD1
		MOV 	MLOAD2,#08H
		MOV 	MALP1,#00H	;MALP1
		MOV	rADD1,#mbuy1
		MOV	LENGTH,#1AH
		MOV	ADDr,#00h
		LCALL	WRRAM
		MOV	R5,#0AH
		MOV	R2,#60H
		MOV	R0,#MBUY1
		LCALL	write		
		LCALL	POWEND
RSTRET: 	MOV	TLED,#04H
		SETB	TLEDBIT
		CLR	TLEDBIT1
RSTRET1:	RET
RSTRET2:	MOV	A,MFIELD1
		XRL	A,#00H
		JNZ	TERET
		MOV	A,MFIELD2
		XRL	A,#00H
		JNZ	TERET
		lJMP	CLEARR2
;*******************************
TESTPRO:	NOP
		MOV	ADDR,#00H

⌨️ 快捷键说明

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