Witam, program zgłasza błąd 8 przy próbie kompilacji.
Jest to źródło z ne.
ArteXL
'################
' --- Miernik pojemnosci 1pF - 500000uF
' NE Nr.5-2003r str.4. Zeataw 337-K
'###############
$large
$crystal = 24000000
$regfile = "89C4051.dat"
Config Lcd = 16 * 1a
Config Lcdpin = Pin , Db7 = P1.2 , Db6 = P1.3 , Db5 = P1.4 , Db4 = P1.5 , E = P1.6 , Rs = P1.7
Config Timer0 = Timer , Gate = Internal , Mode = 1
Trigg Alias P3.0
Rst Alias P3.1
Cap3 Alias P3.7
Cap2 Alias P1.0
Cap1 Alias P1.1
Pk_ Alias P3.5
Dim Count_time As Word
Dim Temp As Word
Dim B1 As Byte
Dim B2 As Byte
Dim Xb3 As Single
Dim Xb2 As Single
Dim Xb1 As Single
Dim Xn As Byte
Dim Rangval As Byte
Dim Value As Single
Dim Range As Byte
Dim Active As Bit
Dim Status As Bit
Dim Change As Bit
Dim Stx As String * 10
Dim Stz As String * 1
Dim Stn As String * 2
Declare Sub Set_range()
Tcon.2 = 1
On Timer0 Timer0_int
On Int1 Int1_int
Enable Interrupts
Enable Timer0
Enable Int1
'###############
'--- Poczatek Programu
'###############
Xb3 = 0
Xb2 = 0
Xb1 = 0
Xn = 1
Status = 0
Change = 0
Range = 3
Trigg = 1
Rst = 0
Pk_ = 1
Cursor Off
Cls
Lcd "K - P"
Wait 1
Cls
Lcd "Mier pojemnosci"
Wait 1
Pk_ = 0
Cls
Lcd " Adjust "
'###############
' --- Poczatek petli glownej
'###############
Do
Rst = 1
If Status = 1 Then
Locate 1 , 16
Lcd "M"
End If
Pk_ = 0
Call Set_range()
Active = 1
Temp = 0
Count_time = 0
Th0 = 0
Tl0 = 0
Tcon.4 = 1
Enable Int1
Trigg = 0
Trigg = 1
'###############
Do
Loop Until Active = 0
'###############
'###############
B1 = Tl0
B2 = Th0
Temp = B2 * 256
Value = Count_time * 65536
Value = Value + Temp
Value = Value + B1
Value = Value / 1.1
Value = Value / Rangval
Value = Value / 2
'###############
'--- Zerowanie wszystkich podzakresow
'###############
If Status = 0 Then
If Range = 3 Then
Xb3 = Xb3 + Value
Incr Xn
If Xn > 10 Then
Xb3 = Xb3 / 10
Range = 2
Xn = 1
End If
'***************
Elseif Range = 2 Then
Xb2 = Xb2 + Value
Incr Xn
If Xn > 20 Then
Xb2 = Xb2 / 20
Range = 1
Xn = 1
End If
'***************
Elseif Range = 1 Then
Xb1 = Xb1 + Value
Incr Xn
If Xn > 50 Then
Xb1 = Xb1 / 50
Xn = 1
Status = 1
Cls
End If
End If
End If
If Status = 1 Then
Pk_ = 1
Waitms 255
Select Case Range
Case 3:
Value = Value - Xb2
If Value < 1 Then Range = 2
Case 2:
Value = Value - Xb2
If Value > 1000 Then
Range = 3
Elseif Value < 1 Then
Range = 1
End If
Case 1:
Value = Value - Xb1
If Value > 1000 Then Range = 2
End Select
If Value < 0 Then
Value = 0
End If
Stx = Str(value)
Stz = "."
B1 = Instr(stx , Stz)
Incr B1
Stx = Left(stx , B1)
Locate 1 , 1
Lcd Stx ; "" ; Stn ; " "
Locate 1 , 16
Lcd "Z"
If Range = 3 And Value > 4999 And Change = 0 Then
Wait 5
Elseif Range = 3 And Value > 1500 And Value < 5000 And Change = 0 Then
Wait 2
Else
Wait 1
End If
Pk_ = 0
End If
Loop
'###############
'---Koniec petli glownej
'###############
Sub Set_range()
Select Case Range
Case 3:
Cap1 = 1
Cap2 = 1
Cap3 = 0
Stn = "uF"
Rangval = 170
Case 2:
Cap1 = 1
Cap2 = 0
Cap3 = 1
Stn = "nF"
Rangval = 6
Case 1:
Cap1 = 0
Cap2 = 1
Cap3 = 1
Stn = "pF"
Rangval = 6
End Select
Waitms 1000
End Sub
'###############"
Timer0_int:
Incr Count_time
If Count_time > 15 And Range < 3 Then
Tcon.4 = 0
Incr Range
Call Set_range()
Change = 1
Rst = 0
Active = 0
End If
Return
'###############"
Int1_int:
Tcon.4 = 0
Disable Int1
Cap1 = 1
Cap2 = 1
Cap3 = 1
Active = 0
Return
'###############
End
' Ja ten program przepisywalem z Nowego Elektronika
' Chyba nie popelnilem bledów, chociaż czlowiek jest omylny
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięBłąd przy kompilacji
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Zaglądnij tutaj: http://www.forum.ep.com.pl/viewtopic.php?t=10225 Wygląda mi to na dokładnie ten sam problem.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 27 gości