请问下面的语法怎么理解?

来源:互联网 发布:linux bz2压缩命令 编辑:程序博客网 时间:2024/04/30 20:37
//
//Written by : JINGPENG
// Modified : 03 Dec 2005
// Date : 20 07 2009
// WHEN CONECT PIN WIRE ,NOT OK,IF NOT CONNECT PIN WIRE ,OK

#include "C://ST200F//Samples//color.h"

#define HEXFILE "eu050722-D.hex"
#define COMPORT "4"

#define DEVICE "18F24J10"

#define PW_VUP 4
#define SW_VUP 1
#define PW_12VD 3
#define SW_12VD 2

#define PIN_GND 180
#define PIN_Ref5V 142
#define PIN_5VD 146
#define PIN_12VD 141
#define PIN_VS 171
#define PIN_DRTN 134
#define PIN_TEMP_SEC 202
#define PIN_BOOST_OK_SEC 179


#define PIN_5VD_OV 225

#define LMT_H5VDOVP 6.5
#define LMT_L5VDOVP 5.6

#define ERR_NOERROR 0
#define ERR_SETUP 1
#define ERR_VUP 5

#define ERR_5VDOV 13

#define TEST_progamU37 1
#define TEST_OVP5VD 1

#define DEBUG 1

func DispPassFail(bPass, sMsg, dv)
Dim sDisp1 as string
if bPass then
print sMsg , " OK at ",dV , endl
else
sDisp1 := sMsg + " Fail"
print sDisp1, " : ", dv, endl
BoardMessage(1, sDisp1, RED)
end
end

func MessV(pinp, pinm)
Dim v as Double
ict.SetMeasurePin( pinp, pinm )
v := ict.MeasureDC( )
ict.CutMeasurePin( pinp, pinm )
timer.delayms(1)
return v
end

func PowerON()
pw.SetVoltCurr( PW_VUP, 5.0, 0.5 ) // Apply Power to DUT
pw.SetVoltCurr( PW_12VD, 12.0, 1.0 )
timer.delayms(30)

end

func PowerOff()
  pw.SetVoltCurr( PW_VUP, 0.0, 0.5 ) 
pw.DischargeON( PW_VUP, 0.5) 
  pw.SetVoltCurr( PW_12VD, 0.0, 0.5 ) 
pw.DischargeON( PW_12VD, 0.5) 
timer.delayms(50)

pw.DischargeOFF( PW_VUP) 
  pw.DischargeOFF( PW_12VD)
end

Dim nStatus as Integer
Dim s as string
proc main()
Dim nStatus as Integer
Dim dV, dVset, dLmtH, dLmtL, dVLast as Double
Dim dvApp as Double
Dim bPass as Bool

SetPassFail(1, FALSE) // Set Fail First

nStatus := 0

if !pw.Init() then
BOARDMESSAGE(1, "Power Fail", RED)
return
end
  

BoardMessage(1, "Start normal test...", BLUE)
print "...... Start Test ......", endl

#ifdef TEST_progamU37
Dim sCmd as String
Dim nRet as Integer

sCmd := '"C://Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
// sCmd := '"D://Program Files//Microchip//MPLAB IDE//Programmer Utilities//PM3Cmd//PM3CMD" /'
sCmd := sCmd + COMPORT
sCmd := sCmd + " /P"
sCmd := sCmd + DEVICE
sCmd := sCmd + " /F"
sCmd := sCmd + HEXFILE 
sCmd := sCmd + " /M /Y"
SetPassFail(1, FALSE)
if !pw.Init( ) then
BOARDMESSAGE(1, 'FAIL', RED)
print "Power Supply Fail", endl
return
end
pw.OutputON( 1, 1, TRUE)//PSW1.1
pw.OutputON( 3,1, TRUE) // for discharge relay PSW1.3
pw.SetVoltCurr( 1, 24.0, 0.5 ) // power on to close the relay for progarmming /PSW1.1
timer.delayms( 100 )
BOARDMESSAGE(1, 'Programming', YELLOW)
print sCmd , endl
nRet := run(sCmd)
if nRet = 0 then
SetPassFail(1, TRUE)
BOARDMESSAGE(1, 'PASS', GREEN)
nStatus :=0
else
BOARDMESSAGE(0, 'FAIL', RED)
nStatus :=1
print "Error Code=", nRet, endl
end


//Discharge the MCLR
pw.SetVoltCurr( 3, 24.0, 0.5)//PSW1.3
timer.delayms(800)

pw.SetVoltCurr( 1, 0.0, 0.5 ) // power off to open the relay for progarmming PSW1.1
pw.OutputON( 1, 1, FALSE)//PSW1.1
timer.delayms(300)
pw.SetVoltCurr( 3, 0.0, 0.5)//PSW1.3

#endif

