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

📄 gaixian.asm

📁 AD采集电压
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;WMCON   DATA 96H
sfr  WMCON    = 0x96;
;     /* Watchdog and Memory Control Register */
FO 	BIT   PSW.5
SCL 	BIT   P1.1
SCL1 	BIT   P3.3
SDA 	BIT   P1.0
SDA1 	BIT   P3.2
SDA2 	BIT   P3.4
SCL2	BIT   P3.5
DMPOS	BIT   P1.3
;LEDD	BIT   P3.0
;LEDC	BIT   P3.1
;CS0 	BIT   P1.2   ;没有通讯显示,老程序
LEDD	BIT   P0.2
LEDC	BIT   P0.1
CS0 	BIT   P0.0   ;有通讯显示,新程序
;CS0 FOR 74LS164,LED
;SCL/SDA :IIC BUS
PRST		BIT	00H
RSTA		BIT	01H
RSTB		BIT	02H
RSTC		BIT	03H
ADOK		BIT	04H
DPPOS		BIT	05H
MAXE		EQU	06H
HUP		EQU	07H
NH		EQU	08H
;NH=1 => h<0
BIG_JMP  EQU	09H
ADSADDA	EQU	94H
ADSADDB	EQU	94H
ADSADDC	EQU	94H
ADSREGA	EQU	8CH
ADSREGBC	EQU	94H
;ADS110'S reg  ,TYPE:0X8C,0X90
SLA		EQU	23H
MTD		EQU	24H
NUMBYTE	EQU	25H
;ADS' CTRL BYTE,OUT BUF ADDR,WRITE BYTE LEN
MRD		EQU	26H
;ADS' IN BUF ADDR
DSPBUF	EQU	30H
;DISPLAY	30-31-32-33
ADVNUM	EQU	34H
ADVMAX	EQU	35H
ADVPGA	EQU	36H
ADVADDRS	EQU	37H
ADVADDRT EQU	3AH
;MAX ADV SUM save to 37-38-39,TMP ADV save to 3a-3b-3c
ADVAVRN	EQU	3DH
ADVAVRM	EQU	3EH
ADVAVRA  EQU	3FH
TEMPADDR EQU	40H
RRCGB		EQU	41H
LASTH_H	EQU	42H
LASTH_L	EQU	43H
FIL_H		EQU	44H
FIL_L		EQU	45H
DIV2_H   EQU	46H
DIV2_L   EQU   47H
V2_H		EQU	44H
V2_L		EQU	45H
H2_H		EQU	46H
H2_L		EQU	47H
V1_H		EQU	48H
V1_L		EQU	49H
H1_H		EQU	4AH
H1_L		EQU	4BH
P5P4		EQU	4CH
ADV_SV_B	EQU	50H
shuju           equ      5ah
;50H+3*ADVAVRM
MAIN:		MOV	WMCON,#0C3H
         MOV	SP,#0E0H
			;JB		PRST,MAIN1
			SETB	PRST
			CLR	NH
			MOV	PSW,#0
			mov	tmod,#20h
			mov	th1,#0fdh ;baud,ff:56k,fd,19600
			mov	tl1,#0fdh ;baud			
			setb	tr1
			mov	scon,#0C0h
			mov   pcon,#80h ;baud double
   	   MOV	ADVNUM   ,#0
			MOV	ADVMAX   ,#4
			MOV	ADVPGA   ,#0
			MOV	ADVADDRS   ,#0
			MOV	ADVADDRS+1 ,#0
			MOV	ADVADDRS+2 ,#0
			MOV	ADVADDRT   ,#0
			MOV	ADVADDRT+1 ,#0
			MOV	ADVADDRT+2 ,#0
			MOV	LASTH_H	  ,#0
			MOV	LASTH_l    ,#0
			MOV	ADVAVRN    ,#0
			SETB	P1.5
			SETB	P1.4
			CLR	A
			MOV	C,P1.5
			CPL	C
			RLC	A
			MOV	C,P1.4
			CPL	C
			RLC	A
			MOV	P5P4,A
			MOV	ADVAVRM,#9
			JZ		DISJ0JF
			MOV	B,#4
			MUL	AB
			CLR	C
			SUBB	A,#2
			MOV	ADVAVRM,A			
			
