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

📄 t25.asm

📁 单片机检測程序,内有监测、通讯、显示、时间设置等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	POP	BX
	RET
	
;***********WRITE DATA******************
WDATA:  LCALL   CALCH
	LDB     DL,#0AAH                ;WRITE A TESTED FLAG 
	STB     DL,[CX]+
	STB	YLFLAG,[CX]+
	LDB     AL,#TRAINNO
	LDB     AH,#00H
	LDB     BL,#04H
	LDB     HB,#00H
	LCALL   MOVEDATA                ;SAVE TRAIN NO
	LDB     BL,#07H
	LDB     HB,#00H
	LD      AX,#DATESAVE
	INC     AX
	LCALL   MOVEDATA		;SAVE THE DATE
	LCALL   CALCR                   ;CALCULATE GANG ADDR
	LDB     DL,#0AAH                ;WRITE TESTED FLAG
	STB     DL,[CX]+
	LD      DX,ZHS
	STB     DL,[CX]+                ;SAVE ZHUAN SUI
	STB     DH,[CX]+
	STB     GOOD,[CX]+              ;SAVE GOOD
	STB     MAXPAH,[CX]+              ;SAVE MAX
	STB     WIDEH,[CX]+             ;SAVE WIDE
	STB     WIDENUMH,[CX]+          ;SAVE WIDE NUM
	STB     MAXPAL,[CX]+              ;SAVE MAX
	STB     WIDEL,[CX]+             ;SAVE WIDE
	STB     WIDENUML,[CX]+          ;SAVE WIDE NUM
	LDB     BL,#07H
	LDB     HB,#00H
	LD      AX,#DATESAVE
	INC     AX
	LCALL   MOVEDATA
	LD	WIDESTA,WIDESTAH	;SAVE THE MAX 100
	LDB	AX,#DIVKEEP
	LDB	AH,#00H
	SUB	WIDESTA,AX
	LD	AX,WIDESTA
	LDB	BL,#KEEPNUM
	LDB	HB,#00H
	LCALL	MOVEDATA
	LD	WIDESTA,WIDESTAL	;SAVE THE MIN 100
	LDB	AX,#DIVKEEP
	LDB	AH,#00H
	SUB	WIDESTA,AX
	LD	AX,WIDESTA
	LDB	BL,#KEEPNUM
	LDB	HB,#00H
	LCALL	MOVEDATA
	RET

;*********** DISP SELECT******************
;RETURN:  SAVENO=LOCATION NO.
;		 0FFH IS EMPTY
SELEJCH: LCALL   CLEAR
	LD	ADRESULT,#KEEPADD
	LD	BX,#0000H
	LDB	SAVENO,#0FFH
JSNEXT:	LD	AX,BX
	SHL	AX,#01
	ADD	AX,#DPTAB
	LD	DPLINE,[AX]
	LDB	AX,#03H
	MULUB	AX,BX
	ADD	AX,#SYB1
	LD	DPSTRING,AX
	LCALL	STRING
	LDB     DL,[ADRESULT]
	CMPB    DL,#0AAH
	JE	EXSHJ
JSNOD:	LD	DPSTRING,#MENU04
	ADD	DPSTRING,#0002H
	LCALL	STRING
JSADD:	ADD	ADRESULT,#COMMNUM
	INC	BX
	CMP	BX,#0006H
	JE	SELEWAIT
	SJMP	JSNEXT
EXSHJ:	LD	AX,ADRESULT
	INC	AX
	LDB	DL,[AX]+
	CMPB	DL,#03H
	JH	JSNOD
	LDB	SAVENO,#00H
	LDB     CL,#TRAINNO
	LDB     CH,#00H
	PUSH	BX
	LD	BX,#0004H
	LCALL   MOVEDATA
	LCALL   DISPTRAIN
	POP	BX
	SJMP	JSADD
SELEWAIT:CMPB	SAVENO,#0FFH
	JE	NOTRAIN
	SJMP	YESTRAIN
NOTRAIN:LCALL	CLEAR
	LD      DPLINE,#0202H           ;NO TRIAN TESTED
	LD      DPSTRING,#EMPTRAIN
	LCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#JIXU
	LCALL   STRING
	LCALL   INKEY   
	RET
YESTRAIN:
	LD      DPLINE,#0206H
	LD      DPSTRING,#XUANZE
	LCALL   STRING
	LD      DPLINE,#0806H
	LD      DPSTRING,#SHUJU
	LCALL   STRING
SELEINKEY:
	LCALL   INKEY
	CMPB    KEY,#06H
	JH      SELEINKEY
	CMPB    KEY,#00H
	JE      SELEINKEY
	LDB	SAVENO,KEY
	DECB	SAVENO
	LCALL	CALCH
	LDB	DL,[CX]+
	CMPB	DL,#0AAH
	JNE	SELEEXIT
	LDB	DL,[CX]
	CMPB	DL,#03H
	JH	SELEEXIT
	RET
