📄 t25.asm
字号:
;*************** 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 + -