Witam. $regfile = "m32def.dat" $crystal = 16000000 Config Portc = Output Config Portd = &B00000000 Portc = &B11111111 Portd = &B11111111 Dim A As Byte Dim B As Byte Do A = 0 If Pind.0 = 0 Then Waitms 50 A = A + 1 End If If Pind.1 = 0 Then Waitms 50 A = A + 2 End If If Pind.2 = 0 Then Waitms 50 A = A + 5 End If If Pind.3 = 0 Then Waitms 50 A = A + 2 End If Do Loop Until Pind.0 = 1 And Pind.1 = 1 And Pind.2 = 1 And Pind.3 = 1 ' If A <> 0 Then For A = A To 1 Step - 1 Waitms 150 Reset Portc.0 Waitms 150 Set Portc.0 Next End If Waitms 50 Loop End Program ma w zależności od wartości wrzuconej monety lub żetonu wygenerować na wyjściu odpowiednią liczbę impulsów. Dioda zastępuje docelowy licznik mechaniczny impulsów. (nie pytajcie o co kaman z tym licznikiem bo dużo by było o tym pisać). Ten powyżej swoje zadanie spełnia ale... Czas od wrzucenia monety 5zł do końca wygenerowania ostatniego impulsu na wyjściu wynosi ponad 1,5sek. Może się tak zdarzyć że układ nie zaliczy kolejnej monety jeżeli zostanie za szybko wrzucona. Jak to rozwiązać? Żeby niezależnie od generowanego impulsu wyjściowego cały czas kontrolować wejście i korygować ilość impulsów wyjściowych? Dodam że jestem początkujący w kwestii programowania i trochę się zawiesiłem na tym.
|
|||
Jeśli chodzi o wskazówkę,
Jeśli chodzi o wskazówkę, proponuję usunąć z pętli generacje impulsów i zapomnieć o poleceniu "Waitms". Waitms w pętli powoduje duże opóźnienia w wykrywaniu następnych wrzucanych monet. Wrzucone monety zapisywałbym do jakiejś zmiennej i od wartość zmiennej było by generowanie impulsów.
RE: Timer
Należy tutaj uruchomić timer i zrobić sobie taktowanie na flagach (tak jak we wszystkich moich programach) 4ms do obsługi przycisków (wrzucenie monety możesz potraktować jak przycisk) i 150ms do generacji impulsów.
w głownej pętli będzie obsługa tych flag: Pod 4ms: zwiększanie zmiennej A o określone wartości, Pod 150ms sprawdzanie czy A >0 i jeśli tak to zmień wartość portu na przeciwny... np:
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.