witam.
Ten post powinien znależć się raczej w dziale mikrokontrolery - a nie tutaj
tam szybciej uzyskasz odpowiedz na to pytanie.
Jezeli chodzi o licznik to wyglada to tak:
timer zgłasza przerwanie w moencie przepełnienia (przejście z FFFFh na 0000h )
najlepiej zeby pracował jako 16bit w trybie zliczania imp. wewn zegara.
nie wiem czy dobrze obliczyłem - ale o ile sie nie walnąłem - to przy takim kwarcu cykl wynosi 0,6uS
normalnie licznik będzie zliczał od 0 do 65535 - co do jakies 39ms (pi x oko)
jednak - aby nie mieszac sobie w wynikach przyjmujemy ładowanie go jakąś wartością początkową po kazdym przerwaniu
ten kwarc jest nieciekawy - lepiej bybyło zastosować 24MHz
byłoby 500ns a nie 600 ale jak juz mamy 600 - to obliczamy sobie zawartość licznika dla czasu równego 20ms (przykładowo) i otrzymujemy TH=33333 - a zatem po odjęciu tego od pełnego wyniku otrzymujemy wartośc pocz. równą 32202 - i to jest nasza pocz. wartość licznika ktora ma byc wpisana przy obsłudze kazdego przerwania.
licznik liczy wtedy od 32202 do 65535 i w przyblizeniu co 20ms zgłosi przerwanie.
następnie deklarujemy sobie jakiś rejestr , ktory będziemy testowali i inkrementowali przy kazdym przerwniu - np R0.
jezeli przerwanie jest zgłaszane co 20ms -to w przeciągu sekundy program obsł. przerwania powinien wykonac sie 50 razy.
a zatem-
program obsługi przerwania powinien:
-wykasować odpowiednie znaczniki przerwań,
-załadować do TH0,TL0 odpowiednia wartość.
- przetestować czy r0=50
- jesli tak - ustawiany jest jakis znacznik, ktory testowany jest przez program głowny (po wyjsciu z pr. obsł.przerw.)
(dodatkowo r0 zostaje ustawiony na 0 - aby od pocz. odliczac czas)
jezeli nie - r0 jest inkrementowany o 1 i następuje wyjscie z obsł. przerwania.
znacznik ten powinien byc kasowany przez program główny (najlepiej )
tym sposobem (chyba jnajprostszym) otrzymujemy mozliwośc testowania - czy minęła 1 sek. czy nie.
jest to dosc ogólny schemat - ale myslke ze zrozumiały.
jesli gdzies walnąłem byka - prosze mnie poprawić (bo pisze kompletnie z pamieci i pewnych rzeczy poprostu mogę nie pamietac

)