#ifdef TEST_OVP5VD
if nStatus = ERR_NOERROR then
  ict.EXTRelayOn(5,true)//5-15-12VD
  ict.EXTRelayOn(6,true)//6-16-VS
  ict.EXTRelayOn(1,true)//1-SIG_GND
  ict.EXTRelayOn(2,true)//2-DRTN
  ict.EXTRelayOn(4,true)//4-0 BOOST
  ict.EXTRelayOn(3,true)//3-9 temp
  ict.EXTRelayOn(8,true)//8-12.5 OHM
pw.OutputON( PW_VUP, SW_VUP, TRUE ) // Connect Power to DUT
pw.OutputON( PW_12VD, SW_12VD, TRUE )
PowerON()
timer.delayms(120)

dV := MessV(PIN_12VD, PIN_GND) // Mess 12vd Bias
  bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "12VD Bias", dv)
if !bPass then
nStatus := ERR_VUP
end

  dV := MessV(PIN_VS, PIN_GND) // Mess 12 vs Bias
  bPass := dV > 11.4 and dV <12.5
DispPassFail(bPass, "VS Bias", dv)
if !bPass then
nStatus := ERR_VUP
end

dV := MessV(PIN_Ref5V, PIN_GND) // Mess ref 5.0v Bias
  bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "Ref_12VD 5.0V", dv)
if !bPass then
nStatus := ERR_VUP
end

  dV := MessV(162, PIN_GND) // Mess VUP=3.3 Bias
  bPass := dV > 2.9 and dV <3.5
DispPassFail(bPass, "VUP 3.3V", dV)
if !bPass then
nStatus := ERR_VUP
end
  end

if nStatus != ERR_NOERROR then
BoardMessage(1, "Power Connect/nFail", RED)
end
if nStatus = ERR_NOERROR then //5VD OVP
BoardMessage(1, "Testing/n5VD OVP", YELLOW)
print "Testing 5VD OVP", endl
bPass := FALSE
  timer.delayms(800)
   
  dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
  bPass := dV > 4.7 and dV < 5.2
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
#ifdef DEBUG
  print " ", endl
  print "5VD=", MessV(146, PIN_GND), endl
  print "TEMP_SEC=", MessV(202, PIN_GND), endl
  print "BOOST_OK_SEC=", MessV(179, PIN_GND), endl
  print "DRTN=", MessV(134, PIN_GND), endl
  print "SIG_GND=", MessV(180, PIN_GND), endl
  print "12VD=", MessV(141, PIN_GND), endl
  print "VS=", MessV(171, PIN_GND), endl
  print "VUP=", MessV(162, PIN_GND), endl
  print "176=", MessV(176, PIN_GND), endl
  print "Vcc=", MessV(131, PIN_GND), endl
  print "132=", MessV(132, PIN_GND), endl
  print "196=", MessV(196, PIN_GND), endl
  print "ref_12VD_5.0V=", MessV(142, PIN_GND), endl
  print "3.3V=", MessV(162, PIN_GND), endl
  print "ENABLE 5+12VD=", MessV(225, PIN_GND), endl
  print "FB =", MessV(132, PIN_GND), endl
  print "214 =", MessV(214, PIN_GND), endl
  #endif
if nStatus = ERR_NOERROR then //5VD OVP
  ict.EXTRelayOn(7,true)//7-6.04K OHM
print "Parallel 6.04K ohm Resistor with R386", endl
timer.delayms(1000)
dV := MessV(PIN_5VD, PIN_GND) // Mess ref 5.0v Bias
  bPass := dV < 1.0
DispPassFail(bPass, "5VD NODE", dv)
if !bPass then
nStatus := ERR_VUP
end
end
if bPass then
print "/nOVP 5VD at : ", dV, endl
BoardMessage(1, "5VD OVP Pass", BLUE)
else
nStatus := ERR_5VDOV
BoardMessage(1, "5VD OVP Fail", RED)
print "/nOVP 5VD don't happen at = ",dV, endl
end
end
  pw.SetVoltCurr( PW_12VD, 0.0, 0.0 ) // 12VD VS
  pw.DischargeON( PW_12VD, 0.5 )
  pw.SetVoltCurr( PW_VUP, 0.0, 0.0 ) // 5.0VD
  pw.DischargeON( PW_VUP, 0.5 )
  timer.delayms(100)
  //pw.OutputON( 4,1, FALSE )
ict.EXTRelayOn(5,FALSE)
  ict.EXTRelayOn(6,FALSE)
  ict.EXTRelayOn(1,FALSE)
  ict.EXTRelayOn(2,FALSE)
  ict.EXTRelayOn(3,FALSE)
  ict.EXTRelayOn(4,FALSE)
  ict.EXTRelayOn(8,FALSE)//4-10
  ict.EXTRelayOn(7,FALSE)//4-10

#endif  


if nStatus = 0 then
print "ALL PASS", endl
BoardMessage(1, "Pass", GREEN)
SetPassFail(1, TRUE ) // Set Fail First
end
end

// "C:/Microchip/MPLAB IDE/Programmer Utilities/PM3Cmd/PM3CMD" /3 /P18F2320 /Feu026642.hex /Y /M
原创粉丝点击