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

📄 t25.asm

📁 单片机检測程序,内有监测、通讯、显示、时间设置等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	LD      ADTIMES,#CYPOINT        ;SAMPLE 8000 POINT
	ADD	ADTIMES,#CYPOINT
	LD      AX,#BUFFADD             ;AX IS YLB ADDR
	LD      CX,AX                   
	ADD     CX,#CYPOINT             ;CX IS QMX ADDR
	LDB	ADCH,#YLACH
ZSXADC: LDB     AD_COM,ADCH             ;4 
	LDB	ADREAD,#0BH		;4
ZSXBUSY:DJNZ	ADREAD,ZSXBUSY		;(15-1)*8+5=117
	LDB     ADREAD,AD_RESHI         ;4
	CMPB	ADCH,#YLACH
	JE	YLOFFSET
	STB	ADREAD,[CX]+		;4
	LDB	ADCH,#YLACH
	SJMP	QMOFFSET		;8
YLOFFSET:STB     ADREAD,[AX]+		;8
	LDB	ADCH,#QMACH
	NOP				;4
QMOFFSET:PUSH    DELAYCYCLE              ;8
ZSXDELAY:DJNZ	DELAYCYCLE,ZSXDELAY	;(DELAYCYCLE-1)*8+5
	POP     DELAYCYCLE              ;12
	DEC     ADTIMES                 ;4
	JNE     ZSXADC                   ;8
	LDB	ADCH,#QMACH
	RET

;***********FIND MAX********************
;ENTER: AX= BUFF ADD BX= CONUT  MAXPA=0
;RETURN: MAXPA=? , WIDESTA= MAX ADD
FINDMAX:LDB     CL,[AX]+                ;AX:ADD BX:COUNT CX:DATA
	CMPB    CL,MAXPA
	JH	HMAX
	JE	HMAX
NEXTMAX:DEC     BX
	CMP     BX,#0000H
	JE      MAXOK
	SJMP    FINDMAX
HMAX:   LDB     MAXPA,CL
	DEC     AX
	ST      AX,WIDESTA              ;MAXPA ADD
	INC     AX
	SJMP    NEXTMAX
MAXOK:  RET

;***********CALC ZHSHX OFFSET***
;ENTER: WIDESTA=QMX MAX ADDRESS
;RETURN:WIDESTA=YLB MAX ADDRESS
ZSXSET: LDB     CL,#GANGHAOL
	LDB     CH,#00H
	LDB     BL,[CX]+
	LDB     DL,#0AH
	MULUB   BL,DL
	LDB     DL,[CX]
	ADDB    BL,DL
	DECB    BL              ;GANGHAOL
	SHLB    BL,#01H
	LDB     DL,#20H
	LDB     CL,ZSXXH
	DECB    CL
	MULUB   CL,DL
	ADDB    CL,BL
	LD      DPSTRING,#ZSXTAB
	ADD     DPSTRING,CX

	PUSH	ZHS
	PUSH	WIDESTA

	LD      BX,#CYPOINT             ;PROCESS 4000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI1
	SCALL	FINDPOINT
	CMP	ZHS,#0000H
	JE	ZSX720
	LD	WIDEH,ZHS

	LD      BX,#CYPOINT             ;PROCESS 4000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI2
	SCALL	FINDPOINT
	ADD	WIDEH,ZHS
	
	LD      BX,#CYPOINT             ;PROCESS 4000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI3
	SCALL	FINDPOINT
	ADD	WIDEH,ZHS
	
	LD      BX,#CYPOINT             ;PROCESS 4000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI4
	SCALL	FINDPOINT
	ADD	WIDEH,ZHS
	
	LD	CX,WIDEH
	SHR	CX,#02H
	CMP     CX,#LPOINT
	JNH     ZSX720
	CMP     CX,#HPOINT
	JH      ZSX720
	SJMP	ZSXJS
ZSX720:	LD	CX,#FPOINT
ZSXJS:	LD	ZHS,CX
	LD      AX,[DPSTRING]		;AX IS ZSX OFFSET
	MULU	CX,AX
	LD	BX,#FPOINT
	DIVU	CX,BX
	LD	WIDEH,CX
	LD	CX,ZHS
	ADD	AX,#0168H		;360
	MULU	CX,AX
	DIVU	CX,BX
	LD	WIDEL,CX
	
	POP	WIDESTA
	POP	ZHS
	SUB	WIDESTA,#CYPOINT	;NOW YLB ADD
	ADD	WIDEH,WIDESTA
	ADD	WIDEL,WIDESTA
	LDB     DL,[WIDEH]		;WIDESTA AX
	LDB     DH,[WIDEL]
	CMPB    DL,DH
	JH      ZSXIS1
	LD	WIDESTA,WIDEL
	RET
