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

📄 t25.asm

📁 单片机检測程序,内有监测、通讯、显示、时间设置等
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;*************** FSR REGISTER***********
AD_COM          EQU     02H
AD_RESLO        EQU     02H
AD_RESHI        EQU     03H
HSI_MODE        EQU     03H
HSI_TIME        EQU     04H
HSO_TIME        EQU     04H
SBUF            EQU     07H
INT_MASK        EQU     08H
INT_PENDING     EQU     09H
TIMER1          EQU     0AH
TIMER2          EQU     0CH
BAUD_RATE       EQU     0EH
P0              EQU     0EH
P2              EQU     10H
SP_CON          EQU     11H
SP_STAT         EQU     11H
IOC0            EQU     15H
IOS0            EQU     15H
IOC1            EQU     16H
IOS1            EQU     16H
PWM_CONTROL     EQU     17H
SP              EQU     18H
P3              EQU     1FFFH
P4              EQU     1FFEH
EXTVEC          EQU     200EH
SERAILVEC       EQU     200CH

;****** GENERAL DATA USED REGISTER ****
AX              EQU     1CH
AH              EQU     1DH
AL              EQU     1CH
BX              EQU     1EH
HB              EQU     1FH
BL              EQU     1EH
CX              EQU     20H
CH              EQU     21H
CL              EQU     20H
DX              EQU     22H
DH              EQU     23H
DL              EQU     22H
EX              EQU     24H
EH              EQU     25H
EL              EQU     24H

;************** A/D CHANGE USED**********
ADTIMES         EQU     26H     ;A/D CHANGE TIMES
ADRESULT        EQU     28H     ;A/D RESULT ADDRES
ADREAD          EQU     2AH     ;A/D READ BUFFLE
ADCH            EQU     2BH     ;USE CHANEL

;************** DISPLAY USED*************
DPCHAR          EQU     2CH     
DPTEMP          EQU     2EH
DPSTRING        EQU     30H
DPLINE          EQU     32H
DPCLUM          EQU     33H

;************** KEYBORAD USED************
KEYSTAT         EQU     34H
KEYTEMP         EQU     36H
KEY             EQU     38H     

;************** SERAIL USED**************
SRSTAT          EQU     3AH
SRCHAR          EQU     3CH

;************** DELAY TIME USED**********
DELAYCYCLE      EQU     3EH     ;DELAY NUM T STATS:(NUM*28+12+13)/4=N(us)

;************** DATA PROCESS *********
TRAINNO         EQU     40H     ;TOTAL 4 BYTES 40H,41H,42H,43H
GANGHAOL        EQU     44H     ;TOTAL 2 BYTES 44H,45H
GANGHAOH	EQU	45H
MAXPA           EQU     46H     ;MAX PRESS MPa
WIDE            EQU     48H     ;>25.5MPa WIDE
WIDENUM		EQU	4AH
WIDESTA         EQU     4CH	;WIDE COUNT START ADD

MAXPAH		EQU     4EH	;MAX 'S HIGH
WIDEH		EQU     50H	
WIDENUMH	EQU	51H
WIDESTAH        EQU     52H
MAXPAL		EQU     54H	;MAX 'S LOW
WIDEL           EQU     56H
WIDENUML	EQU	57H
WIDESTAL        EQU     58H

;*************** JUDGE PRESS************
YLFLAG          EQU     5AH
GOOD            EQU     5CH     ;GOOD OR BAD
ZHS             EQU     5EH     ;ZHUAN SU
SAVENO          EQU     60H     ;SAVE THE TRIAN 0,1,2,3,4,5
ZSXXH           EQU     62H     ;ZSX TRAIN 0,1,2,3
ZSXWC		EQU	63H	;

;************** DATE IS USED************
MISEC           EQU     64H
SECONDS         EQU     65H
MINUTES         EQU     66H
HOURS           EQU     67H
DAY             EQU     68H
DATE            EQU     69H
MONTH           EQU     6AH
YEAR            EQU     6BH

