主题:[讨论]微调机部分程序 急 续
SUB autorun (position, timech, vacum, current, stdfreq, bias, whichstep, wtrota, bias1, curr1, bias2, curr2, stdres)
f0 = 0
CLS
portA = &H26C
portb = &H26D
portc = &H26E
addr82552 = &H26F
ch08253 = &H264
ch18253 = &H265
addr8253 = &H267
OUT portC8255, &HFF
OUT addr82552, &H7 '关闭高真空阀
OUT addr82552, &HB '关真空放气阀
OUT addr82552, &H1 '前级阀关断
statec = statec OR &H20
statec = statec OR &H10
statec = statec OR &H8
LOCATE 10, 10
PRINT "前级阀关断"
CALL DELAY40(1)
DIM sar AS INTEGER
sar = 0
sar = INP(portA)
IF sar = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sat AS INTEGER
sat = 0
sat = INP(portA)
IF sat = 14 THEN GOTO exit4
OUT addr82552, &H4 '低真空室打开
state = statec AND &HFB
LOCATE 12, 10
PRINT "抽低真空,请等待..."
DIM asa AS INTEGER
asa = 0
asa = INP(portA)
IF asa = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sd AS INTEGER
sd = 0
sd = INP(portA)
IF sd = 14 THEN GOTO exit4
LOCATE 14, 10
PRINT "自动清洗开始......"
OUT addr82552, &HE '打开清洗电源
FOR ig = 1 TO position
CALL rotation(position, whichstep)
FOR i = 1 TO 150000
x = 0
DIM saa AS INTEGER
saa = 0
saa = INP(portA)
IF saa = 14 THEN GOTO exit4
NEXT i
NEXT ig
OUT addr82552, &HF '关闭清洗电源
IF stedfrq < 2.5E+07 THEN CALL DELAY40(60)
'END IF
CALL DELAY40(2)
DIM bsa AS INTEGER
bsa = 0
bsa = INP(portA)
IF bsa = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sa3 AS INTEGER
sa3 = 0
sa3 = INP(portA)
IF sa3 = 14 THEN GOTO exit4
OUT addr82552, &H5 '关闭低真空阀
statec = statec OR &H4
CALL DELAY40(1)
CLS
LOCATE 10, 10
PRINT "前级阀开 "
LOCATE 12, 10
PRINT "抽低真空完毕,开始抽高真空,请等待..."
DIM s1a AS INTEGER
s1a = 0
s1a = INP(portA)
IF s1a = 14 THEN GOTO exit4
OUT addr82552, &H0 '开前级阀
CALL DELAY40(1)
DIM msa AS INTEGER
msa = 0
msa = INP(portA)
IF msa = 14 THEN GOTO exit4
CALL DELAY40(1)
OUT addr82552, &H6 '开高真空阀
statec = statec AND &HFE
statec = statec AND &HF7
CALL DELAY40(2)
DIM psa AS INTEGER
psa = 0
psa = INP(portA)
IF psa = 14 THEN GOTO exit4
OUT addr82552, &HC '开真空计
CALL DELAY40(2)
kh$ = "a"
CALL nzkdmea(vacum, kh$, to$, va4) '检测高真空度
IF kh$ = CHR$(27) GOTO exit4
DIM osa AS INTEGER
osa = 0
osa = INP(portA)
IF msa = 14 THEN GOTO exit4
IF wtrota = 1 THEN
bia = bias
cur = current
quan = 0
CALL freqmea1(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s2a AS INTEGER
s2a = 0
s2a = INP(portA)
IF s2a = 14 THEN GOTO exit4
END IF
IF wtrota = 3 THEN
cur = curr1
bia = bias1
quan = 2
CALL freqmea2(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s3a AS INTEGER
s3a = 0
s3a = INP(portA)
IF s3a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CLS
LOCATE 13, 10
PRINT "开始调第2圈..."
LOCATE 20, 10
PRINT "按 ESC 键,关闭高真空退出! "
quan = 1
cur = curr2
bia = bias2
CALL DELAY40(2)
CALL freqmea1(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s4a AS INTEGER
s4a = 0
s4a = INP(portA)
IF s4a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CLS
LOCATE 13, 10
PRINT "开始调第3圈..."
bia = bias
cur = current
quan = 0
SLEEP 3
CALL DELAY40(3)
CALL freqmea(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s5a AS INTEGER
s5a = 0
s5a = INP(portA)
IF s5a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
END IF
IF wtrota = 2 THEN
cur = curr1
bia = bias1
quan = 1
CALL freqmea2(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s6a AS INTEGER
s6a = 0
s6a = INP(portA)
IF s6a = 14 THEN GOTO exit4
CALL DELAY40(1)
CLS
LOCATE 13, 10
PRINT "开始调第2圈..."
bia = bias
cur = current
quan = 0
CALL DELAY40(2)
DIM s7a AS INTEGER
s7a = 0
s7a = INP(portA)
IF s7a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CALL freqmea(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s8a AS INTEGER
s8a = 0
s8a = INP(portA)
IF s8a = 14 THEN GOTO exit4
END IF
IF ke1$ = "q" OR ke1$ = "Q" THEN GOTO enauto
exit4:
LOCATE 23, 40
PRINT "正在退出!......"
OUT addr82552, &HD '关真空计
OUT addr82552, &H7 '关闭高真空阀
statec = statec OR &H40
statec = statec OR &H8
CALL DELAY40(15)
OUT addr82552, &HA '打开真空放气阀
statec = statec AND &HDF
OUT addr82552, &H9 '打开档板
statec = statec OR &H10
CALL DELAY40(35)
enauto: CLS
END SUB
SUB nzkdmea (vacum, kh$, to$, va4)
va1 = vacum
va2 = 2
qzrecal: IF va1 < 1 THEN
va1 = va1 * 10
va2 = va2 + 1
GOTO qzrecal
END IF
qzrecal2: IF va1 >= 10 THEN
va1 = va1 / 10
va2 = va2 - 1
GOTO qzrecal2
END IF
LOCATE 18, 10
PRINT "真空度预置值:"; va1; "E"; va2;
LOCATE 22, 10
PRINT "###提示:按字母G键将继续运行微调程序###"
LOCATE 23, 10
PRINT "......按ESC键将退出自动运行程序,返回主菜单......"
va4 = ABS(va2)
OPEN "COM2:1200,N,8,1,CS,DS,cd" FOR RANDOM AS #4
qremea:
to$ = INKEY$
kh$ = INKEY$
IF to$ = "j" OR to$ = "J" THEN GOTO qjs
IF kh$ = CHR$(27) THEN GOTO qjs
IF EOF(4) THEN GOTO qremea
gg: a$ = INPUT$(1, #4)
b$ = MID$(a$, 1, 1)
IF b$ = CHR$(170) THEN GOTO gb
GOTO gg
gb: a$ = INPUT$(8, #4)
z11$ = MID$(a$, 1, 1)
z21$ = MID$(a$, 2, 1)
z31$ = MID$(a$, 3, 1)
z41$ = MID$(a$, 4, 1)
z1$ = z11$ + "." + z21$ + "E" + z31$ + z41$
vb1 = VAL(z1$)
z51$ = MID$(a$, 5, 1)
z61$ = MID$(a$, 6, 1)
z71$ = MID$(a$, 7, 1)
z81$ = MID$(a$, 8, 1)
z2$ = z51$ + "." + z61$ + "E" + z71$ + z81$
z3$ = z51$ + "." + z61$
LOCATE 20, 10
PRINT "当前真空度值: "; z2$
va5 = VAL(z81$)
va6 = VAL(z51$ + "." + z61$)
IF va4 > va5 THEN GOTO qremea
IF va4 = va5 AND va1 < va6 THEN GOTO qremea
'print "v=";vb1
'do
'loop until inkey$=1
qjs: CLOSE #4
CLS
LOCATE 23, 10
PRINT "......正在退出程序,返回主菜单......"
END SUB
已列出关键的函数,在运行时没有(PRINT "当前真空度值: "; z2$)
f0 = 0
CLS
portA = &H26C
portb = &H26D
portc = &H26E
addr82552 = &H26F
ch08253 = &H264
ch18253 = &H265
addr8253 = &H267
OUT portC8255, &HFF
OUT addr82552, &H7 '关闭高真空阀
OUT addr82552, &HB '关真空放气阀
OUT addr82552, &H1 '前级阀关断
statec = statec OR &H20
statec = statec OR &H10
statec = statec OR &H8
LOCATE 10, 10
PRINT "前级阀关断"
CALL DELAY40(1)
DIM sar AS INTEGER
sar = 0
sar = INP(portA)
IF sar = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sat AS INTEGER
sat = 0
sat = INP(portA)
IF sat = 14 THEN GOTO exit4
OUT addr82552, &H4 '低真空室打开
state = statec AND &HFB
LOCATE 12, 10
PRINT "抽低真空,请等待..."
DIM asa AS INTEGER
asa = 0
asa = INP(portA)
IF asa = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sd AS INTEGER
sd = 0
sd = INP(portA)
IF sd = 14 THEN GOTO exit4
LOCATE 14, 10
PRINT "自动清洗开始......"
OUT addr82552, &HE '打开清洗电源
FOR ig = 1 TO position
CALL rotation(position, whichstep)
FOR i = 1 TO 150000
x = 0
DIM saa AS INTEGER
saa = 0
saa = INP(portA)
IF saa = 14 THEN GOTO exit4
NEXT i
NEXT ig
OUT addr82552, &HF '关闭清洗电源
IF stedfrq < 2.5E+07 THEN CALL DELAY40(60)
'END IF
CALL DELAY40(2)
DIM bsa AS INTEGER
bsa = 0
bsa = INP(portA)
IF bsa = 14 THEN GOTO exit4
CALL DELAY40(1)
DIM sa3 AS INTEGER
sa3 = 0
sa3 = INP(portA)
IF sa3 = 14 THEN GOTO exit4
OUT addr82552, &H5 '关闭低真空阀
statec = statec OR &H4
CALL DELAY40(1)
CLS
LOCATE 10, 10
PRINT "前级阀开 "
LOCATE 12, 10
PRINT "抽低真空完毕,开始抽高真空,请等待..."
DIM s1a AS INTEGER
s1a = 0
s1a = INP(portA)
IF s1a = 14 THEN GOTO exit4
OUT addr82552, &H0 '开前级阀
CALL DELAY40(1)
DIM msa AS INTEGER
msa = 0
msa = INP(portA)
IF msa = 14 THEN GOTO exit4
CALL DELAY40(1)
OUT addr82552, &H6 '开高真空阀
statec = statec AND &HFE
statec = statec AND &HF7
CALL DELAY40(2)
DIM psa AS INTEGER
psa = 0
psa = INP(portA)
IF psa = 14 THEN GOTO exit4
OUT addr82552, &HC '开真空计
CALL DELAY40(2)
kh$ = "a"
CALL nzkdmea(vacum, kh$, to$, va4) '检测高真空度
IF kh$ = CHR$(27) GOTO exit4
DIM osa AS INTEGER
osa = 0
osa = INP(portA)
IF msa = 14 THEN GOTO exit4
IF wtrota = 1 THEN
bia = bias
cur = current
quan = 0
CALL freqmea1(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s2a AS INTEGER
s2a = 0
s2a = INP(portA)
IF s2a = 14 THEN GOTO exit4
END IF
IF wtrota = 3 THEN
cur = curr1
bia = bias1
quan = 2
CALL freqmea2(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s3a AS INTEGER
s3a = 0
s3a = INP(portA)
IF s3a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CLS
LOCATE 13, 10
PRINT "开始调第2圈..."
LOCATE 20, 10
PRINT "按 ESC 键,关闭高真空退出! "
quan = 1
cur = curr2
bia = bias2
CALL DELAY40(2)
CALL freqmea1(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s4a AS INTEGER
s4a = 0
s4a = INP(portA)
IF s4a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CLS
LOCATE 13, 10
PRINT "开始调第3圈..."
bia = bias
cur = current
quan = 0
SLEEP 3
CALL DELAY40(3)
CALL freqmea(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
DIM s5a AS INTEGER
s5a = 0
s5a = INP(portA)
IF s5a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
END IF
IF wtrota = 2 THEN
cur = curr1
bia = bias1
quan = 1
CALL freqmea2(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s6a AS INTEGER
s6a = 0
s6a = INP(portA)
IF s6a = 14 THEN GOTO exit4
CALL DELAY40(1)
CLS
LOCATE 13, 10
PRINT "开始调第2圈..."
bia = bias
cur = current
quan = 0
CALL DELAY40(2)
DIM s7a AS INTEGER
s7a = 0
s7a = INP(portA)
IF s7a = 14 THEN GOTO exit4
IF kh$ = CHR$(27) GOTO exit4
CALL freqmea(stdfreq, bia, position, whichstep, cur, ke1$, f0, quan, kh$)
IF kh$ = CHR$(27) GOTO exit4
DIM s8a AS INTEGER
s8a = 0
s8a = INP(portA)
IF s8a = 14 THEN GOTO exit4
END IF
IF ke1$ = "q" OR ke1$ = "Q" THEN GOTO enauto
exit4:
LOCATE 23, 40
PRINT "正在退出!......"
OUT addr82552, &HD '关真空计
OUT addr82552, &H7 '关闭高真空阀
statec = statec OR &H40
statec = statec OR &H8
CALL DELAY40(15)
OUT addr82552, &HA '打开真空放气阀
statec = statec AND &HDF
OUT addr82552, &H9 '打开档板
statec = statec OR &H10
CALL DELAY40(35)
enauto: CLS
END SUB
SUB nzkdmea (vacum, kh$, to$, va4)
va1 = vacum
va2 = 2
qzrecal: IF va1 < 1 THEN
va1 = va1 * 10
va2 = va2 + 1
GOTO qzrecal
END IF
qzrecal2: IF va1 >= 10 THEN
va1 = va1 / 10
va2 = va2 - 1
GOTO qzrecal2
END IF
LOCATE 18, 10
PRINT "真空度预置值:"; va1; "E"; va2;
LOCATE 22, 10
PRINT "###提示:按字母G键将继续运行微调程序###"
LOCATE 23, 10
PRINT "......按ESC键将退出自动运行程序,返回主菜单......"
va4 = ABS(va2)
OPEN "COM2:1200,N,8,1,CS,DS,cd" FOR RANDOM AS #4
qremea:
to$ = INKEY$
kh$ = INKEY$
IF to$ = "j" OR to$ = "J" THEN GOTO qjs
IF kh$ = CHR$(27) THEN GOTO qjs
IF EOF(4) THEN GOTO qremea
gg: a$ = INPUT$(1, #4)
b$ = MID$(a$, 1, 1)
IF b$ = CHR$(170) THEN GOTO gb
GOTO gg
gb: a$ = INPUT$(8, #4)
z11$ = MID$(a$, 1, 1)
z21$ = MID$(a$, 2, 1)
z31$ = MID$(a$, 3, 1)
z41$ = MID$(a$, 4, 1)
z1$ = z11$ + "." + z21$ + "E" + z31$ + z41$
vb1 = VAL(z1$)
z51$ = MID$(a$, 5, 1)
z61$ = MID$(a$, 6, 1)
z71$ = MID$(a$, 7, 1)
z81$ = MID$(a$, 8, 1)
z2$ = z51$ + "." + z61$ + "E" + z71$ + z81$
z3$ = z51$ + "." + z61$
LOCATE 20, 10
PRINT "当前真空度值: "; z2$
va5 = VAL(z81$)
va6 = VAL(z51$ + "." + z61$)
IF va4 > va5 THEN GOTO qremea
IF va4 = va5 AND va1 < va6 THEN GOTO qremea
'print "v=";vb1
'do
'loop until inkey$=1
qjs: CLOSE #4
CLS
LOCATE 23, 10
PRINT "......正在退出程序,返回主菜单......"
END SUB
已列出关键的函数,在运行时没有(PRINT "当前真空度值: "; z2$)