DISJ0JF:	        MOV	RRCGB	   ,#5
			MOV	ADVAVRA,#ADV_SV_B

			MOV	DSPBUF	  ,#30	
			MOV	DSPBUF+1	  ,#24
			MOV	DSPBUF+2	  ,#23
			MOV	DSPBUF+3	  ,#0
			CLR	ADOK		
			LCALL	DISPLAY
         LCALL RSTADSA
			MOV	DSPBUF	  ,#30	
			MOV	DSPBUF+1	  ,#24
			MOV	DSPBUF+2	  ,#23
			MOV	DSPBUF+3	  ,#1
			CLR	ADOK		
			LCALL	DISPLAY
         LCALL RSTADSB
			MOV	DSPBUF	  ,#30	
			MOV	DSPBUF+1	  ,#24
			MOV	DSPBUF+2	  ,#23
			MOV	DSPBUF+3	  ,#2
			CLR	ADOK		
			LCALL	DISPLAY
			LCALL	RSTADSC
MAIN1:	
			MOV	DSPBUF	  ,#0		
			MOV	DSPBUF+1	  ,#0
			MOV	DSPBUF+2	  ,#0
			MOV	DSPBUF+3	  ,P5P4	
			LCALL	DISPLAY
			mov     r7,#255
                        mov     r5 ,#00h
                        MOV	DPTR,#0000H
bijiao:                 mov     dpl ,r5
                        ORL	WMCON,#08H
			mov     a,#00h
                        MOVX	A,@DPTR
			mov     shuju,a
                        mov     a,r5
                        mov     dptr ,#biao
			movc    a ,@a+dptr
                        cjne    a,shuju ,gengai
bijiao1:                mov     dptr ,#0000h
                        inc     r5
                        mov     dpl  ,r5      
              		djnz    r7 ,bijiao
			LJMP    M_LOOP
gengai:           	orl 	WMCON,#10h
                  	mov   dptr ,#0000h
                        mov     dpl ,r5
                        movx    @dptr ,a
                        mov     r6 ,#100
ddd:                    lcall delay40u
                        djnz   r6 ,ddd
                        anl 	WMCON,#0efh
			sjmp   bijiao1	
		
M_LOOP:	                anl 	WMCON,#0f7h
			MOV	R7,ADVMAX
			MOV	ADVADDRS,#0
			MOV	ADVADDRS+1,#0
			MOV	ADVADDRS+2,#0
M_RD_ADV:LCALL	READA	;RDA_GET;			
  			ORL	WMCON,#02H	
			MOV	R0,#ADVADDRS+2
			MOV	R1,#ADVADDRT+2
			MOV	R2,#3
			LCALL	ADD_UCH
			DJNZ	R7,M_RD_ADV
			LCALL	RSTADSB
			LCALL	RSTADSC
    		        MOV	R0,#ADVADDRS+2	
			MOV	R1,ADVAVRA 
			MOV	R2,#3
M_SV_ADV:MOV	A,@R0
			MOV	@R1,A
			INC	R1
			DEC	R0
			DJNZ	R2,M_SV_ADV
			MOV	ADVAVRA,R1
			JNB	ADOK,M_SV_NEXT
			LCALL	CALC_H
			
;AD Value save in 2eh 2dl,max=0xffff

			;
			MOV	R2,2EH
			MOV	R3,2DH
			;LCALL	READC
			;MOV	R2,ADVADDRT
			;MOV	R3,ADVADDRT+1
			

			LCALL	HEX2BCD  
			MOV	R1,#DSPBUF

			LCALL BCDEXPD
			JNB	NH,M_SV_SHOW
			MOV	DSPBUF,#31
			SETB	DMPOS
			MOV	C,DMPOS
			MOV	DPPOS,C
			JC	   M_SV_SHOW
			MOV	DSPBUF,#32
