Witam,
Chciałbym napisać sobie taki program.
Jeśli Pind.6 zewrzemy do masy (Pind.6 =0) to wtedy zostanie wyświetlony komunikat SUPER,
Jeśli w ciągu następnych 2 sekund drugi raz zewrzemy go do masy, to otrzymamy komunikat EXTRA,
Jeśli zaś zewrzemy ten pind.6 po upływie 2 sekund, to nic się nie stanie.
Mam taki ogólny zarys tego w Bascomie
Jak widać mam problem z Timerem,
Gdyż on leci sobie cały czas,
I po tych 2 sekundach, jak rośnie od 34286 w górę do 65535, to potem znowu przyjmuje wartość 1. i znowu leci w górę i znowu można uzyskać teoretycznie czas mniejszy niż 2 sek (gdyż timer leci w kółko)
Bardzo proszę o jakieś nakierowanie
Chciałbym napisać sobie taki program.
Jeśli Pind.6 zewrzemy do masy (Pind.6 =0) to wtedy zostanie wyświetlony komunikat SUPER,
Jeśli w ciągu następnych 2 sekund drugi raz zewrzemy go do masy, to otrzymamy komunikat EXTRA,
Jeśli zaś zewrzemy ten pind.6 po upływie 2 sekund, to nic się nie stanie.
Mam taki ogólny zarys tego w Bascomie
$regfile = "attiny2313.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portd.1 , Rs = Portd.0
Config Timer1 = Timer , Prescale = 64
Portd.6 = 1
Dim Cosik As Byte
Przycisk Alias Pind.6
Enable Interrupts
Cls
Do
If Przycisk = 0 Then
Start Timer1
Lcd "SUPER"
Gosub Dalej
Waitms 100
End If
Loop
End
Dalej: ' TUTAJ JEST ZLE, TRZEBA TO POPRAWIC
If Timer1 < 34286 Then
Cls
Lcd "EXTRA"
End If
Return
End
Jak widać mam problem z Timerem,
Gdyż on leci sobie cały czas,
I po tych 2 sekundach, jak rośnie od 34286 w górę do 65535, to potem znowu przyjmuje wartość 1. i znowu leci w górę i znowu można uzyskać teoretycznie czas mniejszy niż 2 sek (gdyż timer leci w kółko)
Bardzo proszę o jakieś nakierowanie