BASCOM


Miernik częstotliwości do 65MHz z pośrednią w odczycie.




'12MierCzest65MHz.bas

'Pomiar do 65MHz i dodaj lub odejmij "pośrednią", wpis przy pomocy klawiatury AT.

'Rozdzielczość od 100Hz do 650Hz w zakresie pomiaru od 10MHz do 65MHz.

'Po wpisaniu pośredniej do pamięci Eprom, możemy z niej korzystać dodając lub odejmując ją od odczytu.

'Przykład: mierząc 10MHz (mając w pamięci 1MHz), włączamy odczyt z +Posrednia. Odczytujemy 11MHz.

'Jak wpisać pośrednią, patrz objaśnienia pod programem.

'Bez podziału wstępnego mierzy do 8,3MHz.

'Wyświetla wynik na Lcd, pokazuje, czy dodano, czy odjęto pośrednią.

'Uwaga!: Przy pomiarze >1MHz, wpisana i działająca pośrednia poniżej 1kHz będzie pokazana na Lcd jako 0kHz.

'Tutaj miernik na Atmega8 z kwarcem 18,4MHz.

'Fusebit ustawiony na kwarc zewnętrzny 1111.

'Opracował Henryk Wydmuch.

'Sprawdzony, b.d.

'Pamięć zajęta w 66%.

 

$regfile = "m8def.dat"                                      'Info dla kompilatora.

$crystal = 18432000                                         'Informujemy kompilator o kwarcu 18,4MHz.

 

 Config Lcd = 16 * 2                                        'Konfiguracja Lcd.

 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5

 

 Config Timer0 = Timer , Prescale = 1                       'Timer0 jako Timer z podziałem przez 1.

 Config Timer1 = Counter , Edge = Rising                    'Timer1 jako licznik działający od zbocza narastającego.

 

 Config Keyboard = Pind.0 , Data = Pind.1 , Keydata = Keydata       'Keyboard=klawiatura, podłączona do Portd.0 i 1.

 

 Config Pind.7 = Input                                      'Prz (przełącznik).

 Config Pind.5 = Input                                      'Konfiguruj Portd.5 jako wejście.

 Config Pinb.0 = Output                                     'Konfigurujemy Portb.0 dla LED (przepełnienie).

 Config Pinb.1 = Output                                     'Port do oświetlenia Lcd.

 Config Pind.2 = Input                                      'Konfiguruj Portd.2 jako wejście przełącznika pętli W1.

 Config Pind.3 = Input                                      'Praca z Posrednia, "dodaj" D3.

 Config Pind.4 = Input                                      '"Odejmij" Posrednia W3.

 Set Portd.2                                                'Dołącz rezystor podciągający.

 Set Portd.3                                                'Dołącz rezystor podciągający.

 Set Portd.4                                                'Dołącz rezystor podciągający.

 Set Portd.7                                                'Dołącz rezystor podciągający.

 Set Portb.0                                                'Dołącz rezystor podciągający.

 Set Portb.1                                                'Dołącz rezystor podciągający.

 

 Deflcdchar 3 , 4 , 4 , 6 , 12 , 4 , 4 , 4 , 14             'Wpisano ł.

 Deflcdchar 1 , 2 , 4 , 15 , 8 , 7 , 1 , 14 , 32            'Wpisano ś.

 Deflcdchar 2 , 28 , 2 , 30 , 18 , 18 , 30 , 1 , 2          'Wpisano ą.

 On Timer0 Odmierz_1s                                       'Podprogramdla Timera0 o nazwie Odmierz_1s.

 On Timer1 Zlicz_przep_tim1                                 'Podprogram dla Timera1.

 

 Dim Kodklaw As Byte                                        'Deklarujemy zmienną Kodklaw, tu będzie umieszczany kod naciśniętego klawisza.

 Dim Liczba_przerwan_tim0 As Long                           'Rezerwujemy dwa bajty w pamięci dla zmiennej Liczba_przerwan_tim0. Tu załadujemy liczbę przerwań Timera0.

 Dim Lczba_przep_tim1 As Word                               'Rezewujemy jeden bajt dla zmiennej Liczba_przep_tim1. Tu załadujemy liczbę przerwań Timera1.

 Dim Flaga_aktual_lcd As Bit                                'Rezerwujemy jeden bit na aktualizację wyświetlacza Lcd.

 Dim Wynik_pomiaru As Single                                'Rezerwujemy cztery bajty dla zmiennej Wynik_pomiaru. Tu znajdzie się wynik pomiaru.

 Dim Q As Byte                                              'Liczy ilość naciśnięć klawiszy.

 Dim Posrednia As Long                                      'Liczba wpisana z klawiatury.

 Dim Posr As String * 8                                     'Posrednia jako słowo.

 Dim Zapis As String * 8                                    'Nazwa klawisza przetłumaczona z ASCi.

 Dim Z As String * 8                                        'Wynik pomiaru jako słowo.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokowujemy przerwanie Timera0.

 Enable Timer1                                              'Odblokowujemy przerwanie Timera1.

 

 Stop Timer0                                                'Zatrzymujemy Timer0.

 Stop Timer1                                                'Zatrzymujemy Timer1.

 

 Timer1 = 0                                                 'Zerujemy Timer1.

 Wynik_pomiaru = 0                                          'Zerujemy zmienną Wynik_pomiaru.

 Liczba_przerwan_tim0 = 0                                   'Zerujemy zmienną zawierającą liczbę przerwań Timera0.

 Lczba_przep_tim1 = 0                                       'Zerujemy zmienną zawierającą liczbę przerwań Timera1.

 Locate 2 , 1                                               'Druga linia Lcd.

 Lcd "Pomiar Frekw."                                        'Pokaż.

 Waitms 500                                                 'Trzymaj pokaz 500mS.

 Cls                                                        'Czyść Lcd.

 Start Timer1                                               '

 Start Timer0                                               '

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Do                                                          'Pierwsza pętla wyboru: wpis pośredniej, albo odczyt frekwencji.

  If Pind.2 = 0 Then                                        'Jeśli W2 włączony...

  Locate 2 , 1                                              'to w drugiej linii...

  Lcd "Wpisz po" ; Chr(1) ; "redni" ; Chr(2);               'pokaż napis.

  Locate 1 , 1                                              'Wróć do pierwszej linii.

  Gosub Posrednia_cz                                        'Skocz do podprogramu (wpis pośredniej).

