Skocz do zawartości

Bascom - sprawdzenie poprawności kodu


Uzi

Pomocna odpowiedź

Witam,

Proszę o sprawdzenie mojego programu ponieważ próbując przeprowadzić próbę działania programu w symulatorze nie działa mi nawet obsługa klawiatury.

Program jest prosty, zlicza impulsy z enkodera i jeśli dostanie któryś tam impuls na pinie podawany jest prąd. Reszta to obsługa klawiatury

$regfile = "m8def.dat"

'KONFIGURACJA PORTÓW
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pind.4 = Input
Config Pind.5 = Input
Config Pind.6 = Input
Config Pind.7 = Input

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output

Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Config Pinc.6 = Input

Set Portd.0
Set Portd.1
Set Portd.2
Set Portd.3
Set Portd.4
Set Portd.5
Set Portd.6
Set Portd.7

Reset Portb.0
Reset Portb.1
Reset Portb.2

Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.3
Set Portc.4
Set Portc.5
Set Portc.6

'Deklaracja zmiennych
Dim Klawiatura As Byte
Dim Tryb As Byte
Dim Rodzaj As Byte
Dim Nr As Byte
Dim Koniec As Bit
Dim Licz As Integer
Dim G As Integer
Dim Sygnal As Integer
Dim Kierunek As Byte

Do

'Obsługa klawiatury
  If Pind.0 = 0 Then
  Klawiatura = 1
  End If

  If Pind.1 = 0 Then
  Klawiatura = 2
  End If

  If Pind.2 = 0 Then
  Klawiatura = 3
  End If

  If Pind.3 = 0 Then
  Klawiatura = 4
  End If

  If Pind.4 = 0 Then
  Klawiatura = 5
  End If

  If Pind.5 = 0 Then
  Klawiatura = 6
  End If

  If Pind.6 = 0 Then
  Klawiatura = 7
  End If

  If Pind.7 = 0 Then
  Klawiatura = 8
  End If

  If Pinc.0 = 0 Then
  Klawiatura = 9
  End If


  'Rodzaj
  If Pinc.1 = 0 Then
  Tryb = 0
  Klawiatura = 0
  Rodzaj = 0
  Nr = 0
  End If

  'Nr
  If Pinc.2 = 0 Then
  Tryb = 1
  Klawiatura = 0
  Nr = 0
  End If

  'Praca
  If Pind.3 = 0 Then
  Tryb = 2
  Klawiatura = 0
  Licz = 0
  G = 1
  Kierunek = 0
  End If

'Obsługa trybu nr i pracy
  If Tryb = 0 Then
  Rodzaj = Klawiatura                                   
  End If

  If Tryb = 1 And Rodzaj <> 0 And Rodzaj <> 0 Then
  Nr = Klawiatura
  End If

  If Tryb = 2 And Rodzaj <> 0 And Rodzaj <> 0 And Nr <> 0 Then
  Tryb = 3
  End If

'Zapalanie LED podczas trybu pracy
  If Tryb = 3 Then
  Portb.0 = 1
  End If

  If Tryb <> 3 Then
  Portb.0 = 0
  End If

'Zapalanie LED gdy koniec 
  If Koniec = 1 Then
  Portb.0 = 1
  End If

  If Koniec = 0 Then
  Portb.0 = 0
  End If

'Zliczanie sygnałów
  If Pinc.4 = 0 Then
  Bitwait Pinc.4 , Set
  If Pinc.5 = 0 Then
  Decr Licz
  Kierunek = 1
  End If
  End If

  If Pinc.5 = 0 Then
  Bitwait Pinc.5 , Set
  If Pinc.4 = 0 Then
  Kierunek = 2
  Incr Licz
  End If
  End If

'******************************* PRACA *******************************
  If Tryb = 3 Then
  Sygnal = Licz

  If Rodzaj = 1 Then

'Nr 1
  If Nr = 1 And Koniec = 0 And Kierunek = 1 Then
  If Sygnal = 2 Or Sygnal = 4 Or Sygnal = 6 Or Sygnal = 8 Or Sygnal = 20 Then
  Portb.2 = 1
  Waitms 50
  Portb.2 = 0

  If Sygnal = 20 Then
  G = G + 1
  Sygnal = 0
  End If

  If G > 15 Then
  Koniec = 1
  End If

  End If

  If Nr = 1 And Kierunek = 2 Then
  If Sygnal = 0 Then
  G = G - 1
  End If

  If G <= 15 Then
  Koniec = 0
  End If

  End If
  End If
  End If

  End If

Loop

End
Link do komentarza
Share on other sites

Uzi, nie sugeruj się symulatorem, on nie działa zbyt poprawnie. Poza tym z tego co pamiętam to aby cokolwiek działało w symulatorze potrzebna jest komenda $SIM przed DO w programie.

Link do komentarza
Share on other sites

Powiedział bym więcej. Symulator praktycznie wgl nie działa... Mógłby mi ktoś powiedzieć czy mniej więcej jest to poprawne? Szczególnie chodzi mi o zliczanie sygnałów z enkodera. Bo obsługa klawiatury wydaje mi się poprawna mimo że nie działa w symulatorze

Link do komentarza
Share on other sites

$SIM z tego co wiem likwiduje tylko opóźnienia z grupy wait, a tu takich nie widziałem, bo ten symulator program symuluje w zwolnionym tempie i każda ms trwa wieki.

Ogólnie, po kilku godzinach spędzonych przy nim doszedłem do wniosku, że on nic nie daje. Co więcej wyniki symulacji bywały inne niż w rzeczywistości. Jeżeli chcesz napisać bardziej zaawansowany program z niewiadomymi "aspektami" programu bez sprzętowego testu się nie obejdzie.

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.