Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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ę ??

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 🙂

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
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ć.

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
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ź.

Co wprowadza drgania? Switch

no wiem, dzięki, myślałem, że jest jakiś myk na taką symulację

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.

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.

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

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...