SELEEXIT:LDB	SAVENO,#0FFH
	RET
	
;***********DISP TRAIN NO*************
DISPTRAIN:PUSH  AX
	PUSH    BX
	LDB     AL,#TRAINNO
	LDB     AH,#00H
	LDB     BL,#04H
	INCB	DPLINE	
DTRAIN: LDBZE   DPCHAR,[AX]+
	LCALL   DISPNUM
	DJNZ    BL,DTRAIN
	DECB	DPLINE
	POP     BX
	POP     AX
	RET

;*********** DISP ALL GANG **************
DISPALL:LCALL	CLEAR
	LD	DPLINE,#0000H
	LD	DPSTRING,#HAO
	LCALL	STRING
	LD	DPLINE,#0004H
	LD	DPSTRING,#HUAI
	LCALL	STRING
	LDB	BX,#00H
	LD	MAXPAH,#0000H			;GANG HAO 'S COUNT
	LD	MAXPAL,#0000H			;GANG HUAI'S COUNT
	LD	GANGHAOL,#0000H
TESTGNEXT:
	CMPB	BX,#08H
	JNH	LOWGANG
	LDB	GANGHAOL,#01H
	LDB	GANGHAOH,BX
	SUBB	GANGHAOH,#09H
	SJMP	TESTBEGIN
LOWGANG:LDB	GANGHAOH,BX
	INCB	GANGHAOH
TESTBEGIN:
	LCALL	CALCR			;TEST GANG IS OK OR NO
	LDB	DL,[CX]
	CMPB	DL,#0AAH
	JE	GANGTEST
TNGANG:	INCB	BX
	CMPB	BX,#10H
	JNE	TESTGNEXT
	SJMP	DPALLNEXT
GANGTEST:ADD	CX,#0003H
	LDB	DL,[CX]
	CMPB	DL,#00H
	JE	GANGHAO
	CMPB	DL,#01H
	JE	GANGHUAI
	SJMP	TNGANG
GANGHAO:LD	AX,MAXPAH
	SHL	AX,#01H
	ADD	AX,#GHAOTAB
	INC	MAXPAH
	LD	DPLINE,[AX]
	LDBZE	DPCHAR,GANGHAOL
	LCALL	DISPNUM
	LDBZE	DPCHAR,GANGHAOH
	LCALL	DISPNUM
	LD	AX,MAXPAH
	LDB	DL,#05H
	DIVUB	AX,DL
	CMPB	AH,#00H
	JE	TNGANG
	LDB	DPCHAR,#10H
	LCALL	DISPNUM
	SJMP	TNGANG
GANGHUAI:LD	AX,MAXPAL
	SHL	AX,#01H
	ADD	AX,#GHUAITAB
	INC	MAXPAL
	LD	DPLINE,[AX]
	LDBZE	DPCHAR,GANGHAOL
	LCALL	DISPNUM
	LDBZE	DPCHAR,GANGHAOH
	LCALL	DISPNUM
	LD	AX,MAXPAL
	LDB	DL,#05H
	DIVUB	AX,DL
	CMPB	AH,#00H
	JE	TNGANG
	LDB	DPCHAR,#10H
	LCALL	DISPNUM
	SJMP	TNGANG
DPALLNEXT:
	LCALL	INKEY
	LCALL	CLEAR
	LCALL	CALCH
	LD	AX,CX
	ADD	AX,#0006H
	LDB     BL,#07H
	LDB     HB,#00H
	LD      CX,#DATESAVE
	INC     CX
	LCALL   MOVEDATA
	LCALL	DISPDATE
	LCALL	CALCH
	INC	CX
	LDB	YLFLAG,[CX]
	INC	CX
	LD	AX,CX
	LDB     CL,#TRAINNO
	LDB     CH,#00H
	LDB     BL,#04H
	LDB     HB,#00H
	LCALL   MOVEDATA
	LDB	BL,#06H			;DISPLAY YLB OR QMX OR ZSX
	MULUB	BL,YLFLAG
	ADD	BX,#SUBM01
	ADD	BX,#0002H
	LD	DPSTRING,BX
	LD	DPLINE,#0002H
	LCALL	STRING
	LD	DPSTRING,#MENU01
	ADD	DPSTRING,#0002H
	LCALL	STRING
	LD	DPSTRING,#BAOCUN
	ADD	DPSTRING,#0004H
	LCALL	STRING
	LD	DPLINE,#0004H
	LD      DPSTRING,#TRAIN
	LCALL   STRING
	LCALL   DISPTRAIN		;DISPLAY TRAIN
	RET


