BASCOM

Przerwanie od przepełnienia



'Przerwanie1.bas

 'Program poglądowy, zliczanie impulsów z zewnątrz przez Timer0.

 'Można załączyć i wyłączyć Port od przepełnienia.

 'Opis pod programem.

 'Opracował Henryk Wydmuch

 'Przerwanie1.png.

 'Program zajmuje 9% 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 Timer0 = Counter , Edge = Rising                    'Timer0 jako licznik, od zbocza narastającego.

 

 Config Pind.1 = Output                                     'Port wykonawczy.

 Config Pind.4 = Input                                      'Wejście impulsów do Timer0.

  Set Portd.4                                               'Ustaw poziom wysoki na wejściu Portd.4.

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

 

 Dim Przep_tim0 As Byte                                     'Deklarujemy zmienną.

 

 On Ovf0 Sekunda                                            'Podprogram Timer0 o nazwie Sekunda.

 

 Enable Interrupts                                          'Zezwalaj na wszystkie przerwania.

 Enable Timer0                                              'Odblokowujemy przerwanie.

 

 Cls                                                        'Wyczyść Lcd.

 

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

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

   Home                                                     'Wyświetlaj wynik w jednym miejscu.

  Lcd Przep_tim0                                            'Pokazuj zawartość Timer0.

 

  If Przep_tim0 = 3 Then                                    'Jeśli w zmiennej będą 3 przepełnienia...

  Reset Portd.1                                             'Na wyjściu Portd.1 ustaw zero.

  End If                                                    '

 Loop                                                       'Powtórz pętlę.

End                                                         'Koniec pętli.

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

Sekunda:                                                    'Podprogram.

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

  Return                                                    'Wróć do programu.

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

'Objaśnienie:

'W Atmega8 impulsy zliczane przez Timer0 doprowadza się do Portd.4.

'Impulsy z generatora zliczane przez Timer0. Maksymalnie można zliczyć 255 impulsów i przepełnienie.

'W pętli Do można ustawić po ilu przepełnieniach ma się załączyć Portd.1.

'Tutaj załączenie jest po 3 przepełnieniach.

'Na Lcd widzimy każde przepełnienie.

'Koniec.