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

📄 t25.asm

📁 单片机检測程序,内有监测、通讯、显示、时间设置等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	LDB     BL,#08H
	SUBB    DPCHAR,#41H
	MULUB   BL,DPCHAR
	ADD     DPSTRING,BX
	LDB     BL,#08H
	INC     DPTEMP
CNEXT:  LDB     DPCHAR,[DPSTRING]+
	STB     DPCHAR,[DPTEMP]
	DJNZ    BL,CNEXT
	POP     BX
	POP     DPLINE
	POP     DPSTRING
	INCB    DPCLUM
	RET

;************DISPLAY STRING **************
;ENTER: DPSTRING = DISP STRING OFFSET   
;       ;THE STRING IS ENDED BY #0FFH
;       DPLINE=LINE     DPCLUM= COLUME
STRING: LDB     DPCHAR,[DPSTRING]+
	CMPB    DPCHAR,#0FFH
	JE      FISHDP
	CMPB    DPCHAR,#7FH     ;HANZI
	JH      DPHANZI
	CMPB    DPCHAR,#40H     ;CHAR
	JH      DPZIMU
	CMPB    DPCHAR,#3FH
	JE      DPWEN
	CMPB    DPCHAR,#2FH
	JH      DPNUM
	CMPB    DPCHAR,#21H
	JE      DPTAN
	CMPB    DPCHAR,#2DH
	JE      DPJIAN
	CMPB    DPCHAR,#2EH
	JE      DPDIAN
	CMPB	DPCHAR,#20H
	JE	DPSPACE
	SJMP    STRING
FISHDP: RET
DPHANZI:PUSH    DPSTRING
	PUSH    DPLINE
	PUSH    BX
	LD      DPSTRING,#HZTAB
	SUBB    DPCHAR,#80H
	LDB     BL,#20H
	MULUB    BL,DPCHAR
	ADD     DPSTRING,BX
	LCALL   HANZI
	POP     BX
	POP     DPLINE
	POP     DPSTRING
	ADDB    DPCLUM,#02H
	LJMP    STRING
DPZIMU:	INCB	DPLINE
	LCALL   DISPCH
	DECB	DPLINE
	LJMP    STRING
DPNUM:  SUBB    DPCHAR,#30H
	SJMP	DPANOTHER
DPTAN:  LDB     DPCHAR,#0CH
	SJMP	DPANOTHER	
DPJIAN: LDB     DPCHAR,#0DH
	SJMP	DPANOTHER
DPDIAN: LDB     DPCHAR,#0EH
	SJMP	DPANOTHER
DPWEN:  LDB     DPCHAR,#0FH
	SJMP	DPANOTHER
DPSPACE:LDB	DPCHAR,#10H
DPANOTHER:
	INCB	DPLINE
	LCALL	DISPNUM
	DECB	DPLINE
	LJMP    STRING

;***********SAMPLE PROC******************
SAMPLE:	LCALL   CLEAR
	LD	ADRESULT,#KEEPADD
	LD	SAVENO,#0000H
CMPSAMNEXT:
	LDB     DL,[ADRESULT]
	CMPB    DL,#0AAH
	JNE	BEGINSAM
	LD	AX,ADRESULT
	INC	AX
	LDB	DL,[AX]+
	CMPB	DL,#03H
	JH	BEGINSAM
	ADD	ADRESULT,#COMMNUM
	INC	SAVENO
	CMPB	SAVENO,#05H
	JNH	CMPSAMNEXT
	LCALL	SELEJCH
BEGINSAM:
	LCALL	CLEAR
	LD      DPLINE,#0000H
	LD      DPSTRING,#TRAIN         ;SHU RU JI CHE HAO
	SCALL   STRING
	LDB     BL,#04H
	LDB     AL,#TRAINNO
	LDB     AH,#00H
	INCB	DPLINE
INTRAIN:LCALL   INKEY
	CMPB	KEY,#09H
	JH	BEGINSAM
	LDBZE   DPCHAR,KEY
	LCALL   DISPNUM
	STB     KEY,[AX]+
	DJNZ    BL,INTRAIN
	LCALL   INITGANG
NGANG:  LCALL   RDATE                   ;READ THE DATE & TIME
	LCALL   DISPDATE
	LD      DPLINE,#0002H
	LD      DPSTRING,#GANG          ;SHU RU GANG HAO
	LCALL   STRING
	LDB     BL,#02H
	LDB     AL,#GANGHAOL
	LDB     AH,#00H
	INCB	DPLINE
INGANG: LCALL   INKEY
	LDBZE   DPCHAR,KEY
	LCALL   DISPNUM
	STB     KEY,[AX]+
	DJNZ    BL,INGANG
