BASCOM

Przerwanie przez porównanie



'Przerwanie3.bas

 'Program poglądowy, zliczanie impulsów z zewnątrz przez Timer1 i przerwanie po

 'odliczeniu określonej ilości impulsów.

 'Można załączyć i wyłączyć Port, ale nie tylko oczywiście.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Przerwanie3.png.

 'Program zajmuje 10% pamięci.

 

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

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

 

 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 Timer1 = Counter , Edge = Rising                    'Timer1 jako licznik, od zbocza narastającego.

 

 Config Pind.1 = Output                                     'Port wykonawczy.

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

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer1                                              'Odblokowujemy przerwanie.

 

 Cls                                                        'Wyczyść Lcd.

 

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

Do                                                          'Początek pętli głównej programu.

   Home                                                     'Wyświetlaj wynik w jednym miejscu.

  Lcd Counter1

  If Counter1 = 128 Then

 Reset Portd.1

 Else

  If Counter1 = 200 Then

  Set Portd.1

  'Stop Timer1

  End If                                                    '

  End If

 Loop                                                       'Powtórz pętlę.

End                                                         'Koniec pętli.

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

Licz:                                                       'Podprogram.

  Incr Counter1                                             'Po każdym impulsie powiększaj zawartość zmiennej.

  Return                                                    'Wróć do programu.

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

 

'Objaśnienie:

'Zajmujemy się timer1.

'Wejściem Timer1 jest Portd.5.

'Nie potrzeba konfigurować portu.

'Jeśli do Portd.5 będziemy podawać impulsy przez pojemność, należy port obciążyć rezystancją.

 

'Jak to działa:

'Timer1 został z konfigurowany jako licznik (counter).

'W podprogramie Licz ma polecenie powiększaj o 1.

'W pętli Do, Lcd pokazuje zawartość Countera.

'Jeśli ilość impulsów na wejściu przekroczy 128, Portd.1 przyjmie poziom niski.

'Jesli liczba dojdzie do 220, Portd.1 przyjmie poziom wysoki.

'Jeśli będzie włączone polecenie Stop Timer1, Timer1 zatrzyma się i zatrzyma się zliczanie impulsów.

 

'Do czego może służyć:

'Może załączać Portd.1, ale Port ten może być również wyjściem przebiegu, którego nimpulsy

'będą miały określony przez nas charakter. Czasy pomiędzy wierzchołkami poziomów wysokich mogą być takie jakie chcemy.

 

'Koniec.