Else                                                        'W przeciwnym razie.

  Gosub Frekwencja                                          'Skocz do podprogramu (odczyt frekwencji).

  End If                                                    'Koniec warunku gdy Pind.2 = 0.

Loop                                                        'Kręć pętlę, aż do skutku.

End                                                         'Tu pętla się kończy.

 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Frekwencja:                                                 'Podprogram odczytu frekwencji.

 Do                                                         'Start pętli głównej.

  If Flaga_aktual_lcd = 1 Then                              'Jeśli flaga aktualizacji Lcd włączona (po każdej sekundzie), to...

  Flaga_aktual_lcd = 0                                      'Zeruj flagę.

  Cls                                                       'Czyść LCD.

     If Wynik_pomiaru = 0 Then                              'Jeśli nie doprowadzono sygnału do wejścia...

     Lcd Wynik_pomiaru ; " Hz"                              'Pokaż wynik w LCD.

     Portb.1 = 1                                            'Nie oświetlaj Lcd.

     Locate 2 , 1                                           'Druga linia Lcd, na początku...

     Lcd " Brak sygna" ; Chr(3) ; "u"                       'Pokaż komunikat.

Else                                                        'W przeciwnym razie...

 

  'Przy pomiarze powyżej 8,3MHz.

  If Pind.7 = 0 Then                                        'Jeśli do Portd.7 doprowadzono 0.

  Wynik_pomiaru = Wynik_pomiaru * 8                         'Pomiar * 8, bo z CD3500.

  Wynik_pomiaru = Wynik_pomiaru * 0.000001                  'Tu doprowadzamy do odczytu w MHz.

  Z = Str(wynik_pomiaru)                                    'Wartość w Wynik_pomiaru zamień na słowną.

  Lcd Z                                                     'Pokaż zawartość zmiennej.

  Locate 1 , 10                                             'Pierwsza linia Lcd, 10 miejsce.

  Lcd " MHz   "                                             'Napisz "MHz"

 

      If Pind.3 = 0 Then                                    'Jeśli w Portd.3 = 0 (W2).

      Posrednia = 0                                         '

      Locate 2 , 1                                          ' W drugiej linii.

      Readeeprom Posrednia , 8                              'Odczytaj z Eprom zawartość zmiennej, adres 8.

      Posrednia = Posrednia * 100                           'Pomnóż wpis przez 100.

      Posr = Str(posrednia)                                 'Zamień cyfrę na słowo.

      Lcd "pcz+" ; Posr ; " Hz";                            'Pokaż słowo.

 

  Else                                                      'W przeciwnym razie.

 

      If Pind.4 = 0 Then                                    'Jeśli tu doprowadzono 0 (W3), to...

      Posrednia = 0                                         '

      Locate 2 , 1                                          ' W drugiej linii.

      Readeeprom Posrednia , 8                              'Odczytaj z Eprom zawartość zmiennej, adres 8.

      Posrednia = Posrednia * 100                           'Pomnóż wpis przez 100.

      Posr = Str(posrednia)                                 'Zamień cyfrę na słowo.

      Lcd "pcz-" ; Posr ; " Hz";                            'Pokaż słowo.

      End If                                                'Koniec warunków, gdy w Pd.3=0 lub Pd.4=0.

      End If                                                '