JUDGE:  LDB     AL,#GANGHAOL
	LDB     AH,#00H
	LDB     BL,[AX]+
	CMPB    BL,#01H
	JH      NGANG
	CMPB    BL,#00H
	JE      JUDGENEXT
	LDB     BL,[AX]
	CMPB    BL,#06H
	JH      NGANG
	LJMP    JUDGEOK
JUDGENEXT:LDB   BL,[AX]
	CMPB    BL,#09H
	JH      NGANG
	CMPB    BL,#00H
	JE      NGANG   
JUDGEOK:LCALL   RDATE           	;READ THE DATE & TIME
	LDB     EH,#03H         	;2 TIME TO FIND T
	LCALL   SAMFINDT        	;
	LDB	GOOD,#00H		;INIT IS GOOD
	CMP	ZHS,#0000H
	JE	NOZHS
	SJMP	ZHSOK
NOZHS:	LD	ZHS,#T600
;	LDB	GOOD,#01H
ZHSOK:	LCALL   SAMMW           	;FIND MAX AND WIDE 
	LCALL	OKORNO			;JUDGE HAO HUAI
	LCALL   DISPRES                 ;DISPLAY RESULT
	LD      DPLINE,#0406H
	LD      DPSTRING,#BAOCUN        ;DISPLAY SELECT
	LCALL   STRING
	LD      DELAYCYCLE,#0FFFFH
DELAYKEY:DEC    DELAYCYCLE
	CMP     DELAYCYCLE,#0000H
	JE      NOKEY
	LDB	AX,#05H
	DJNZ	AX,$
	LD      KEYTEMP,#1001H
	LDB     KEYSTAT,[KEYTEMP]
	ANDB    KEYSTAT,#07H
	JE      DELAYKEY
	LDB     KEYSTAT,#40H    ;SET FIFO READ
	STB     KEYSTAT,[KEYTEMP]
	LD      KEYTEMP,#1000H
	LDB     KEYSTAT,[KEYTEMP]
	CMPB    KEYSTAT,#01H    ;'B'=01H NOT CHANGED
	JE      CP
NOKEY:  LCALL	CLEAR
	LJMP    JUDGEOK
CP:     LCALL   WDATA
SAMSELE:LCALL   CLEAR
	LD      DPLINE,#0400H
	LD      DPSTRING,#CESHI         ;DISPLAY SELECT
	LCALL   STRING
	LD      DPLINE,#0402H
	LD      DPSTRING,#BIEGANG               ;DISPLAY SELECT
	LCALL   STRING
	LD      DPLINE,#0404H
	LD      DPSTRING,#FANHUI
	LCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#XUANZE
	LCALL   STRING
	LCALL   INKEY
	CMPB    KEY,#0FH
	JE      OKSAM
	LCALL   CLEAR
	CMPB    KEY,#0AH
	JE      INCGANG
	LJMP    NGANG
INCGANG:ADD     GANGHAOL,#0100H
	CMP     GANGHAOL,#0A00H
	JE      INCHI
	LDB	CL,GANGHAOH
	LDB	CH,GANGHAOL
	CMP	CX,#0106H
	JH	SAMSELE
	LJMP    JUDGE
INCHI:  LD      GANGHAOL,#0001H
	LJMP    JUDGE
OKSAM:  RET

;************** QMX X QMXXSH **********
QMXX:	LDB	AL,MAXPA
	LDB	CL,#QMXXSH
	MULUB	CL,AL
	LDB	BL,#64H
	DIVUB	CX,BL
	CMPB	CH,#31H
	JNH	QMXXADD
	INCB	CL
QMXXADD:LDB	MAXPA,CL
	RET

;************** QMX X QMXXSH **********
QMSHJX:	LDB	AX,#DIVKEEP
	LDB	AH,#00H
	SUB	WIDESTA,AX
	LD	AX,WIDESTA
	LDB	BL,#KEEPNUM
	LDB	HB,#00H
QMXXAG:	LDB	DL,[AX]
	LDB	CL,#QMXXSH
	MULUB	CL,DL
	LDB	DL,#64H
	DIVUB	CX,DL
	CMPB	CH,#31H
	JNH	QMSHJADD
	INCB	CL
QMSHJADD:STB	CL,[AX]
	INC	AX
	DEC	BX
	CMP	BX,#0000H
	JNE	QMXXAG
	RET


	