M_SV_SHOW:LCALL DISPLAY
M_SV_NEXT:INC	ADVAVRN
			MOV	A,ADVAVRN
			CJNE	A,ADVAVRM,M_SV_OK?
M_SV_OK?:JC	   M_LOOP
			SETB	ADOK				
			MOV	ADVAVRN,#0
			MOV	ADVAVRA,#ADV_SV_B
			SJMP	M_LOOP
			RET
;UNIVERSAL IIC CONTROL FUNCTION---BEGIN
IICSTA:	SETB	SDA
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL
			NOP
			NOP
			RET	
IICSTOP: CLR	SDA
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL
			NOP
			NOP
			RET	
IICACK_O:CLR	SDA
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL
			NOP
			NOP
			RET
IICACK_I:SETB	SDA
			SETB	SCL
			NOP
			NOP
			NOP
			MOV	C,SDA
			MOV	FO,C
			CLR	SCL
			NOP
			NOP
			RET
	;WRITE OUT ACC,ONE BYTE
IICWRB:	MOV	R7,#8
IICWLP:	RLC	A
			JC		IICWR1
			CLR	SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP
			RET
IICWR1:  SETB	SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP
			RET
	;READ IN ACC ONE BYTE
IICRDB:	MOV	R7,#8
IICRLP:	SETB	SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			MOV	C,SDA
			RLC	A
			CLR	SCL
			NOP
			NOP
			NOP
			DJNZ	R7,IICRLP
			RET
;UNIVERSAL IIC CONTROL FUNCTION---BEGIN
IICSTA1:	        SETB	SDA1
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SDA1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL1
			NOP
			NOP
			RET	
IICSTOP1: CLR	SDA1
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SDA1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL1
			NOP
			NOP
			RET	
IICACK_O1:CLR	SDA1
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL1
			NOP
			NOP
			RET
IICACK_I1:SETB	SDA1
			SETB	SCL1
			NOP
			NOP
			NOP
			MOV	C,SDA1
			MOV	FO,C
			CLR	SCL1
			NOP
			NOP
			RET
	;WRITE OUT ACC,ONE BYTE
IICWRB1:	MOV	R7,#8
IICWLP1:	RLC	A
			JC		IICWR11
			CLR	SDA1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL1
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP1
			RET
IICWR11:  SETB	SDA1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL1
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP1
			RET
	;READ IN ACC ONE BYTE
IICRDB1:	MOV	R7,#8
IICRLP1:	SETB	SDA1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL1
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			MOV	C,SDA1
			RLC	A
			CLR	SCL1
			NOP
			NOP
			NOP
			DJNZ	R7,IICRLP1
			RET
;UNIVERSAL IIC CONTROL FUNCTION---BEGIN
IICSTA2:	SETB	SDA2
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SDA2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL2
			NOP
			NOP
			RET	
IICSTOP2: CLR	SDA2
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SDA2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL2
			NOP
			NOP
			RET	
IICACK_O2:CLR	SDA2
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL2
			NOP
			NOP
			RET
IICACK_I2:SETB	SDA2
			SETB	SCL2
			NOP
			NOP
			NOP
			MOV	C,SDA2
			MOV	FO,C
			CLR	SCL2
			NOP
			NOP
			RET
	;WRITE OUT ACC,ONE BYTE
IICWRB2:	MOV	R7,#8
IICWLP2:	RLC	A
			JC		IICWR12
			CLR	SDA2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL2
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP2
			RET
IICWR12:  SETB	SDA2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR	SCL2
			NOP
			NOP
			NOP
			DJNZ	R7,IICWLP2
			RET
	;READ IN ACC ONE BYTE
IICRDB2:	MOV	R7,#8
IICRLP2:	SETB	SDA2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB	SCL2
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			MOV	C,SDA2
			RLC	A
			CLR	SCL2
			NOP
			NOP
			NOP
			DJNZ	R7,IICRLP2
			RET
;WRITE OUT CtrlByte 'SLA',then write  NUMBYTE,from addr 'MTD'
IICWRBS: PUSH	PSW
			MOV	PSW,#18H
