Skocz do zawartości

Błąd w basconie "label not found"


Marcos

Pomocna odpowiedź

Mam taki programik:

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
Config Portd = Output
Config Portb = Output

'Opis portów
'Enable1 - Silnik lewy - Portb.1 (PWM1A)
'Enable2 - Silnik prawy - portb.2 (PWM1B)
'Input1 - Silnik lewy A - Portd.3
'Input2 - Silnik lewy B - Portd.2
'Input4 - Silnik prawy A - Portd.0
'Input3 - Silnik prawy B - Portd.1
'Dioda - Portd.6
'Czujnik lewy - ADC5
'Czujnik środkowy - ADC4
'Czujnik prawy - ADC3

Silnik_lewy_a Alias Portd.0
Silnik_lewy_b Alias Portd.1
Silnik_prawy_b Alias Portd.2
Silnik_prawy_a Alias Portd.3
Dioda Alias Portd.6



'Deklaracje zmiennych
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy As Single
Dim Czujnik_prawy As Single
Dim Zmienna As Bit

'Blok instrukcji


Do
  If Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 0 Then
     Gosub Go
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 1 And Czujnik_prawy = 0 THEN
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 1 THEN
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 1 THEN
     Gosub No
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 0 THEN
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 1 THEN
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 0 THEN
  If Zmienna = 0 Then
     Gosub Lewt
  Else
     Gosub Righ

  End If
  End If

Loop
End Return


  Lewt:
  Pwm1a = 200
  Pwm1b = 0
  Return


  Righ:
  Pwm1a = 0
  Pwm1b = 200
  Return

End

I wyskakuje mi błąd label not found. Wyskakuje w linijce gdzie mam

End
Link do komentarza
Share on other sites

W pierwszym warunku masz gosub go a po end masz tylko righ lewt
$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
Config Portd = Output
Config Portb = Output

Portb = &B0000
Portd = &B00000000

'Opis portów
'Enable1 - Silnik lewy - Portb.1 (PWM1A)
'Enable2 - Silnik prawy - portb.2 (PWM1B)
'Input1 - Silnik lewy A - Portd.3
'Input2 - Silnik lewy B - Portd.2
'Input4 - Silnik prawy A - Portd.0
'Input3 - Silnik prawy B - Portd.1
'Dioda - Portd.6
'Czujnik lewy - ADC5
'Czujnik środkowy - ADC4
'Czujnik prawy - ADC3

Silnik_lewy_a Alias Portd.0
Silnik_lewy_b Alias Portd.1
Silnik_prawy_b Alias Portd.2
Silnik_prawy_a Alias Portd.3
Dioda Alias Portd.6



'Deklaracje zmiennych
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy As Single
Dim Czujnik_prawy As Single
Dim Zmienna As Bit

'Blok instrukcji


Do
  If Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 0 Then
     Gosub Go
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 1 And Czujnik_prawy = 0 Then
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 1 Then
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 1 Then
     Gosub No
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 0 Then
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 1 Then
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 0 Then
  If Zmienna = 0 Then
     Gosub Lewt
  Else
     Gosub Righ

  End If
  End If

Loop

  Go:
  Pwm1a = 250
  Pwm1b = 250
  Return


  Lewt:
  Pwm1a = 200
  Pwm1b = 0
  Return


  Righ:
  Pwm1a = 0
  Pwm1b = 200
  Return

End

Zmieniłem i nie działa

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Cześć nie dodałeś podprogramu "no"

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
Config Portd = Output
Config Portb = Output

Portb = &B0000
Portd = &B00000000

'Opis portów
'Enable1 - Silnik lewy - Portb.1 (PWM1A)
'Enable2 - Silnik prawy - portb.2 (PWM1B)
'Input1 - Silnik lewy A - Portd.3
'Input2 - Silnik lewy B - Portd.2
'Input4 - Silnik prawy A - Portd.0
'Input3 - Silnik prawy B - Portd.1
'Dioda - Portd.6
'Czujnik lewy - ADC5
'Czujnik środkowy - ADC4
'Czujnik prawy - ADC3

Silnik_lewy_a Alias Portd.0
Silnik_lewy_b Alias Portd.1
Silnik_prawy_b Alias Portd.2
Silnik_prawy_a Alias Portd.3
Dioda Alias Portd.6



'Deklaracje zmiennych
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy As Single
Dim Czujnik_prawy As Single
Dim Zmienna As Bit

'Blok instrukcji


Do
  If Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 0 Then
     Gosub Go
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 1 And Czujnik_prawy = 0 Then
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 1 Then
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 1 Then
  Gosub No
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 1 And Czujnik_prawy = 0 Then
     Zmienna = 0
     Gosub Lewt
  Elseif Czujnik_srodkowy = 1 And Czujnik_lewy = 0 And Czujnik_prawy = 1 Then
     Zmienna = 1
     Gosub Righ
  Elseif Czujnik_srodkowy = 0 And Czujnik_lewy = 0 And Czujnik_prawy = 0 Then
  If Zmienna = 0 Then
     Gosub Lewt
  Else
     Gosub Righ

  End If
  End If

Loop

  Go:
  Pwm1a = 250
  Pwm1b = 250
  Return


  Lewt:
  Pwm1a = 200
  Pwm1b = 0
  Return


  Righ:
  Pwm1a = 0
  Pwm1b = 200
  Return
  No:
Pwm1a = 0
  Pwm1b = 0
  Return

Zapomniałes dodać podprogramu "No:"

No:

Pwm1a = 0

Pwm1b = 0

Return

 

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.