ZSXIS1:	LD	WIDESTA,WIDEH
	RET     

;***********SAMPLE FIND MAX AND WIDE****
;ENTER:DELAYCYCLE=SAMPLE DELAY TIME
;RETURN:MAXPA,WIDE,WIDENUM
;       WIDESTA=GEGIN ADDRESS
SAMMW:	CMPB	YLFLAG,#02H
	JE	ITISZSX
	LCALL   SAMOK
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	SCALL	FINDHL
	SHR	WIDE,#02H		;WIDE IS SUM 4 TIMES
	LDB	MAXPA,WIDE
TOFWIDE:LD	WIDESTA,WIDESTAH
	LCALL	FINDWIDE
	LDB	WIDEH,WIDE
	LCALL	FINDNUM
	LDB	WIDENUMH,WIDENUM
	LD	WIDESTA,WIDESTAL
	LCALL	FINDWIDE
	LDB	WIDEL,WIDE
	LCALL	FINDNUM
	LDB	WIDENUML,WIDENUM
	RET
ITISZSX:LCALL	ZSXSAM
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	ADD	AX,#CYPOINT
	LCALL	FINDHL
	LD	WIDESTA,WIDESTAH
	LCALL	ZSXSET
	LD	WIDESTAH,WIDESTA	;NOW YLB MAX ADD
	LD	AX,WIDESTA
	LDB	BX,#DIVKEEP
	LDB	HB,#00H
	SUB	AX,BX
	LDB	MAXPA,#00H
	LDB	BX,#KEEPNUM
	LDB	HB,#00H
	LCALL	FINDMAX
	LDB	MAXPAH,MAXPA
	
	LD	WIDESTA,WIDESTAL
	LCALL	ZSXSET
	LD	WIDESTAL,WIDESTA	;NOW YLB MAX ADD
	LD	AX,WIDESTA
	LDB	BX,#DIVKEEP
	LDB	HB,#00H
	SUB	AX,BX
	LDB	MAXPA,#00H
	LDB	BX,#KEEPNUM
	LDB	HB,#00H
	LCALL	FINDMAX
	LDB	MAXPAL,MAXPA

	SJMP	TOFWIDE	
		

;*************** FIND MAXH AND MAXL ***********
;ENTER:	AX=DATA ADD
;RETURN: MAXPAH WIDESTAH MAXPAL WIDESTAL
;	WIDE IS SUM OF MAXPA
FINDHL:	ADDB	AX,#DIVKEEP	
	LDB	MAXPA,#00H
	LD	BX,#FPOINT
	LCALL	FINDMAX
	LDB	MAXPAH,MAXPA
	LD	WIDESTAH,WIDESTA	
	LDB	MAXPAL,MAXPA
	LD	WIDESTAL,WIDESTA
	LDB	EH,#03H
	LD	WIDE,#0000H
	LDB	WIDE,MAXPA
CTOMAX:	LD      BX,#FPOINT             ;FINT 3 CYCLE 
	LDB	MAXPA,#00H
	LCALL   FINDMAX
	LDBZE	CX,MAXPA
	ADD	WIDE,CX
	CMPB	MAXPA,MAXPAH
	JH	FMAXPAH
	JE	FMAXPAH
	CMPB	MAXPAL,MAXPA
	JH	FMAXPAL
	DJNZ	EH,CTOMAX
	RET
FMAXPAH:LDB	MAXPAH,MAXPA
	LD	WIDESTAH,WIDESTA
	DJNZ	EH,CTOMAX
	RET
FMAXPAL:LDB	MAXPAL,MAXPA
	LD	WIDESTAL,WIDESTA
	DJNZ	EH,CTOMAX
	RET
	
;*********************** FIND WIDE **************
;ENTER: WIDESTA= MAXPA START ADD
;RETURN:WIDE=?
FINDWIDE:
	LD	AX,WIDESTA
	LDB     CL,#DIVKEEP
	LDB     CH,#00H
	SUB     AX,CX			;AX:ADD BX:COUNT CX:DATA DH:FLAG
	LDB     WIDE,#00H		;INIT WIDE
	LDB     DH,#00H                 ;0 IS FIND >; 1 IS FIND <;
	LDB     BL,#KEEPNUM             ;PROCESS 100
	LDB	HB,#00H
WIDENEXT:
	LDB     CL,[AX]+
	CMPB    DH,#00H
	JE      FWIDEHIGH
	CMPB    CL,#PRESS25
	JH      INCBWIDE
	RET
WIDEDECB:
	DEC	BX      
	CMP     BX,#0000H
	JNE     WIDENEXT
	RET                     ;RETURN MAXPA WIDE AND WIDENUM