;************** JUDGE HAO OR HUAI**********
OKORNO:	CMPB	YLFLAG,#00H
	JE	YLBOKORNO
	CMPB	YLFLAG,#02H
	JE	YLBOKORNO
	CMPB	YLFLAG,#03H
	JE	BFLOKORNO
	LDB	WIDENUMH,MAXPA

	LDB	MAXPA,MAXPAH
	SCALL	QMXX
	LDB	MAXPAH,MAXPA
	
	LDB	MAXPA,MAXPAL
	SCALL	QMXX
	LDB	MAXPAL,MAXPA
	
	LDB	MAXPA,WIDENUMH
	SCALL	QMXX
	LDB	WIDENUMH,MAXPA
	
;	LD	WIDESTA,WIDESTAH	;MAX 100
;	SCALL	QMSHJX
;	LD	WIDESTA,WIDESTAL	;MIN 100
;	SCALL	QMSHJX

	CMPB	MAXPA,#QMGM1
	JH	QMISNO
	CMPB	MAXPA,#QMGM2
	JNH	QMISNO
	RET
QMISNO:	LDB	GOOD,#01H
	RET
BFLOKORNO:
	LDB	WIDENUMH,MAXPA
	CMPB	MAXPA,#BFGM1
	JH	BFISNO
	CMPB	MAXPA,#BFGM2
	JNH	BFISNO
	RET
BFISNO:	LDB	GOOD,#01H
	RET
YLBOKORNO:
	CMPB	WIDENUMH,#01H
	JH	ITISNO
	CMPB	WIDENUML,#01H
	JH	ITISNO
	LDB	AL,MAXPAH	;CONDITON 1	(GM+GN)/2<=40
	LDB	AH,#00H
	LDB	BL,MAXPAL
	LDB	HB,#00H
	ADD	AX,BX
	SHR	AX,#01H
	CMPB	AX,#GM11	;CONDITON 1	GM<=40
	JNH	ITISNO
	LDB	AX,MAXPAH	;CONDITON 2	GM-GN>20
	LDB	BX,MAXPAL
	SUBB	AX,BX
	CMPB	AX,#GM21
	JH	ITISNO
	LDB	AX,WIDEH	;CONDITON 3	KM-KN>10
	LDB	BX,WIDEL
	CMPB	AX,BX
	JH	KMSKN
	LDB	CX,AX
	LDB	AX,BX
	LDB	BX,CX
KMSKN:	SUBB	AX,BX
	CMPB	AX,#KM31
	JH	ITISNO
	LDB	AX,WIDEH	;CONDITON 4	(KM+KN)/2<=11
	ADDB	AX,WIDEL
	SHRB	AX,#01H
	CMPB	AX,#KM41
	JNH	ITISNO
	CMPB	MAXPAH,#GM51
	JH	GM100
	CMPB	AX,#KM51	;CONDITON 5	(KM+KN)/2>35
	JH	ITISNO
	RET
GM100:	CMPB	AX,#KM61	;CONDITON 6	(KM+KN)/2>40
	JH	ITISNO
	RET
ITISNO:	LDB	GOOD,#01H
	RET

;***********SAM FIND T******************
;ENTER:EH=TIMES TO FIND T
;RETURN:ZHS=?
;*************************************
SAMFINDT:
	LD      ZHS,#0000H      
	DJNZ	EH,TRYFT
	RET
TRYFT:	LDB	DELAYCYCLE,#01H
	LD      ADRESULT,#BUFFADD
	LD	ADTIMES,#TPOINT
	SCALL   ADC
	LD      BX,#TPOINT             ;PROCESS 8000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI1
	SCALL	FINDPOINT
	CMP	ZHS,#0000H
	JE	SAMFINDT
	LD	MAXPAH,ZHS

	LD      BX,#TPOINT             ;PROCESS 8000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI2
	SCALL	FINDPOINT
	ADD	MAXPAH,ZHS
	
	LD      BX,#TPOINT             ;PROCESS 8000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI3
	SCALL	FINDPOINT
	ADD	MAXPAH,ZHS
	
	LD      BX,#TPOINT             ;PROCESS 8000
	LD      AX,#BUFFADD             ;PROCESS DATA FIND HIGHEST
	LDB	MAXPA,#TLHI4
	SCALL	FINDPOINT
	ADD	MAXPAH,ZHS
	
	LD	CX,MAXPAH
	SHR	CX,#02H
	LD	ZHS,CX	

	CMP     CX,#CYLOW
	JNH     SAMFINDT
	CMP     CX,#CYHI
	JH      SAMFINDT

	LCALL   CLEAR
	LD      DPLINE,#0002H
	LD      DPSTRING,#ZHUANSU       ;ZHUAN SU
	SCALL   STRING
	LD      CX,ZHS                  ;DISPLAY ZHUAN SU
	LCALL   DISPZHS
	RET

