BASCOM

Generator na Timer0


Przykład trzech programów generatorów na Timer0 do eksperymentów.
Najlepiej do Portd.1 lub Portd.4 dołączyć oscyloskop, aby móc obserwować , co się dzieje gdy zmieniamy różne parametry w programie.

'Generator8.bas

 'Program poglądowy, generator Timer0.

 'Wyjście na dwóch portach.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Generator8.png.

 'Program zajmuje 2% pamięci.

 

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

$crystal = 16000000                                         'Informujemy kompilator o kwarcu 16MHz.

 

 Config Timer0 = Timer , Prescale = 256                     'Timer0 jako licznik czasu.

 

 Config Pind.4 = Output                                     'Port wyjściowy.

 Config Pind.1 = Output                                     'Port wyjściowy.

  Set Portd.1                                               'Ustaw poziom wysoki na wyjściu Portd.4.

  Reset Portd.4                                             'Ustaw poziom niski na wyjściu Portd.1.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokowujemy przerwanie.

 

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

Licz:                                                       'Podprogram.

  Incr Timer0

  If Timer0 = 2 Then

   Toggle Portd.1                                            'Przełączaj Port.

  Toggle Portd.4                                            'Przełączaj Port.

  Timer0 = 0

  End If

 Return                                                     'Wróć do programu.

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

 

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

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

 'Generator7.bas

 'Program poglądowy, generator Timer0.

 'Wyjście na dwóch portach.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Generator7.png.

 'Program zajmuje 3% pamięci.

 

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

$crystal = 16000000                                         'Informujemy kompilator o kwarcu 16MHz.

 

 Config Timer0 = Timer , Prescale = 256                     'Timer0 jako licznik czasu.

 

 Config Pind.4 = Output                                     'Port wyjściowy.

 Config Pind.1 = Output                                     'Port wyjściowy.

  Set Portd.1                                               'Ustaw poziom wysoki na wyjściu Portd.4.

  Reset Portd.4                                             'Ustaw poziom niski na wyjściu Portd.1.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokowujemy przerwanie.

 

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

 Do

 

 Toggle Portd.1                                             'Przełączaj Port.

  Toggle Portd.4                                            'Przełączaj Port.

 Loop

 End

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

'

'Objśnienie:

'Ten generator oscyluje z częstotliwością 235KHz.

'Wyjście w Portd.1 i d.4.

 

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

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

 

 'Generator6.bas

 'Program poglądowy, generator Timer0.

 'Wyjście na dwóch portach.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Generator6.png.

 'Program zajmuje 3% pamięci.

 

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

$crystal = 16000000                                         'Informujemy kompilator o kwarcu 16MHz.

 

 Config Timer0 = Timer , Prescale = 64                      'Timer0 jako licznik czasu.

 

 Config Pind.4 = Output                                     'Port wyjściowy.

 Config Pind.1 = Output                                     'Port wyjściowy.

  Set Portd.1                                               'Ustaw poziom wysoki na wyjściu Portd.4.

  Reset Portd.4                                             'Ustaw poziom niski na wyjściu Portd.1.

 

 On Timer0 Licz                                             'Podprogram Timer0.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokowujemy przerwanie.

 

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

Licz:                                                       'Podprogram.

  Toggle Portd.1                                            'Przełączaj Port.

  Toggle Portd.4                                            'Przełączaj Port.

 Return                                                     'Wróć do programu.

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

'Objśnienie:

'przy Prescale=1 frekwencja wynosi 32,125KHz, Prescale=8 frekw. 5,4KHz, Prescale=64 frekw. 2,5KHz.

'Na Portd.4 i d.1 otrzymujemy sygnały w przeciwfazie.

 

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

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