;DATE CONSTENT
DATEADD         EQU     5FF8H
DATESAVE        EQU     0064H


;;;CONSTENT
YLACH		EQU	0CH
QMACH		EQU	0FH
DYACH		EQU	0EH

DCIN            EQU     0010H   ;MAX=16V
DCLOW           EQU     025FH   ;9.5V
TPOINT		EQU	1F40H	;8000 IS FIND T
T600		EQU	07FCH	;600R/M POINT
T500		EQU	0995H	;500R/M
T350            EQU     0D8CH   ;350.5R/M
T1200           EQU     03FEH   ;1200R/M
PR125		EQU	7DH	;125
PR15		EQU	0FH	;15
PR4		EQU	04H	;4

CYPOINT         EQU     0FA0H   ;4000 POINT CY ALL 
BUFFADD         EQU     4000H   ;WORK AREA =720*6(4K)
FPOINT		EQU	02D0H	;720 POINT  
HPOINT		EQU	02EEH	;750
LPOINT		EQU	02B2H	;690
KEEPADD         EQU     6000H   ;
COMMNUM         EQU     0D9EH   ;217*16+13+1=3486 BYTES
HEADERN         EQU     000DH   ;13=FLAG(1)+FLAG(1)+TAINNO(4)+TIME(3)+DATE(4)
RECHEADER       EQU     0011H   ;17=FLAG(1)+ZHS(2)+GOOD(1)+MAXPA(1)*2
;                               ;   +WIDE(1)*2+WIDENUM(1)*2+TIME(3)+DATE(4)
CYHI            EQU     0D8CH   ;3500 POINT 600*2044/3500=350.5R/M
CYLOW           EQU     03FEH   ;1022 POINT 600*2044/1022=1200R/M
KEEPNUM         EQU     64H     ;100DU
DIVKEEP         EQU     32H     ;50BYTES 50POINT 50DU
TWFIVE          EQU     33H     ;(33)51*125/255=25MPa
TNINE           EQU     1EH     ;(1E)30*125/255=14.7MPa
PRESS25		EQU	33H	;
TLLOW           EQU     0AH     ;(0A)10*125/255=4.9MPa
TLHI4           EQU     20H     ;(20)32*125/255=15.68MPa
TLHI3		EQU	21H
TLHI2		EQU	22H
TLHI1		EQU	23H


;*************YLB NO'S CONDITIONS********
GM11		EQU	66H	;(52)82==40.2MPa (66)==50MPa (GM+GN)/2<=GM11
GM21		EQU	29H	;(29)41==20.1MPa (GM-GN)>GM21 
KM31		EQU	0AH	;(KM-KN)>10
KM41		EQU	0BH	;(KM+KN)/2<=11
GM51		EQU	0CCH	;(CC)204==100MPa GM<=100MPa (KM+KN)/2>35
KM51		EQU	23H	;(23)35
GM61		EQU	0CCH	;(CC)204==100MPa GM>100MPa (KM+KN)/2>40
KM61		EQU	28H	;(28)40

;*************** QMX NO'S CONDITIONS**********
QMGM1		EQU	033H	;(33)51*15/255=3.00MPa		>3.00MPa
QMGM2		EQU	02DH	;(2D)45*15/255=2.647MPa		<=2.64MPa
QMXXSH		EQU	90

BFGM1		EQU	0E7H	;(E7)231*15/255=13.58MPa	>13.58
BFGM2		EQU	0AAH	;(AA)170*15/255=10MPa		<=10


                CSEG    AT      2018H
		DCB     3DH

                CSEG    AT      2080H
;***************MAIN PROCEDURE***********
STAR:   DJNZ    AX,$
	DJNZ    AX,$
	DJNZ	AX,$
        LD      SP,#00F0H       ;setup stack postion
        LDB     IOC1,#20H       ;setup I/O function
	LDB     SRSTAT,#20H
	LDB     BAUD_RATE,#26H  ;BAUD=12M/(64*(B+1)) 4800NT=8026H
	LDB     BAUD_RATE,#80H  ;HERE IS 2400BT=804DH 9600=8013H
	LDB     SP_CON,#09H     ;REN=1,PEN=0
	SCALL   KEYINIT
	SCALL   DPINIT
	SCALL   CLEAR
	LCALL   WATCH
