If M = 1 Then
Portd.3 = 0
Locate 1 , 1
Lcd "TestCE [>500uF]"
Locate 2 , 1
Lcd " CEx= "
End If
M = 0
Portd.6 = 0 '开始充电
Start Timer0 '开始计时
End If
'/////返回到电容测量//////
If I = 6 Then
I = 2 '返回到电容测量
Enable Ovf1
Enable Ovf2
Disable Int0
Disable Ovf0
Portd.3 = 1
K = 1
M = 1
End If
Loop
End
'/////计数中断/////
Tim1_isr:
Incr Tc1 '这么作可使计数分辩率最高到1Hz
Return
'/////定时中断/////
Tim2_isr:
Tcnt2 = &H83 '定时器T2初值
Incr Tc
If Tc = 250 Then '定时250mS
Stop Counter1
Tc1 = Tc1 * 65535
If Portd.3 = 1 Then
F1 = Counter1
F1 = F1 + Tc1
F1 = F1 * 4
End If
If Portd.3 = 0 Then
F2 = Counter1
F2 = F2 + Tc1
F2 = F2 * 4
End If
Counter1 = 0
Start Counter1
Tc = 0
Tc1 = 0
End If
Return
'/////定时中断,测电解电容/////
Tim0_isr:
Incr Te '定时器0中断次数
Return
'/////外部中断,测电解电容/////
T1_isr:
Stop Timer0
Te = Te * 256
Te = Te + Tcnt0
Te = Te / 2 '时间/充电电阻=被测电容
V1 = Str(te)
Vl = Len(v1)
If Portd.3 = 1 Then '充电电阻R9接入,<500uF
If Vl = 2 Then
V1 = "NO"
End If
If Vl = 3 Then
V1 = Mid(v1 , 1 , 3)
V1 = Format(v1 , "0.000")
End If
If Vl = 4 Then
V1 = Mid(v1 , 1 , 3)
V1 = Format(v1 , "0.00")
End If
If Vl = 5 Then
V1 = Mid(v1 , 1 , 3)
V1 = Format(v1 , "0.0")
End If
If Vl = 6 Then
V1 = Mid(v1 , 1 , 3)
End If
If Vl = 7 Then
V1 = " OL "
End If
End If
If Portd.3 = 0 Then
If Vl = 2 Then
V1 = Mid(v1 , 1 , 2)
V1 = Format(v1 , "0.00")
End If
If Vl = 3 Then
V1 = Mid(v1 , 1 , 3)
V1 = Format(v1 , "0.00")
End If
If Vl = 4 Then
V1 = Mid(v1 , 1 , 2)
End If
If Vl = 5 Then
V1 = Mid(v1 , 1 , 3)
End If
If Vl = 6 Then
V1 = Mid(v1 , 1 , 4)
End If
If Vl = 7 Then
V1 = Mid(v1 , 1 , 5)
End If
End If
Vs = Space(7)
If Te > 1 And Te < 10 Then
Locate 2 , 1
Lcd " CEx=" ; "0" ; "uF" ; Vs
End If
If Te > 10 Then
Locate 2 , 1
Lcd " CEx=" ; V1 ; "uF" ; Vs
End If
Portd.6 = 1 '开始放电
If Portd.3 = 1 And Te > 10 Then
Waitms 100
End If
If Portd.3 = 0 And Te > 10 Then
Waitms 500
End If