Witam,
Podłączyłem sobie Wyświetlacz LED 7-segmentowy do mojego procka.
I program wyświetla z 0,5sek opóźnieniem kolejne cyfry.
Chciałbym aby gdy Pind.0 przyjmie wartość 0 (jeśli zewrze go z masą), cyfry szybciej się zmieniały (np. co 0,3sek)
napisałem coś takiego:
Ale jak widać jeśli Pind.0 zewrze z masą na chwilkę przy np. cyfrze 4, to nic się nie stanie, gdyż program leci w dół, a dopiero na samej gorzę (czyli po cyfrze 9) sprawdza czy nie jest Pind.0 zwarty z masą,
Więc teraz jeśli chcę, aby cyfry szybciej przeskakiwały, to muszę mieć pind.0 zwarty w czasie kiedy liczba 9, zamienia się na 0
Chcę zrobić tak, żeby szybkość zmiany diody była płynna (żebym w dowolnym momencie jeśli zewerzę pind.0 do masy prędkość wyświetlania liczb się zmieniła)
W jaki sposób to zrobić?
//Wiem, że mogę dać ten warunek po każdym
, ale i tak to nie będzie płynne...
Jak udoskonalić ten kod?
Podłączyłem sobie Wyświetlacz LED 7-segmentowy do mojego procka.
I program wyświetla z 0,5sek opóźnieniem kolejne cyfry.
Chciałbym aby gdy Pind.0 przyjmie wartość 0 (jeśli zewrze go z masą), cyfry szybciej się zmieniały (np. co 0,3sek)
napisałem coś takiego:
$regfile = "attiny2313.dat" 'najpierw określamy typ proca
$crystal = 1000000
Config Portb = Output ' ustawienie całego Portu B jako wyjscia
Portb = &B11111111 ' stan spoczynkowy wszystkich wyjsć ustawiony na 1
Config Portd = Input
Portd = &B1111111 ' stan spoczynkowy wszystkich bitów ustawiony na 1
Dim Czas As Integer
Czas = 500
Do
If Pind.0 = 0 then
Czas = Czas - 200
End If
Gosub Zero
Waitms Czas
Gosub Jeden
Waitms Czas
Gosub Dwa
Waitms Czas
Gosub Trzy
Waitms Czas
Gosub Cztery
Waitms Czas
Gosub Piec
Waitms Czas
Gosub Szesc
Waitms Czas
Gosub Siedem
Waitms Czas
Gosub Osiem
Waitms Czas
Gosub Dziewiec
Waitms Czas
Loop
End
'Cyferki
Zero:
Portb = &B11000000
Return
Jeden:
Portb = &B11111001
Return
Dwa:
Portb = &B10100100
Return
Trzy:
Portb = &B10110000
Return
Cztery:
Portb = &B10011001
Return
Piec:
Portb = &B10010010
Return
Szesc:
Portb = &B10000010
Return
Siedem:
Portb = &B11111000
Return
Osiem:
Portb = &B10000000
Return
Dziewiec:
Portb = &B10010000
Return
Ale jak widać jeśli Pind.0 zewrze z masą na chwilkę przy np. cyfrze 4, to nic się nie stanie, gdyż program leci w dół, a dopiero na samej gorzę (czyli po cyfrze 9) sprawdza czy nie jest Pind.0 zwarty z masą,
Więc teraz jeśli chcę, aby cyfry szybciej przeskakiwały, to muszę mieć pind.0 zwarty w czasie kiedy liczba 9, zamienia się na 0
Chcę zrobić tak, żeby szybkość zmiany diody była płynna (żebym w dowolnym momencie jeśli zewerzę pind.0 do masy prędkość wyświetlania liczb się zmieniła)
W jaki sposób to zrobić?
//Wiem, że mogę dać ten warunek
If Pind.0 = 0 then
Czas = Czas - 200
End IfWaitms CzasJak udoskonalić ten kod?