Witam!
Mam problem z tym programem. Nie chce się skompilować. Wywala mi trzy błędy:
123 (linia: 0) - END IF expected , in File:
7 (linia: 0 ) - IF THAN expected[92], in File:
130 (linie: 92 i 88) - niewłaściwa/y numer(ilość) parametrów. Ilość parametów musi być[ 1], in File: C:\program\prog.bas
Możecie mi pomóc? Z góry wielkie dzięki za wszelką pomoc!!!
inventco.eu - post edytowałem, program umieszczamy w znacznikach code
Mam problem z tym programem. Nie chce się skompilować. Wywala mi trzy błędy:
123 (linia: 0) - END IF expected , in File:
7 (linia: 0 ) - IF THAN expected[92], in File:
130 (linie: 92 i 88) - niewłaściwa/y numer(ilość) parametrów. Ilość parametów musi być[ 1], in File: C:\program\prog.bas
Możecie mi pomóc? Z góry wielkie dzięki za wszelką pomoc!!!
inventco.eu - post edytowałem, program umieszczamy w znacznikach code
$crystal = 8000000
$regfile = "m32def.dat"
Led1 Alias Portc.1
Led2 Alias Portc.2
S1 Alias Pinb.0
S2 Alias Pinb.1
S3 Alias Pinb.2
Pp Alias Pinc.7
Lp Alias Pinc.6
Lt Alias Pinc.5
Pt Alias Pinc.4
A1 Alias Portd.0
A2 Alias Portd.1
B1 Alias Portd.2
B2 Alias Portd.3
Ena Alias Portd.4
Enb Alias Portd.5
Ddra = &B00000011
Ddrd = &B00111111
Ddrb = &B00000000
Ddrc = &B00000110
Portd = &B00000110
Porta = &B00000000
Portc = &B00000000
Portb = &B11111111
'Dekleracja funkcji i procedur
Declare Function Sharp_odczyt() As Word
Declare Sub L_do_przodu(byval Szybkosc As Byte)
Declare Sub L_do_tylu(byval Szybkosc As Byte)
Declare Sub P_do_przodu(byval Szybkosc As Byte)
Declare Sub P_do_tylu(byval Szybkosc As Byte)
Declare Sub L_stop
Declare Sub P_stop
'Konfiguracja przetwornika analogowo-cyfrowego
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'Konfiguracja PWM dla silnikow
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
'Konfiguracja timera dla programu, przerwanie co ~2ms
Config Timer0 = Timer , Prescale = 64
On Timer0 Przerwanie
Enable Interrupts
'Deklaracja zmiennych
Dim Czas As Byte
Dim Czas2 As Byte
Dim Linie As Byte
Dim Namierzony_sharp1 As Bit
Dim Namierzony_sharp2 As Bit
Dim Stan As Byte
Dim Obrot As Word
'Program glowny
Linie = 0
Led1 = 1
Wait 1
Led1 = 0
Bitwait S1 , Reset
Led1 = 0
Wait 5
Enable Timer0
'Petla glowna
Do
If S1 = 0 Then
Stop Timer0
Call L_stop
Call P_stop
Do
Loop
End If
If Czas2 = 12 Then
If Sharp_odczyt(0) > 145 Then
Namierzony_sharp1 = 1
Else
Namierzony_sharp1 = 0
If Sharp_odczyt(1) > 145 Then
Namierzony_sharp2 = 1
Else
Namierzony_sharp2 = 0
End If
End If
End If
If Czas2 = 13 Then
Czas2 = 0
End If
Select Case Stan
Case 1
Gosub Pucieczka
Case 2
Gosub Tucieczka
Case 0
If Namierzony_sharp1 = 1 Then
Gosub Gon
Else
If Namierzony_sharp2 = 1 Then
Gosub Gon1
Else
Gosub Szukaj
End If
End If
End Select
Loop
Przerwanie:
Incr Obrot
Incr Czas2
If Czas = 0 Then
Czas = 1
End If
Decr Czas
Linie.0 = Lp
Linie.1 = Lt
Linie.2 = Pp
Linie.3 = Pt
Select Case Linie
Case 14
Stan = 1
Czas = 250
Call P_do_tylu(255)
Call L_do_tylu(255)
Case 13
Stan = 2
Czas = 250
Call P_do_przodu(255)
Call L_do_przodu(255)
Case 11
Stan = 1
Czas = 250
Call P_do_tylu(255)
Call L_do_tylu(255)
Case 7
Stan = 2
Czas = 250
Call P_do_przodu(255)
Call L_do_przodu(255)
Case 5
Stan = 2
Czas = 250
Call P_do_przodu(255)
Call L_do_przodu(255)
Case 10
Stan = 1
Czas = 250
Call P_do_tylu(255)
Call L_do_tylu(255)
Case 12
Stan = 3
Call P_do_przodu(255)
Call L_do_tylu(255)
Case 3
Stan = 3
Call P_do_tylu(255)
Call L_do_przodu(255)
End Select
Return
Szukaj:
Led1 = 1
If Obrot > 800 Then
Call P_do_przodu(65)
Call L_do_tylu(65)
Else
Call P_do_przodu(90)
Call L_do_przodu(90)
End If
If Obrot = 2000 Then
Obrot = 0
End If
Return
Gon:
Call P_do_przodu(255)
Call L_do_przodu(255)
Led1 = 0
Obrot = 0
Return
Gon1:
Call P_do_tylu(255)
Call L_do_tylu(255)
Led1 = 0
Obrot = 0
Return
Pucieczka:
If Czas > 0 And Czas < 128 Then
Call P_do_tylu(255)
Call L_do_przodu(255)
End If
If Czas > 129 Then
Call P_do_tylu(255)
Call L_do_tylu(255)
End If
If Czas = 0 Then
Stan = 0
End If
Obrot = 0
Return
Tucieczka:
If Czas > 0 Then
Call P_do_przodu(255)
Call L_do_przodu(255)
Else
Stan = 0
End If
Obrot = 0
Return
Function Sharp_odczyt(byval Kanal As Byte) As Word
Stop Timer0
Sharp_odczyt = Getadc(kanal)
Start Timer0
End Function
Sub P_do_przodu(byval Szybkosc As Byte)
A1 = 1
A2 = 0
Pwm1a = Szybkosc
End Sub
Sub P_do_tylu(byval Szybkosc As Byte)
A1 = 0
A2 = 1
Pwm1a = Szybkosc
End Sub
Sub L_do_przodu(byval Szybkosc As Byte)
B1 = 1
B2 = 0
Pwm1b = Szybkosc
End Sub
Sub L_do_tylu(byval Szybkosc As Byte)
B1 = 0
B2 = 1
Pwm1b = Szybkosc
End Sub
Sub P_stop
A1 = 0
A2 = 0
End Sub
Sub L_stop
B1 = 0
B2 = 0
End Sub