Else                                                        'W przeciwnym razie.

 

  'Przy pomiarze do 8,3MHz.

  If Pind.7 = 1 Then                                        'Jeśli do Portd.7 doprowadzono 1 (Prz).

  Wynik_pomiaru = Wynik_pomiaru * 1                         'Pomiar * 1.

  Wynik_pomiaru = Wynik_pomiaru * 0.001                     'Tu doprowadzamy do odczytu w MHz.

  Z = Str(wynik_pomiaru)                                    'Wartość w Wynik_pomiaru zamień na słowną.

  Lcd Z                                                     'Pokaż ją na Lcd.

  Locate 1 , 10                                             'Pierwsza linia Lcd, 10 miejsce.

  Lcd " KHz   "                                             'Napisz "KHz"

  'Locate 2 , 1                                              'W drugiej linii.

 

      If Pind.3 = 0 Then                                    'Gdy tu 0 (W2)...

      Posrednia = 0                                         '

      Locate 2 , 1                                          ' W drugiej linii.

      Readeeprom Posrednia , 8                              'Odczytaj z Eprom zawartość zmiennej, adres 8.

         If Posrednia = -1 Then                             '

         Cls                                                '

         Lcd "Brak po" ; Chr(1) ; "redniej"                 '

         Wait 1                                             '

         End If                                             '

 

      Posrednia = Posrednia * 100                           'Powiększ wpis o 100 razy.

      Posr = Str(posrednia)                                 'Zamień cyfrę na słowo.

      Lcd "pcz+" ; Posr ; " Hz";                            'Pokaż słowo.

      Else                                                  'W przeciwnym razie.

      If Pind.4 = 0 Then                                    'Gdy tu 0 (W3)...

      Posrednia = 0                                         '

      Locate 2 , 1                                          ' W drugiej linii.

      Readeeprom Posrednia , 8                              'Odczytaj z Eprom zawartość zmiennej, adres 8.

 

         If Posrednia = -1 Then                             '

         Cls                                                '

         Lcd "Brak po" ; Chr(1) ; "redniej"                 '

         Wait 1                                             '

         End If                                             '

 

      Posrednia = Posrednia * 100                           'Powiększ wpis o 100 razy.

      Posr = Str(posrednia)                                 'Zamień cyfrę na słowo.

      Lcd "pcz-" ; Posr ; " Hz";                            'Pokaż słowo.

      End If                                                'Koniec warunków, gdy były zera.

      End If                                                '

  Start Timer1                                              '

  Start Timer0                                              '

 

   End If                                                   'Koniec warunków.

    End If                                                  '

     End If                                                 '

      End If                                                '

 Loop                                                       'Powtórz pętlę.

 End                                                        'Koniec pętli.