;***********DISP PROC******************
DISPSHJ:LCALL   SELEJCH
	CMPB	SAVENO,#0FFH
	JNE     DPBEGIN
	RET
DPBEGIN:LCALL	DISPALL
	LD	DPLINE,#0006H
	LD	DPSTRING,#DANGANG
	LCALL	STRING
	LD	DPLINE,#0A06H
	LD	DPSTRING,#FANHUI
	LCALL	STRING
	LCALL	INKEY
	CMPB	KEY,#0FH
	JNE	DNGANG
	RET
DNGANG: LCALL	CLEAR
	LD      DPLINE,#0000H
	LD      DPSTRING,#TRAIN
	LCALL   STRING
	LCALL   DISPTRAIN
	LD      DPLINE,#0002H
	LD      DPSTRING,#GANG          ;SHU RU GANG HAO
	LCALL   STRING
	LDB     BL,#02H
	LDB     AL,#GANGHAOL
	LDB     AH,#00H
	INCB	DPLINE
DINGANG:LCALL   INKEY
	LDBZE   DPCHAR,KEY
	LCALL   DISPNUM
	STB     KEY,[AX]+
	DJNZ    BL,DINGANG
	DECB	DPLINE
DJUDGE: LDB     AL,#GANGHAOL
	LDB     AH,#00H
	LDB     BL,[AX]+
	CMPB    BL,#01H
	JH      DNGANG
	CMPB    BL,#00H
	JE      DJUDGENEXT
	LDB     BL,[AX]
	CMPB    BL,#06H
	JH      DNGANG
	LJMP    DJUDGEOK
DJUDGENEXT:LDB  BL,[AX]
	CMPB    BL,#09H
	JH      DNGANG
	CMPB    BL,#00H
	JE      DNGANG  
DJUDGEOK:LCALL  CALCR                   ;CALC THE GANGHAO ADDRESS
	LD      AX,CX
	LDB     DL,[AX]+
	CMPB    DL,#0AAH
	JE      TESTGANG                        ; THIS GANG IS NOT TESTED
	LCALL   CLEAR
	LD      DPLINE,#0202H
	LD      DPSTRING,#EMPGANG
	LCALL   STRING
	LD      DPLINE,#0406H           ; ANY KEY CONTINUTE
	LD      DPSTRING,#JIXU
	LCALL   STRING
	LCALL   INKEY   
	SJMP	DPXUANZE
TESTGANG:LDB    DL,[AX]+
	LDB     DH,[AX]+
	LD      ZHS,DX
	LDB     GOOD,[AX]+
	LDB     MAXPAH,[AX]+
	LDB     WIDEH,[AX]+
	LDB     WIDENUMH,[AX]+
	LDB     MAXPAL,[AX]+
	LDB     WIDEL,[AX]+
	LDB     WIDENUML,[AX]+
	LDB     BL,#07H
	LDB     HB,#00H
	LD      CX,#DATESAVE
	INC     CX
	LCALL   MOVEDATA
	LCALL   DISPRES
	LD      DPLINE,#0606H           ; ANY KEY CONTINUTE
	LD      DPSTRING,#JIXU
	LCALL   STRING
	LCALL   INKEY   
DPXUANZE:	LCALL   CLEAR
	LD      DPLINE,#0001H
	LD      DPSTRING,#CESHI         ;DISPLAY SELECT
	LCALL   STRING
	LD      DPLINE,#0801H
	LD      DPSTRING,#SHGANG               ;DISPLAY SELECT
	LCALL   STRING
	LD      DPLINE,#0003H
	LD      DPSTRING,#BIEGANG               ;DISPLAY SELECT
	LCALL   STRING
	LD      DPLINE,#0803H
	LD      DPSTRING,#FANHUI
	LCALL   STRING
	LD      DPLINE,#0405H
	LD      DPSTRING,#XUANZE
	LCALL   STRING
	LCALL   INKEY
	CMPB    KEY,#0FH
	JE      DISPOK
	LCALL   CLEAR
	CMPB    KEY,#0AH
	JE      DINCGANG
	CMPB    KEY,#0BH
	JE      DECGANG
	LJMP    DNGANG
DINCGANG:ADD    GANGHAOL,#0100H
	CMP     GANGHAOL,#0A00H
	JE      DINCHI
	CMP     GANGHAOL,#0701H
	JE      DINLOW
	LJMP    DJUDGE
DINCHI: LD      GANGHAOL,#0001H
	LJMP    DJUDGE
DINLOW: LD      GANGHAOL,#0100H
	LJMP    DJUDGE
DISPOK: RET
DECGANG:CMP     GANGHAOL,#0100H
	JE      DECHI
	CMP     GANGHAOL,#0001H
	JE      DECLOW
	SUB     GANGHAOL,#0100H
	LJMP    DJUDGE