MENU:   SCALL   CLEAR
	LD      DPLINE,#0000H
	LD      DPSTRING,#MENU01
	SCALL   STRING
	LD      DPLINE,#0002H
	LD      DPSTRING,#MENU02
	SCALL   STRING
	LD      DPLINE,#0004H
	LD      DPSTRING,#MENU03
	SCALL   STRING
	LD      DPLINE,#0A00H
	LD      DPSTRING,#MENU04
	SCALL   STRING
        LD      DPLINE,#0A02H
	LD      DPSTRING,#MENU05
	SCALL   STRING
        LD      DPLINE,#0A04H
	LD      DPSTRING,#MENU06
	SCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#XUANZE
	SCALL   STRING
WAITIN: SCALL   INKEY
	CMPB    KEY,#01H        ;1
	JE      IS1
	CMPB    KEY,#02H        ;2
	JE      IS2
	CMPB    KEY,#03H        ;3
	JE      IS3
	CMPB    KEY,#04H        ;4
	JE      IS4
	CMPB    KEY,#05H        ;5
	JE      IS5
	CMPB    KEY,#06H        ;6
	JE      IS6
	SJMP    WAITIN
IS1:    LCALL   JCSHJ
	SJMP    MENU
IS2:    LCALL	DISPSHJ
	SJMP    MENU
IS3:    LCALL   COMMDATA
	SJMP    MENU
IS4:	LCALL	CLEARSHJ
	SJMP	MENU	
IS5:    LCALL   WDATE           ;INIT DATE & TIME
	SJMP    MENU    
IS6:    LCALL   WATCH
	SJMP    MENU

;**************** CLEAR CHUJU***********
CLEARSHJ:
	LCALL	SELEJCH
	CMPB	SAVENO,#0FFH
	JNE	CLEARNEXT
	RET
CLEARNEXT:
	LCALL	CALCH
	LDB	BX,#00H
	STB	BX,[CX]
	RET
	
	
;****************SUBMENU JC***********
JCSHJ:  SCALL   CLEAR
	LD      DPLINE,#0000H
	LD      DPSTRING,#SUBM01
	SCALL   STRING
	LD      DPLINE,#0800H
	LD      DPSTRING,#SUBM02
	SCALL   STRING
	LD      DPLINE,#0002H
	LD      DPSTRING,#SUBM03
	SCALL   STRING
	LD      DPLINE,#0802H
	LD      DPSTRING,#SUBM04
	SCALL   STRING
	LD      DPLINE,#0004H
	LD      DPSTRING,#SUBM05
	SCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#XUANZE
	SCALL   STRING
SWAITIN:SCALL   INKEY
	CMPB    KEY,#01H        ;1
	JE      SIS1
	CMPB    KEY,#02H        ;2
	JE      SIS2
	CMPB    KEY,#03H        ;3
	JE      SIS3
	CMPB    KEY,#04H        ;4
	JE      SIS4
	CMPB    KEY,#0FH        ;F
	JE      SIS5
	SJMP    SWAITIN
SIS1:	LDB     YLFLAG,#00H
	LDB     ADCH,#YLACH
	LCALL	SAMPLE
	SJMP	JCSHJ
SIS2:	LDB     YLFLAG,#01H
	LDB     ADCH,#QMACH
	LCALL	SAMPLE
	SJMP	JCSHJ
SIS3:	LDB	YLFLAG,#02H
	LDB	ADCH,#QMACH
	LCALL	JCZSX
	LCALL	SAMPLE
	SJMP	JCSHJ
SIS4:	LDB     YLFLAG,#03H
	LDB     ADCH,#QMACH
	LCALL	SAMPLE
	SJMP	JCSHJ
SIS5:	RET