FWIDEHIGH:
	CMPB    CL,#PRESS25
	JH      INCBWIDE
	SJMP    WIDEDECB
INCBWIDE:LDB     DH,#01H
	INCB	WIDE
	SJMP    WIDEDECB
		
;**********MOVE DATA******************
;ENTER: AX=SOURCE
;       CX=TARGE
;       BX=COUNT        
MOVEDATA:LDB    DL,[AX]
	LDB	DH,[AX]
	CMPB	DL,DH
	JNE	MOVEDATA
	LDB	DH,[AX]
	CMPB	DL,DH
	JNE	MOVEDATA
	STB     DL,[CX]
	LDB	DH,[CX]
	CMPB	DH,DL
	JNE	MOVEDATA
	INC	AX
	INC	CX
	DEC     BX
	CMP     BX,#0000H
	JNE     MOVEDATA
	RET     

;***********CALCULAE HEADER***********
;RETURN: CX=?
CALCH:	LD	CX,#COMMNUM
	LDBZE	DX,SAVENO
	MULU	CX,DX
	ADD	CX,#KEEPADD
	RET

;***********DISPLAY ZHUAN SU********
; ENTER:CX=ZHS
DISPZHS:PUSH    CX
	LD	CX,#0258H		;600
	LD      BX,#07FCH               ;2044
	MULU    CX,BX
	POP     BX
	DIVU    CX,BX
	LD	DX,#0000H
	LD	BX,#03E8H               ;DISP 1000
	DIVU	CX,BX
	CMPB	CL,#00H
	JE	ZHSDD
	LDBZE   DPCHAR,CL
	INCB	DPLINE
	LCALL   DISPNUM
	DECB	DPLINE
ZHSDD:	LD	CX,DX
	LCALL   DISPWIDE
	RET

;***********DISPLAY 100***********
;ENTER: CX=?
;       USE CX,DX       
DISPWIDE:PUSH   CX
	PUSH    DX
	LDB     DL,#64H                 ;DISP 100
	DIVUB   CX,DL
	LDBZE   DPCHAR,CL
	INCB	DPLINE
	LCALL   DISPNUM
	LDB     CL,CH                   ;DISP 10
	LDB     CH,#00H
	LDB     DL,#0AH
	DIVUB   CX,DL
	LDBZE   DPCHAR,CL
	LCALL   DISPNUM
	LDBZE   DPCHAR,CH               ;DISP 1
	LCALL   DISPNUM
	DECB	DPLINE
	POP     DX
	POP     CX
	RET
	
;***********DISPLAY PRESS***********
;ENTER: MAXPA=?
DISPYL: LDBZE   CL,MAXPA                ;DISPLAY MAX 
	CMPB    YLFLAG,#01H
	JE      DISPQM
	CMPB	YLFLAG,#03H
	JE	DISPQM
	LDB     BL,#PR125                ;YLB *125MPa=7d 129=81H
	MULUB   CL,BL                   
	LDB     BL,#0FFH                ;/255
	DIVUB   CX,BL
	LDB     HB,CH
	LDB     CH,#00H
	LCALL   DISPWIDE
	SJMP    DISPYLNEXT
DISPQM: LDB     BL,#PR15                  ;QMX *15MPa
	MULUB   CL,BL
	LDB     BL,#0FFH                ;/255
	DIVUB   CX,BL
	LDB     HB,CH
	LDB	CH,#00H
	LDB	BL,#0AH
	DIVUB	CX,BL
	LDBZE   DPCHAR,CL
	INCB	DPLINE
	LCALL   DISPNUM
	LDBZE	DPCHAR,CH
	LCALL   DISPNUM
	DECB	DPLINE
DISPYLNEXT:
	INCB	DPLINE
	LDB     DPCHAR,#0EH             ;DISP .
	LCALL   DISPNUM
	LDB     CL,HB                   ;DISP .1
	LDB     BL,#0AH
	MULUB   CL,BL
	LDB     BL,#0FFH                ;/255
	DIVUB   CX,BL
	LDBZE   DPCHAR,CL
	LCALL   DISPNUM
	DECB	DPLINE
	CMPB    YLFLAG,#01H
	JE      DISPQMN
	CMPB    YLFLAG,#03H
	JE      DISPQMN
	RET                             ;IS YLB RETURN
DISPQMN:LDB     CL,CH                   ;DISP .01
	LDB     BL,#0AH
	MULUB   CL,BL
	LDB     BL,#0FFH                ;/255
	DIVUB   CX,BL
	LDBZE   DPCHAR,CL
	INCB	DPLINE
	LCALL   DISPNUM
	DECB	DPLINE
	RET


