Skocz do zawartości

[Bascom] Czy taki kod ma prawo działać ?


SiDoR

Pomocna odpowiedź

Witam jestem początkujący w Bascomie i napisałem taki oto kod, i pragnę, aby ktoś z bardziej doświadczonych kolegów powiedział mi czy to będzie działać.

Program ma działać tak, że jak uzyska sygnał Inlewy uwzględniając drgania styków 100ms to uruchomi Outlewy na 2 sekundy, ważnym jest też, aby jeśli jest działający Outlewy a pojawi się Inprawy wyłączyć Outlewy.

Prosze o pomoc bo dopiero zaczynam a z językami programowania nie miałem styczności z 10 lat.

$regfile = "attiny13.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 16

Inprawy Alias Pinb.1
Inlewy Alias Pinb.2
Outlewy Alias Portb.3
Outprawy Alias Portb.4

Config Pinb.1 = Input
Config Pinb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb = &B000000

Config Timer0 = Timer , Prescale = 64

Dim Licznik As Integer

Enable Interrupts
Enable Timer0

Config Debounce = 100

Timer0 = 6
Licznik = 0

Do

Debounce Inlewy , 1 , Blink , Sub

Loop
End

Blink:

    Start Timer0
    Incr Licznik
    Outlewy = 1


       If Licznik = 1000 Then
         Outlewy = 0
       End If

       If Outlewy = 1 And Inprawy = 1 Then
          Outlewy = 0
       End If

    Stop Timer0
    Licznik = 0

Return

[ Dodano: 22-02-2013, 09:45 ]

koledzy pomoże ktoś i sprawdzi powyższy kod i podpowie ewentualnie na co zwrócić jeszcze uwagę ??

Link do komentarza
Share on other sites

Czekam na programator jak mi przyjdzie pocztą i elementy do płytki.

A widzisz może jakieś nieprawidłowości w kodzie, jakieś duże rażące błędy ??

[ Dodano: 22-02-2013, 15:11 ]

Jak ktoś byłby tak miły i przeanalizował moje wymysły byłbym bardzo wdzięczny 🙂

Link do komentarza
Share on other sites

Nie wiem jak inni ale po mojemu to po co analizować program jak można wrzucić i sprawdzić. Jak coś nie będzie działało to napisz i wtedy ktoś pomyśli. Myślę że nikt się tutaj nie nudzi i ma bardziej konstruktywne rzeczy do roboty niż szczegółowa analiza programu, który jak na razie nie sprawia problemów.

Na oko nie widzę żadnych rażących błędów a jak jest okaże się jak spróbujesz.

  • Pomogłeś! 1
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

Nie wiem jak inni ale po mojemu to po co analizować program jak można wrzucić i sprawdzić. Jak coś nie będzie działało to napisz i wtedy ktoś pomyśli. Myślę że nikt się tutaj nie nudzi i ma bardziej konstruktywne rzeczy do roboty niż szczegółowa analiza programu, który jak na razie nie sprawia problemów.

Na oko nie widzę żadnych rażących błędów a jak jest okaże się jak spróbujesz.

Swoją drogą, IDE bascoma wyposażone jest w symulator.

O to nie wiedziałem, że jest symulator, postaram się go znaleść i podziałać dzięki wielkie.

Jak będzie coś nie tak to dam znać.

Link do komentarza
Share on other sites

Czy da się w symulatorze sprawidzić poprawność działania polecenia debounce ??

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 8
$framesize = 16
$sim

Config Pinb.1 = Input
Config Pinb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output

Inprawy Alias Pinb.1
Inlewy Alias Pinb.2
Outlewy Alias Portb.3
Outprawy Alias Portb.4

Config Debounce = 150
Config Timer0 = Timer , Prescale = 64
On Timer0 Czas
Enable Interrupts

Dim Licznik As Integer
Licznik = 0

Do

Debounce Inlewy , 1 , Lewy , Gosub
Debounce Inprawy , 1 , Prawy , Gosub

If Outlewy = 1 And Inprawy = 1 Then
  Portb = &B00000000
  Disable Timer0
  Licznik = 0
End If

If Outprawy = 1 And Inlewy = 1 Then
  Portb = &B00000000
  Disable Timer0
  Licznik = 0
End If

Loop
End

Czas:
 Timer0 = Timer0 + 6
 Incr Licznik

  If Outlewy = 1 Then
     Gosub Lewy
  End If

  If Outprawy = 1 Then
     Gosub Prawy
  End If
Return

Lewy:
Outlewy = 1
Enable Timer0

  Select Case Licznik
     Case > 3 And Inlewy = 0
        Portb = &B0000000
        Disable Timer0
        Licznik = 0
  End Select
Return

Prawy:
Outprawy = 1
Enable Timer0

  Select Case Licznik
     Case > 3 And Inprawy = 0
        Portb = &B0000000
        Disable Timer0
        Licznik = 0
  End Select
Return
Link do komentarza
Share on other sites

Czy da się w symulatorze sprawidzić poprawność działania polecenia debounce ??

A pomyśl sam? Co wprowadza drgania? Switch, czy w symulatorze masz switch, nie? No to masz odpowiedź.

Link do komentarza
Share on other sites

Witajcie, staram się przetestować swój program, ale coś mi się nie podoba gdy odpalam go w symulatorze BASCOM.

Gdy włączam i wyłaczam diody zielone (IB), które chyba symulują piny wejściowe, to zapalają mi się po dwa porty wyjściowe (PB).

Może mam coś nie tak ustawione w symulatorze, lub coś źle robię.

Proszę o pomoc.

Link do komentarza
Share on other sites

Nadal uważam że nie ma co robić z tego zagadnienia i sprawdzić w praktyce jak to działa. Piszę w Bascomie już od dawna ale nigdy mi się nie zdarzyło korzystać z symulatora. To działa na zasadzie obecnego testu zawodowego praktycznego na koniec technikum. Teoretyczny się pisze a praktyczny się... pisze. Teoria to teoria a praktyka to praktyka. Praktyka teoretycznie powinna zgadzać się z teorią ale teoria praktycznie się z praktyką nie zgadza. To samo jest z tymi wszystkimi symulatorami.

Zobacz jak to działa naprawdę a nie ma co robić zagadnienia jak się nie sprawdziło w praktyce.

Link do komentarza
Share on other sites

No ale po coś chyba są te symulatory i powinny działać dobrze, no a już przynajmniej nie robić takich błędów :/

Link do komentarza
Share on other sites

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.