;****************SUBMENU ZSX***********
JCZSX:  SCALL   CLEAR
	LD      DPLINE,#0001H
	LD      DPSTRING,#ZSXM01
	SCALL   STRING
	LD      DPLINE,#0801H
	LD      DPSTRING,#ZSXM02
	SCALL   STRING
	LD      DPLINE,#0003H
	LD      DPSTRING,#ZSXM03
	SCALL   STRING
	LD      DPLINE,#0803H
	LD      DPSTRING,#ZSXM04
	SCALL   STRING
	LD      DPLINE,#0406H
	LD      DPSTRING,#XUANZE
	SCALL   STRING
ZSXWAIT:SCALL   INKEY
	CMPB    KEY,#04H        ;>4
	JH      ZSXWAIT
	CMPB    KEY,#00H        ;=0
	JE      ZSXWAIT
	LDB     ZSXXH,KEY
	RET

;***********INQUIRE KEY AND RETURN KEY***
;RETURN: KEY = RETURN KEY
INKEY:  LD      KEYTEMP,#1001H
	LDB     KEYSTAT,[KEYTEMP]
	ANDB    KEYSTAT,#07H
	JE      INKEY
	LDB     KEYSTAT,#40H    ;SET FIFO READ
	STB     KEYSTAT,[KEYTEMP]
	LD      KEYTEMP,#1000H
	LDB     KEYSTAT,[KEYTEMP]
	LD      KEY,#0000H
COMPKEY:LDB     KEYTEMP,KEYCODE[KEY]
	CMPB    KEYTEMP,KEYSTAT
	JE      KEYOK
	INCB    KEY
	SJMP    COMPKEY
KEYOK:  RET     

;***********KEY INIT******************
KEYINIT:LD      KEYTEMP,#1001H
	LDB     KEYSTAT,#01H    ;SET DISP & KEY FUNCTION
	STB     KEYSTAT,[KEYTEMP]
	LDB     KEYSTAT,#2CH    ;SET CLOCK (2CH)00101001=6M 38H=12M
	STB     KEYSTAT,[KEYTEMP]
	LDB     KEYSTAT,#0D3H   ;CLEA
	STB     KEYSTAT,[KEYTEMP]
	RET


;*********** CLEAR SCREEN ***************
CLEAR:  PUSH    CX
	PUSH    BX
	PUSH    DX
	LD      CX,#0B840H      ;SET X&Y POSITION
	LD      BX,#0840H
	LD      DX,#0E040H
CLNEXT: LD      DPTEMP,DX
	LDB     DPLINE,CH
	STB     DPLINE,[DPTEMP]
	SCALL   DPWAIT
	LDB     DPLINE,CL
	STB     DPLINE,[DPTEMP]
	SCALL   DPWAIT
	INC     DPTEMP
CCNEXT: LDB     DPCHAR,#00H
	STB     DPCHAR,[DPTEMP]
	DJNZ    BL,CCNEXT
	INCB    CH
	DJNZ    HB,CLNEXT
	CMP     DX,#0E080H
	JE      CLEARET
	LD      DX,#0E080H
	LD      CX,#0B840H
	LD      BX,#0840H
	SJMP    CLNEXT
CLEARET:POP     DX
	POP     BX
	POP     CX
	RET

;***********DISPLAY INIT***************
DPINIT: LD      DPTEMP,#0E080H
	LDB     DPCHAR,#3FH
	STB     DPCHAR,[DPTEMP] ;DISPLAY ON
	SCALL   DPWAIT
	LDB     DPCHAR,#0C0H
	STB     DPCHAR,[DPTEMP] ;SET START LINE
	SCALL   DPWAIT
	LD      DPTEMP,#0E040H
	LDB     DPCHAR,#3FH
	STB     DPCHAR,[DPTEMP] ;DISPLAY ON
	SCALL   DPWAIT
	LDB     DPCHAR,#0C0H
	STB     DPCHAR,[DPTEMP] ;SET START LINE
	SCALL   DPWAIT
	RET

