Witam wszystkich! Mam pewien problem i nie wiem jak go rozwiązać. Potrzebuję w bascomie program do odmierzania 10 minut. Funkcją wait nie da się dokładnie odmierzyć takiego czasu (błąd na 10 minutach wynosi ok.30s). Jestem początkujący lecz napisałem program odmierzający 10 minut. Problem wygląda następująco: Dlaczego poniższy program nie odmierza mi dokładnie 600s tylko ok. 615s? Czy takie odmierzenie czasu dokładne jest w ogóle możliwe? Używam do niego kwarca 8MHz kondensatory 27pF Fuse bits są dobrze ustawione.
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd.7 = Output
Config Portb.2 = Input
Portd.7 = 0
Config Timer0 = Timer , Prescale = 256
On Timer0 Odmierz1s
Enable Interrupts
Enable Timer0
Dim Licz8ms As Byte
Dim Odmierz1s As Word
Load Timer0 = 250
Do
Loop
End
Odmierz1s:
Load Timer0 = 250
Incr Licz8ms
If Licz8ms = 125 Then 'po 125 przerwaniach czyli 1s nastąpi skok do drugiego podprogramu
Gosub Podprogram
Licz8ms = 0
End If
Return
Podprogram:
Incr Odmierz1s
If Odmierz1s = 600 Then 'po 600s włączenie przekaźnika
Portd.7 = 1
End If
If Odmierz1s = 1200 Then 'po 1200s wyłączenie przekaźnika
Portd.7 = 0
Odmierz1s = 0
End If
Return