Return

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'---Wpisujemy pośrednią.---

 Posrednia_cz:                                              'Podprogram wpisu pośredniej.

Do                                                          'Pętla.

  Kodklaw = Getatkbd()                                      'Odczytaj kod klawiatury (numer znaku klawiatury w ASCI) i wpisz do zmiennej.

 If Kodklaw > 0 And Kodklaw < 127 Then                      'Jeśli pojawi się jakaś cyfra w zmiennej...

 Incr Q                                                     'Przy każdym naciśnięciu klawisza, powiększaj zawartość zmiennej.

  Select Case Q                                             'Gdy Q będzie miała...

  Case 1 : Zapis = Chr(kodklaw)                             'Cyfrę 1, wpisz do Zapis + nazwę klawisza...

  Lcd Chr(kodklaw)                                          'Pokaż tę nazwę.

  Case 2 : Zapis = Zapis + Chr(kodklaw)                     '

  Lcd Chr(kodklaw)                                          '

  Case 3 : Zapis = Zapis + Chr(kodklaw)                     '

  Lcd Chr(kodklaw)                                          '

  Case 4 : Zapis = Zapis + Chr(kodklaw)                     '

  Lcd Chr(kodklaw)                                          '

  Case 5 : Zapis = Zapis + Chr(kodklaw)                     '

  Lcd Chr(kodklaw)                                          '

  Case 6 : Zapis = Zapis + Chr(kodklaw)                     '

  Lcd Chr(kodklaw)                                          '

  Locate 2 , 1                                              'Idź do drugiej linii.

  Posrednia = Val(zapis)                                    'Słowny zapis z Zapis, zamień na wartość cyfrową..

  Writeeeprom Posrednia , 8                                 'Odczytaj Posrednia. Posrednia as Long.

  Posrednia = 0                                             'Zeruj.

  End Select                                                'Koniec zaglądania do zmiennej Q.

 

'--------------------------------------------

'---Kasowanie pośredniej z Eprom.---

   If Kodklaw = 1 Then                                      'Jeśli wciśnięto ESC...

   Posrednia = 0                                            'Zeruj Posrednia,

   Writeeeprom Posrednia , 8                                'Wpisz to 0 do Eprom.

   End If                                                   'Koniec warunku.

End If                                                      'Koniec warunku: gdu naciśnięto klawisz.

Loop                                                        'Powtarzaj pętlę.

End                                                         'Tu jest koniec programu pętli.

