BASCOM

Generator 20KHz z ustawianą częstotliwością


Generator oscyluje przebiegi cyfrowe. Jego częstotliwość możemy ustawiać wpisując do zmiennej Wp w programie procesora liczbę podziału. Po wpisaniu 1 otrzymamy 20KHz, natomiast wszyskie inne liczby spowodują zmniejszenie tej frekwencji. Częstotliwość oscylacji generatora obserwujemy na Lcd.


'Przerwanie14.bas

 'Program poglądowy, liczenie czasu przez Timer0.

 'Generator o ustawianej częstotliwości.

 'Ustawioną częstotliwość możemy zobaczyć na Lcd.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Program zajmuje 19% pamięci.

 

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

$crystal = 10240000                                         'Informujemy kompilator o kwarcu 10.24MHz.

 

 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 licznik czasu.

 

 

 Config Pind.6 = Output                                     'Port wyjściowy częstotliwości.

  Set Portd.6                                               'Ustaw poziom wysoki na wyjściu Portd.6.

 

 Dim Zm As Word                                             'Zm, zmienna przerwań Timer0.

 Dim Odp As Single                                          'Odp, zmienna, która będzie zawierać odpowiedź jaka jest częstotliwość..

 Dim F As Word                                              'F, zmienna do umieszczenia w pdprogramie Licz.

 Dim Wp As Word                                             'Wp, zmienna do której będzie wpisywana liczba do podziału.

 

 On Timer0 Licz                                             'Podprogram.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokuj przerwania Timer0.

 

 Cls

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

Do                                                          'Pętla do wykonania dzielenia i wyświetlenia wyniku.

 Wp = 5                                                     'Tutaj, do zmiennej Wp wpisujemy liczbę podziału 20KHz.

 Home                                                       'Pokazuj w jednym miejscu.

 Odp = 20 / F                                               '20KHz podziel przez liczbę, którą wprowadziliśmy.

 Lcd Odp ; " KHz"                                           'Pokaż odpowiedź.

 Odp = 0                                                    'Zeruj zmienną.

 Loop                                                       'Powtórz pętlę.

End                                                         'Koniec pętli.

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

Licz:                                                       'Podprogram Timer0.

   F = Wp                                                   'Zmienna F zawiera liczbę, którą wprowadziliśmy.

   Incr Zm                                                  'Po każdym przerwaniu powiększaj zmienną.

   If Zm = F Then                                           'Jeśli jest tyle przerwań, ile wpisaliśmy do Wp, to Toggle.

   Toggle Portd.6                                           'Zmień stan Portd.6.

   Zm = 0                                                      'Zeruj zmienną.

  End If                                                    'Koniec warunku.

Return                                                      'Wróć do programu.

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

 

'Objaśnienie:

'Budujemy generator z ustawianą częstotliwością.

'Zajmujemy się Timer0.

'Jedno przerwanie trwa 25uS (mikrosekund), jest to połowa okresu.

'Jeden okres trwa 50uS.

'Z iterfejsu Czasy.exe możemy zobaczyć, że 50uS to frekwencja 20KHz.

'Jeśli do Wp wpiszemy podział 1, to generator będzie oscylował z częstotliwością właśnie 20KHz.

'Każdą inną częstotliwość możemy otrzymać wpisując do Wp liczbę podziału.

'Przykład: Wp=18.  20KHz/18=1,11KHz.

'Po wpisaniu liczby 18, otrzymaliśmy częstotliwość generatora 1,11KHz.

'Częstotliwość naszego generatora możemy oglądać na wyświetlaczu Lcd.

'Program można rozbudować o klawiaturę komputerową i wpisywać liczbę podziału z klawiatury.

'Koniec.