Chcę aby na początku była wyświetlona cyfra 0, po 0,5 sekudzie cyfra 1 , po następnej 0,5 sekundy cyfra 2 itd..
A jeśli zewrze pind.2 (bo tam jest INT) do masy, to chcę aby prędkość zmiany cyfr rosła,
Czyli, aby zmiana cyfry z 0 na 1 nie nastąpiła po upływie 0,5sek a po upływie 0,45 sek..
Mam taki kod:
Kod: Zaznacz cały
$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
On Int0 Czas
Enable Interrupts
Enable Int0
Do
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
Czas: ' jesli INT0 zewrze do masy wykonuje sie to:
If Czas > 80 Then ' zablokowanie mniejszej szybkosci ni 80ms gdyz jesli jest ponizej 80ms nie widac ze zmieniaja sie liczby
Czas = Czas - 1 ' gdy INT0 jest zwarty maleje czas o 1ms
Waitms 10
End If
Return
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
Opisze jak to działa..
Lecą sobie cyferki z 0,5sek opóźnieniem...
Gdy zewrze INT0 do masy to na wyświetlaczu zatrzymuje się jakaś cyfra, i gdy puszczę INT0, to leci od tej samej cyfry na której się zatrzymało tyle, że szybciej..
Niby cacy, ale chciałbym, że jeśli zewrze INT0 do masy, to aby cyferki dalej leciały (szybciej), a nie się zatrzymywały..
Dam filmik, żeby było wiadomo o co mi chodzi..
http://www.youtube.com/watch?v=B1-32UOTLXc