Return                                                      'Wróć do pierwszej pętli.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 Odmierz_1s:                                                'Podprogram dla Timera0 (wyznaczanie 1sek i nie tylko).

  Timer0 = 108                                              'Do Timera0 dodaj 108 i zapamiętaj jako Timer0.

  Incr Liczba_przerwan_tim0                                 'Liczbę przerwań Timera0 powiększ o jeden.

  If Liczba_przerwan_tim0 = 87999 Then                      'Jeśli liczba przerwań Timera0 jest równa 87999, to...

  'Liczbą 87999 ustalamy dokładny pomiar (dokładną sekundę).

  Liczba_przerwan_tim0 = 0                                  'Wyzeruj zmienną.

  Wynik_pomiaru = 65536 * Lczba_przep_tim1                  'Zmienną Liczba_przep_tim1 pomnóż przez 65536, a wynik wstaw do zmiennej Wynik_pomiaru.

  Wynik_pomiaru = Wynik_pomiaru + Timer1                    'Wynik powyższego działania dodaj do aktualnej zawartości Timera1 i ten wynik wpisz do zmiennej Wynik_pomiaru.

    If Pind.3 = 0 And Pind.7 = 0 Then                       'Jeśli tu będą zera (W2 i Prz).

    Readeeprom Posrednia , 8                                'Odczytaj Eprom.

    Posrednia = Posrednia / 8                               '

    Posrednia = Posrednia * 100                             '

    Wynik_pomiaru = Wynik_pomiaru + Posrednia               '

 

    Else                                                    'W przeciwnym razie.

    If Pind.4 = 0 And Pind.7 = 0 Then                       'Jeśli tu będą zera (W3 i Prz).

    Readeeprom Posrednia , 8                                'Odczytaj Eprom.

    Posrednia = Posrednia / 8                               '

    Posrednia = Posrednia * 100                             '

    Wynik_pomiaru = Wynik_pomiaru - Posrednia               '

 

    Else                                                    'W przeciwnym razie.

    If Pind.3 = 0 And Pind.7 = 1 Then                       'Jeśli tu będzie zero i jeden (W2 i Prz).

    Readeeprom Posrednia , 8                                'Odczytaj Eprom.

    Posrednia = Posrednia * 100                             '

    Wynik_pomiaru = Wynik_pomiaru + Posrednia               '

 

    Else                                                    'W przeciwnym razie.

    If Pind.4 = 0 And Pind.7 = 1 Then                       'Jeśli tu będzie zero i jeden (W3 i Prz).

    Readeeprom Posrednia , 8                                'Odczytaj Eprom.

    Posrednia = Posrednia * 100                             '

    Wynik_pomiaru = Wynik_pomiaru - Posrednia               '

 

    End If                                                  '

     End If                                                 '

      End If                                                '

       End If                                               '

  Flaga_aktual_lcd = 1                                      'Załącz flagę aktualizacji Lcd.

  Lczba_przep_tim1 = 0                                      'Zeruj zmianną Lczba_przep_tim1 przepełnień Timera1.

  Timer1 = 0                                                'Zeruj Timer1.

  End If                                                    'Koniec uwarunkowania.

 Return                                                     'Wróć do programu.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'---Przekroczenie zakresu---

 Zlicz_przep_tim1:                                          'Podprogram Timera1 (przekroczenie zakresu).

  Enable Interrupts                                         'Jeszcze raz odblokuj przerwania.

  Incr Lczba_przep_tim1                                     'Zawartość zmiennej Liczba_przep_tim1 powiększ o jeden.

  If Lczba_przep_tim1 = 127 Then                            'Po 127 przepełnieniach Timer-a 1 (czyli po 8,3MHz)...

  Cls                                                       'Czyść LCD.

  Lcd "Przepelnienie"                                       'Wpisz komunikat.

  Locate 2 , 1                                              'Druga linia Lcd, na początku.

  Lcd "   licznika!"                                        'W drugiej linii wyświetl:

  Portb.0 = 0                                               'Ustaw 0 w Portb.0 (zaświeć Led przepełnienia).

  Waitms 800                                                'Czekaj 1 sek.

   End If                                                   'Koniec warunku gdy będzie 123 przepełnień.

  Set Portb.0                                               'Ustaw 1 w Portb.0 (zgaś Led).

 Return                                                     'Wróć do programu.

 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'---Tablica numerów przycisków klawiatury AT w kodzie ASCI:---

  Keydata:                                                  'Podprogram tablicy.

  'Małe litery

   Data 0 , 5 , 0 , 3 , 4 , 5 , 6 , &H07 , 5 , 5 , 5 , &H0B , &H0C , 0,       ''''''''''''A

   Data 39 , 39 , 39 , 39 , 39 , 39 , 39 , 113 , 49 , 39 , 39 , 39 , 122,       ''''''''''B

   Data 115 , 97 , 119 , 50 , 39 , 39 , 99 , 120 , 100 , 101 , 52 ,       ''''''''''''''''C

   Data 51 , 39 , 39 , 32 , 118 , 102 , 116 , 114 , 53 , 39 , 39 , 110 ,       '''''''''''D

   Data 98 , 104 , 103 , 121 , 54 , 39 , 39 , 39 , 109 , 106 , 117 , 55 ,       ''''''''''E

   Data 56 , 0 , 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 47 ,       ''''''''''''F

   Data 108 , 59 , 112 , 95 , 0 , 0 , 0 , 39 , 0 , 0 , 61 , 0 , 0 , 0,       '''''''''''''G

   Data 63 , 13 , 63 , 63 , 124 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63 , 63,       'H

   Data 63 , 49 , 63 , 52 , 55 , 63 , 63 , 63 , 48 , 127 , 50 , 53 , 54 , 56,       ''''''I

   Data 1 , 63 , 5 , 43 , 51 , 45 , 42 , 57 , 63 , 63       ''''''''''''''''''''''''''''''J

 

  'Duże litery

  Data 0 , 0 , 0 , 5 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0,       ''''''''''K

  Data 0 , 0 , 0 , 0 , 0 , 0 , 81 , 33 , 03 , 0 , 0 , 90 , 83 , 65,       ''''''''L

  Data 87 , 64 , 0 , 0 , 67 , 88 , 68 , 69 , 36 , 35 , 0 , 0 , 0 , 86,       '''''M

  Data 70 , 84 , 82 , 37 , 0 , 0 , 78 , 66 , 72 , 71 , 89 , 94 , 0,       ''''''''N

  Data 0 , 0 , 77 , 74 , 85 , 38 , 42 , 0 , 0 , 60 , 75 , 73 , 79,       '''''''''O

  Data 41 , 40 , 0 , 0 , 62 , 63 , 76 , 58 , 80 , 0 , 0 , 0 , 0 , 0,       '''''''P

  Data 0 , 123 , 43 , 0 , 0 , 0 , 0 , 0 , 125 , 0 , 0 , 0 , 0 , 0 , 0,       '''''Q

  Data 0 , 0 , 0 , 0 , 0 , 0 , 49 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 48,       '''''R

  Data 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0       'S

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

'Objaśnienia:

'Na czas wpisywania pośredniej do miernika częstotliwości, włączamy do gniazda klawiaturę komputerową AT,

'włączamy W1, wciskamy na chwilę Reset, wpisujemy częstotliwość według tabelki poniżej,

'{zawsze liczba 6-cyfrowa}, i wyłączamy W1 - Reset. Pośrednia została wpisana do nieulotnej pamięci.

 

'Pomiar do 8,3 lub 65MHz wybieramy przełącznikiem Prz, a w.cz. dołączamy do odpowiedniego gniazda.

'Jeśli chcemy odczytać z dodaniem lub odjęciem pośredniej, albo zobaczyć jaka pośrednia jest wpisana: W2 albo W3 i Reset.

'Wpis można nadpisać: W1 - Reset - wpis - W1 - Reset. Wpis można również wymazać: W1 - Reset - Esc - W1 -Reset.

 

'Jak wpisać częstotliwość pośrednią:

'999999   =99,999MHz

'100000   =10MHz

'125000   =12,5MHz

'010000   =1MHz

'012500   =1,25MHz

'000125   =12,5kHz

'000500   =50kHz

'000050   =5kHz

'000005   =500Hz

'000001   =100Hz.

'Najniższa pośrednia, to 100Hz.

'--------------

 

'Sprawdzamy rozdzielczość.

'1 sekunda, to 1000000000nS.

'W ciągu 1sek Liczba_przerwan_tim0 = 87998, czyli Timer0 przepełnia się 87998 razy.

'W czasie 87998 przepełnień upływa sekunda.

'Pomiar odbywa się w czasie 1sek. To znaczy, w czasie 1sek zliczane są Hz mierzonej frekwencji.

'Ile czasu wynosi jedno przepełnienie Timer0: 1sek/87998=11363,89463nS. Wynosi 11363nS.

'W czasie jednego przepełnienia procesor zliczy maksymalnie 730,383Hz. (max we 8,3MHz/11363,8nS=730,3Hz).

'Jeśli mierzymy np 50MHz: 50MHz/8=6,25MHz. 6,28MHz to frekwencja docierająca do procesora.

'Przy tej frekwencji, jedno:Liczba_przerwan_tim0 =71,3Hz (6,28MHz=6280000Hz/87998przerwań=71,365Hz).

'Podział wstępny=8, więc: 71,3*8=570,9Hz.

'Odpowiedź: Rozdzielczość wynosi 570,9Hz.

'Oznacza to, że w okolicach 50MHz, częstotliwość kroczy co 570Hz.

'Albo, gdy mierzymy 10MHz: 10000000Hz/87998przep=14,2Hz. Jedno przepełnienie to 14,2Hz.

'Podział wstępny=8. 14,2Hz*8=113,63Hz.

'Tutaj rozdzielczość wynosi 114Hz.

'Mierząc w okolicy 10MHz, odczyt kroczy co 114Hz.

'-----------------------------------------