;***********DISPLAY WAIT IF BUSY*******
DPWAIT: LDB     DPCHAR,[DPTEMP]
	JBS     DPCHAR,7,DPWAIT
	RET

;*********** HAN ZI *******************
;ENTER: DPLINE=LINE     DPCLUM= COLUME
;       DPSTRING=TAB ADD
HANZI:  PUSH    BX
	CMPB    DPCLUM,#07H
	JH      SETSEC
	LD      DPTEMP,#0E080H
	SJMP    SETXY
SETSEC: LD      DPTEMP,#0E040H
	SUBB    DPCLUM,#08H
SETXY:  ADDB    DPLINE,#0B8H
	STB     DPLINE,[DPTEMP]
	SCALL   DPWAIT
	LDB     BL,#08H
	MULUB    BL,DPCLUM
	LDB     DPCLUM,BL
	ADDB    DPCLUM,#40H
	STB     DPCLUM,[DPTEMP]
	SCALL   DPWAIT
	LDB     BL,#10H
	LDB     HB,#01H
	INC     DPTEMP
HNEXT:  LDB     DPCHAR,[DPSTRING]+
	STB     DPCHAR,[DPTEMP]
	DJNZ    BL,HNEXT
	CMPB    HB,#00H
	JE      HRET
	DEC     DPTEMP
	INC     DPLINE
	STB     DPLINE,[DPTEMP]
	SCALL   DPWAIT
	STB     DPCLUM,[DPTEMP]
	LDB     BL,#10H
	INC     DPTEMP
	LDB     HB,#00H
	SJMP    HNEXT
HRET:   POP     BX
	RET

;***********DISPLAY NUMBER***************
;ENTER: DPCHAR = NUMBER
;       DPLINE=LINE     DPCLUM= COLUME
DISPNUM:PUSH    DPSTRING
	PUSH    DPLINE
	PUSH    BX
	CMPB    DPCLUM,#07H
	JH      SETSECN
	LD      DPTEMP,#0E080H
	SJMP    SETXYN
SETSECN:LD      DPTEMP,#0E040H
	SUBB    DPCLUM,#08H
SETXYN: ADDB    DPLINE,#0B8H
	STB     DPLINE,[DPTEMP]
	PUSH    DPCHAR
	SCALL   DPWAIT
	LDB     BL,#08H
	MULUB	BL,DPCLUM
	LDB     DPCLUM,BL
	ADDB    DPCLUM,#40H
	STB     DPCLUM,[DPTEMP]
	SCALL   DPWAIT
	POP     DPCHAR
	LD      DPSTRING,#NUMTAB
	LDB     BL,#08H
	MULUB   BL,DPCHAR
	ADD     DPSTRING,BX
	LDB     BL,#08H
	INC     DPTEMP
NNEXT:  LDB     DPCHAR,[DPSTRING]+
	STB     DPCHAR,[DPTEMP]
	DJNZ    BL,NNEXT
	POP     BX
	POP     DPLINE
	POP     DPSTRING
	INCB    DPCLUM
	RET

;***********DISPLAY CHAR***************
;ENTER: DPCHAR = CHAR
;       DPLINE=LINE     DPCLUM= COLUME
DISPCH: PUSH    DPSTRING
	PUSH    DPLINE
	PUSH    BX
	CMPB    DPCLUM,#07H
	JH      SETSECC
	LD      DPTEMP,#0E080H
	SJMP    SETXYC
SETSECC:LD      DPTEMP,#0E040H
	SUBB    DPCLUM,#08H
SETXYC: ADDB    DPLINE,#0B8H
	STB     DPLINE,[DPTEMP]
	PUSH    DPCHAR
	SCALL   DPWAIT
	LDB     BL,#08H
	MULUB    BL,DPCLUM
	LDB     DPCLUM,BL
	ADDB    DPCLUM,#40H
	STB     DPCLUM,[DPTEMP]
	SCALL   DPWAIT
	POP     DPCHAR
	LD      DPSTRING,#ALPHTAB

⌨️ 快捷键说明

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