;***************** FIND T POINT **************
;ENTER:	MAXPA= TLHI
;	AX=BUFFADD,BX=COUNT
;*********************************************
FINDPOINT:
	LDB     DH,#01H                 ;0 IS FIND >; 1 IS FIND <;
	LD      WIDESTA,#0000H
FINDT:  LDB     CL,[AX]+
	CMPB    DH,#00H
	JE      FHIGHT
	CMPB    CL,#TLLOW
	JH      NEXTT
	LDB     DH,#00H
NEXTT:  DEC     BX      
	CMP     BX,#0000H
	JNE	FINDT
	LD	WIDESTA,#0000H
	SJMP	FTOK
FHIGHT: CMPB    CL,MAXPA		;CMPB #TLHI
	JH      HTT
	JE	HTT
	SJMP    NEXTT
HTT:    LDB     DH,#01H
	CMP     WIDESTA,#0000H
	JNE     FTOK
	ST      AX,WIDESTA
	SJMP    NEXTT
FTOK:   CMP	WIDESTA,#0000H
	JE	FTNO
	LD	CX,AX
	SUB     CX,WIDESTA
	CMP     CX,#CYHI
	JH      FTNO
	LD      ZHS,CX
	RET
FTNO:	LD	ZHS,#0000H
	RET	



;************AD CHANGE PROC***********
;USE CHANEL 4
;ENTER:  ADTIMES        ;A/D CHANGE TIMES
;        ADRESULT       ;A/D RESULT OFFSET
;TIME=171+[(DELAYCYCLE-1)*9+5]=186+DELAYCYCLE*9
;ONE POINT=556T(278us)
;************************************
ADC:    PUSH    ADRESULT		
	PUSH	DX
	LDB	DL,#00H
ADBEG:  LDB     AD_COM,ADCH             ;4 
	LDB	ADREAD,#0BH		;4
ADBUSY:	DJNZ	ADREAD,ADBUSY		;(11-1)*9+5=95
	LDB     ADREAD,AD_RESHI         ;4
	CMPB	DL,#00H			;4
	JE	ADOFFSET		;8 OR 4
	STB	ADREAD,[ADRESULT]+	;4+12
	LDB	DL,#00H			;4
	SJMP	ADNEXT			;8
ADOFFSET:STB     ADREAD,[ADRESULT]+      ;8+12
	LDB	DL,#01H			;4
	NOP				;4
ADNEXT:	PUSH    DELAYCYCLE              ;8
ADDELAY:DJNZ	DELAYCYCLE,ADDELAY	;(DELAYCYCLE-1)*9+5
	POP     DELAYCYCLE              ;12
	DEC     ADTIMES                 ;4
	JNE     ADBEG                   ;8
	POP	DX
	POP     ADRESULT
	RET

;***********DELAY TIME PROC************
;SOFTWARE DELAY TIME
;ENTER: DELAYCYCLE        ;DELAY NUM T STATS:(NUM*28+12+13)/2=N(us)
;**************************************
DELAY:  NOP
	NOP
	NOP
	NOP
	DEC     DELAYCYCLE
	JNE     DELAY
	RET
	
;***********SAMPLE CYPOINT**************
;ISURE COMPLETED
;ADCH=0CH PRESS
;    =0DH QIMI
;ZHS= 
;****************************************
SAMOK:	LD      CX,ZHS
	LD      ADTIMES,#CYPOINT        ;SAMPLE 4000 POINT
	LD      BX,#00C4H               ;196T
	MULU    CX,BX
	LD      BX,#02D0H               ;720
	DIVU    CX,BX
	SUB     CX,#00BAH               ;-186
	LDB     BL,#0AH                 ;/10
	DIVUB   CX,BL
	CMPB	CH,#05H			;>=5 +1
	JNH	TADD1
	INCB	CL
TADD1:	LDB	DELAYCYCLE,CL
	LD      ADRESULT,#BUFFADD
	PUSH	ADTIMES
	SCALL   ADC
	POP	ADTIMES
	LD      AX,#BUFFADD
	LD	BX,ADTIMES
	RET


;***********SAMPLE ZHSHX**************
;ADCH=0CH PRESS
;    =0DH QIMI
;    ZHS
;****************************************
ZSXSAM:	LD      CX,ZHS
	LD      BX,#00C4H               ;196T
	MULU    CX,BX
	LD      BX,#05A0H               ;1440
	DIVU    CX,BX
	SUB     CX,#00BAH               ;-186
	LDB     BL,#0AH                 ;/10
	DIVUB   CX,BL
	LDB	DELAYCYCLE,CL
	LDB	ZSXWC,CH		;SAVE THE ZSX WUCHA

⌨️ 快捷键说明

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