;*********************** FIND WIDENUM **************
;ENTER: WIDESTA= MAXPA START ADD
;RETURN:WIDENUM=?
FINDNUM:
	LD	AX,WIDESTA
	LDB     CL,#DIVKEEP
	LDB     CH,#00H
	SUB     AX,CX			;AX:ADD BX:COUNT CX:DATA DH:FLAG
	LDB     WIDENUM,#00H            ;INIT WIDE NUM
	LDB     DH,#00H                 ;0 IS FIND >; 1 IS FIND <;
	LDB     BL,#KEEPNUM             ;PROCESS 100
	LDB	HB,#00H
WNUMNEXT:
	LDB     CL,[AX]+
	CMPB    DH,#00H
	JE      FHIGH
	CMPB    CL,#TNINE
	JH      WNDEC
	LDB     DH,#00H
	INCB    WIDENUM
WNDEC:	DEC	BX      
	CMP     BX,#0000H
	JNE     WNUMNEXT
	RET                     ;RETURN MAXPA WIDE AND WIDENUM
FHIGH:  CMPB    CL,#TWFIVE
	JH      HTWFIVE
	SJMP    WNDEC
HTWFIVE:LDB     DH,#01H
	SJMP    WNDEC

	
;***********DISPLAY RESULT***********
DISPRES:LCALL   CLEAR
	LD      DPLINE,#0900H
	LD      DPSTRING,#GANG          ;DISPLAY GANG HAO
	LCALL   STRING
	LDB     BL,#02H
	LDB     AL,#GANGHAOL
	LDB     AH,#00H
	INCB	DPLINE
DGANG:  LDBZE   DPCHAR,[AX]+
	LCALL   DISPNUM
	DJNZ    BL,DGANG
	DECB	DPLINE
	INCB    DPCLUM
	LD      DPLINE,#0000H
	LD      DPSTRING,#ZHUANSU       ;ZHUAN SU
	LCALL   STRING
	LD      CX,ZHS
	LCALL   DISPZHS
	LD      DPLINE,#0002H
	LD      DPSTRING,#YALI
	LCALL   STRING
	LDB     MAXPA,MAXPAH
	LCALL   DISPYL
	INCB    DPCLUM
	LDB     MAXPA,MAXPAL
	LCALL   DISPYL
	CMPB	YLFLAG,#01H
	JE	DPHH
	CMPB	YLFLAG,#03H
	JE	DPHH
	LD      DPLINE,#0004H
	LD      DPSTRING,#JIAODU        ;DISPLAY JIAODU
	LCALL   STRING
	LDBZE   CX,WIDEH
	LCALL   DISPWIDE
	ADDB    DPCLUM,#03H
	LDBZE   CX,WIDEL
	LCALL   DISPWIDE
	LD	DPLINE,#0604H
	LDBZE	DPCHAR,WIDENUMH
	LCALL	DISPNUM
	LD	DPLINE,#0C04H
	LDBZE	DPCHAR,WIDENUML
	LCALL	DISPNUM
DPYORN:	LD	DPLINE,#0106H
	LD	DPSTRING,#HAO		;DISP HAO HUAI
	LDBZE	AX,GOOD
	SHL	AX,#01H
	ADD	DPSTRING,AX
	LCALL	STRING
	RET
DPHH:	LD      DPLINE,#0504H
	LDB     MAXPA,WIDENUMH
	LCALL   DISPYL
	SJMP	DPYORN

;***********INIT GANGHAO******************
INITGANG:LCALL  CALCH
	LDB     DL,#00H                 ;WRITE A NOT TESTED FLAG 
	STB     DL,[CX]
	ADD     CX,#HEADERN
	LDB     AL,#KEEPNUM
	LDB     AH,#00H
	SHL     AX,#0001H               ;200POINT
	ADD     AX,#RECHEADER
	LDB     BL,#10H
INITNEXT:LDB    DL,#00H                 ;WRITE A NOT TESTED FLAG
	STB     DL,[CX]
	ADD     CX,AX
	DJNZ    BL,INITNEXT
	RET
	
;***********CALCULATE GANGHAO ADDR***********
;RETURN CX=?
CALCR:  PUSH	BX
	PUSH	DX
	LDB     CL,#GANGHAOL
	LDB     CH,#00H
	LDB     BL,[CX]+
	LDB     DL,#0AH
	MULUB   BL,DL
	LDB     DL,[CX]
	ADDB    BL,DL
	DECB    BL      
	LDB     CL,#KEEPNUM
	LDB     CH,#00H
	SHL     CX,#0001H
	ADD     CX,#RECHEADER
	LDB     HB,#00H
	MULU    CX,BX
	LD      BX,CX
	LCALL   CALCH
	ADD     CX,#HEADERN
	ADD     CX,BX                   ;CALC THE GANGHAO ADDRESS
	POP	DX

⌨️ 快捷键说明

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