DECHI:  LD      GANGHAOL,#0601H
	LJMP    DJUDGE
DECLOW: LD      GANGHAOL,#0900H
	LJMP    DJUDGE

;***********COMM PROC******************
COMMDATA:
	LCALL   SELEJCH
	CMPB	SAVENO,#0FFH
	JNE     COMMBEGIN
	RET
COMMINT:LCALL   CLEAR
	LD      DPLINE,#0200H
	LD      DPSTRING,#COMMERR
	LCALL   STRING
	LD	DPLINE,#0406H
	LD      DPSTRING,#JIXU
	LCALL   STRING
	LCALL   INKEY
	RET
COMMBEGIN:LCALL  CLEAR
	LD      DPLINE,#0200H
	LD      DPSTRING,#COMMREADY
	LCALL   STRING
SHAKEF: ORB     SRSTAT,SP_STAT
	JBC     SRSTAT,6,SHAKEF
	ANDB    SRSTAT,#0BFH
	LDB     SRCHAR,SBUF
	CMPB    SRCHAR,#0AAH
	JNE     COMMINT
	LCALL   CLEAR
	LD      DPLINE,#0200H
	LD      DPSTRING,#COMMWAIT
	LCALL   STRING
	LCALL	CALCH
	LD      BX,#COMMNUM
	LD      AX,CX             ;SAVE THE ADDR
OUTDATA:LDB     SRCHAR,[AX]+
OUT:    ORB     SRSTAT,SP_STAT
	JBC     SRSTAT,5,OUT
	LDB     SBUF,SRCHAR     
	ANDB    SRSTAT,#0DFH
IN:     ORB     SRSTAT,SP_STAT
	JBC     SRSTAT,6,IN
	ANDB    SRSTAT,#0BFH
	LDB     SRCHAR,SBUF
	CMPB    SRCHAR,#0AAH
	JNE     COMMINT
	LD      DPLINE,#0404H
	LD      CX,BX
	DEC     CX
	LD      DX,#0000H
	LD      EX,#03E8H
	DIVU    CX,EX
	LDBZE   DPCHAR,CL       ;DISP 1000
	LCALL   DISPNUM
	LD      CX,DX
	DECB	DPLINE
	LCALL   DISPWIDE
	LD	DPSTRING,#SBBYTE
	LCALL	STRING	
	DEC     BX
	JNE     OUTDATA
	LCALL   CLEAR
	LD      DPLINE,#0402H
	LD      DPSTRING,#COMMOK
	LCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#JIXU
	LCALL   STRING
	LCALL   INKEY
	RET

;***********DISPLAY DATE &TIME*******
DISPDATE:LCALL  CLEAR
	LD      DPLINE,#0001H
	LDB     BL,YEAR                 ;DISP YEAR
	SHRB    BL,#04H
	LDBZE   DPCHAR,BL
	LCALL   DISPNUM
	LDB     BL,YEAR
	ANDB    BL,#0FH
	LDBZE   DPCHAR,BL               ;DISP 1
	LCALL   DISPNUM
	LDB     DPCHAR,#0EH             ;DISP .
	LCALL   DISPNUM
	LDB     BL,MONTH                ;DISP MONTH
	SHRB    BL,#04H
	LDBZE   DPCHAR,BL
	LCALL   DISPNUM
	LDB     BL,MONTH
	ANDB    BL,#0FH
	LDBZE   DPCHAR,BL               ;DISP 1
	LCALL   DISPNUM
	LDB     DPCHAR,#0EH             ;DISP .
	LCALL   DISPNUM
	LDB     BL,DATE                 ;DISP DATE
	SHRB    BL,#04H
	LDBZE   DPCHAR,BL
	LCALL   DISPNUM
	LDB     BL,DATE
	ANDB    BL,#0FH
	LDBZE   DPCHAR,BL               ;DISP 1
	LCALL   DISPNUM
	INCB    DPCLUM
	LDB     BL,HOURS                ;DISP HOURS
	SHRB    BL,#04H
	LDBZE   DPCHAR,BL
	LCALL   DISPNUM
	LDB     BL,HOURS
	ANDB    BL,#0FH
	LDBZE   DPCHAR,BL               ;DISP 1
	LCALL   DISPNUM
	LDB     DPCHAR,#0AH             ;DISP :
	LCALL   DISPNUM
	LDB     BL,MINUTES              ;DISP MINUTES
	SHRB    BL,#04H
	LDBZE   DPCHAR,BL
	LCALL   DISPNUM
	LDB     BL,MINUTES
	ANDB    BL,#0FH
	LDBZE   DPCHAR,BL               ;DISP 1

⌨️ 快捷键说明

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