IICWRBSL:CALL	IICSTA
			MOV	A,SLA
			CALL	IICWRB
			CALL	IICACK_I
			JB		FO,IICWRBSL
			MOV	R0,MTD
			MOV	R5,NUMBYTE
IICWRDA:	MOV	A,@R0
			LCALL	IICWRB
			LCALL	IICACK_I
			JB		FO,IICWRBSL
			INC	R0
			DJNZ	R5,IICWRDA
			LCALL	IICSTOP
			POP	PSW
			RET
IICWRBS1: PUSH	PSW
			MOV	PSW,#18H
IICWRBSL1:CALL	IICSTA1
			MOV	A,SLA
			CALL	IICWRB1
			CALL	IICACK_I1
			JB		FO,IICWRBSL1
         MOV	R0,MTD
			MOV	R5,NUMBYTE

IICWRDA1:MOV	A,@R0
			LCALL	IICWRB1
			LCALL	IICACK_I1
			JB		FO,IICWRBSL1
			INC	R0
			DJNZ	R5,IICWRDA1
			LCALL	IICSTOP1
			POP	PSW
			RET
IICWRBS2: PUSH	PSW
			 MOV	PSW,#18H
IICWRBSL2:CALL	IICSTA2
			MOV	A,SLA
			CALL	IICWRB2
			CALL	IICACK_I2
			JB		FO,IICWRBSL2
			MOV	R0,MTD
			MOV	R5,NUMBYTE
IICWRDA2:MOV	A,@R0
			LCALL	IICWRB2
			LCALL	IICACK_I2
			JB		FO,IICWRBSL2
			INC	R0
			DJNZ	R5,IICWRDA2
			LCALL	IICSTOP2
			POP	PSW
			RET
;READ :Write out CtrlByte 'SLA',then   Read NUMBYTE,save addr 'MRD'
IICRDBS: PUSH	PSW
			MOV	PSW,#18H
IICRDBSL:CALL	IICSTA
			MOV	A,SLA
			CALL	IICWRB
			CALL	IICACK_I
			JB		FO,IICRDBSL
			MOV	R1,MRD
IICRDDA:	LCALL	IICRDB
			MOV	@R1,A
			LCALL	IICACK_O
			INC	R1				   
			DJNZ	NUMBYTE,IICRDDA
			LCALL	IICSTOP
			POP	PSW
			RET
IICRDBS1: PUSH	PSW
			MOV	PSW,#18H
IICRDBSL1:CALL	IICSTA1
			MOV	A,SLA
			CALL	IICWRB1
			CALL	IICACK_I1
			JB		FO,IICRDBSL1
			MOV	R1,MRD
IICRDDA1:	LCALL	IICRDB1
			MOV	@R1,A
			LCALL	IICACK_O1
			INC	R1				   
			DJNZ	NUMBYTE,IICRDDA1
			LCALL	IICSTOP1
			POP	PSW
			RET
IICRDBS2: PUSH	PSW
			MOV	PSW,#18H
IICRDBSL2:CALL	IICSTA2
			MOV	A,SLA
			CALL	IICWRB2
			CALL	IICACK_I2
			JB		FO,IICRDBSL2
			MOV	R1,MRD
IICRDDA2:	LCALL	IICRDB2
			MOV	@R1,A
			LCALL	IICACK_O2
			INC	R1				   
			DJNZ	NUMBYTE,IICRDDA2
			LCALL	IICSTOP2
			POP	PSW
			RET
;UNIVERSAL IIC CONTROL FUNCTION---END
;Ads110 CONTROL FUNCTION -------- Begin
RSTADSA:                MOV	SLA,#ADSADDA
			MOV	A,ADVPGA
			ADD	A,#ADSREGA
			MOV	TEMPADDR,A
			MOV	MTD,#TEMPADDR
			MOV	NUMBYTE,#1
			LCALL IICWRBS
			SETB	RSTA	
			RET

⌨️ 快捷键说明

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