BASCOM


Rejestrator zdarzeń


Urządzenie służy do rejestrowania czasu i daty jakiegoś wydarzenia. Zarejestruje sześć takich zdarzeń. Siódme zdarzenie zostanie zapisane na pierwszym, jeśli pierwsze nie zostało skasowane. Jest to tak zwane nadpisanie. Zdarzenia są rejestrowane w pamięci Eprom, czyli nie znikają po wyłączeniu urządzenia.

Przewidziano zasilanie buforowe, zabezpieczające przed zgubieniem prawidłowej daty i czasu.
Początkowy czas i datę wpisujemy do procesora klawiaturą komputerową. O określonej godzinie startujemy czas i zegar, który widać na Lcd, pracuje już ciągle, bez względu na inne zdarzenia.

Na schemacie pokazałem kontaktrony dające impuls, przykładowo od otwartych drzwi.

'Rejestruj2.bas

'Program do zapisania czasu i daty zdarzenia. Zegar czasu i daty.

'Zarejestruje 6 zdarzeń i zapisze w Eprom.

'Pozwala ustawić datę i czas początkowy zegara z klawiatury AT.

'Należy dołączyć klawiaturę komputerową w celu wpisania daty i czasu.

'Wpis daty i czasu: DDspacjaMMspacjaRRGGspacjaMMspacjaSSspacja.

'Gdzie: D-dzień, M-miesiąc, R-rok, G-godzina, M-minuta, S-sekunda.

'Zegar startujemy przyciskiem P7.

'Czas widać na Lcd po włączeniu włącznikiem W.

'Zapisze datę i czas zdarzenia(impulsu) przychodzącego z zewnątrz do Portb.2.

'Odczyt zapisu w Eprom przychodzącego impulsu przyciskiem PB1, bez względu na pozycję W.

'Procesor Atmega8.

'Pamięć zajęta w 97%.

'Opracował Henryk Wydmuch.

'Fusebit A997 ustawiony na oscylator wewnętrzny 0011.

'Kwarc zewnętrzny, zegarkowy 32768Hz.

 

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

 $crystal = 4000000                                         'Zastosujemy oscylator wewnętrzny 4MHz.

 Config Lcd = 16 * 2

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

 

 Config Keyboard = Pinc.5 , Data = Pinc.4 , Keydata = Keydata       'Keyboard=klawiatura, podłączona do Portc.5 i 4.

 

   Config Clock = Soft                                      'Konfiguruj czas.

   Config Date = Dmy , Separator = /                        'Konfiguruj datę. Będzie: dzień, miesiąc, rok, seperatorem będzie /.

   Config Timer1 = Timer , Prescale = 1                     '

   Config Timer0 = Timer , Prescale = 256                   '

   Enable Interrupts                                        'Odblokuj przerwania.

   Enable Timer0                                            '

 

 Config Pinc.0 = Input                                      'P0, kasow. Eprom.

 Set Portc.0                                                'Ustaw poziom wysoki.

 Config Pinc.1 = Input                                      'PC1, kasow. alarmu.

 Set Portc.1                                                'Ustaw poziom wysoki.

 Config Pinc.2 = Output                                     'Led mignięcie Dm.

 Set Portc.2                                                'Ustaw poziom wysoki.

 Config Pinc.3 = Output                                     'Głośnik.

 Set Portc.3                                                '

 Config Pinc.4 = Input                                      'Data (klawiat.).

 Set Portc.4                                                'Ustaw poziom wysoki.

 Config Pinc.5 = Input                                      'Scl(klawiat.).

 Set Portc.5                                                'Ustaw poziom wysoki.

 Config Pinb.0 = Input                                      'W (dla Lcd).

 Set Portb.0                                                'Ustaw poziom wysoki.

 Config Pinb.1 = Input                                      'Odczyt zdarzeń, PB1.

 Set Portb.1                                                'Ustaw poziom wysoki.

 Config Pinb.2 = Input                                      'Wejście z zewnątrz i Ppr.

 Set Portb.2                                                'Ustaw poziom wysoki.

 Config Pinb.3 = Output                                     'Led czerw. - załączone.

 Set Portb.3                                                'Ustaw poziom wysoki.

 Config Pind.6 = Output                                     'Żółta led.

 Set Portd.6                                                '

 Config Pind.7 = Input                                      'Startuje czas P7.

 Set Portd.7                                                'Ustaw poziom wysoki.

 

 Dim I As Byte

 Dim Iro As Byte                                            '

 Dim Imie As Byte                                           '

 Dim Idz As Byte                                            '

 Dim Isek As Byte                                           '

 Dim Imi As Byte                                            '

 Dim Igo As Byte                                            '

 Dim Ro As Byte                                             '

 Dim Mie As Byte                                            '

 Dim Dz As Byte                                             '

 Dim Sek As Byte                                            '

 Dim Mi As Byte                                             '

 Dim Go As Byte                                             '

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

 Dim Liczba As Byte                                         'Przepełnienia Timer1.

 Dim Licz As Byte                                           'Przepełnienia Timer0.

 Dim Pozycja As Byte                                        'Pozycja, zmienna przechowująca ilość przyciśniętych przycisków.

 Dim Da As String * 9                                       'Deklarujemy zmienną Da, tu będzie umieszczona napisana data.

 Dim Ti As String * 9                                       'Deklarujemy zmienną Ti, tu umieścimy napisany czas.

 Dim A1 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim A2 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim B As String * 1                                        'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim C1 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim C2 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim D As String * 1                                        'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim E1 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim E2 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim E3 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 Dim E4 As String * 1                                       'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim F1 As String * 1                                    'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim F2 As String * 1                                    'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim G As String * 1                                     'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim H1 As String * 1                                    'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim H2 As String * 1                                    'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

    Dim J As String * 1                                     'Jednomiejscowa zmienna, tu umieścimy nazwę naciśniętego klawisza.

 

  Display Off                                               'Wyłącz Lcd.

  Waitms 500                                                'Poczekaj 500mS.

  Display On                                                'Włącz Lcd.

  Cls                                                       'Czyść Lcd.

 

  On Timer0 Mig                                             'Podprogram.

  On Timer1 Meg                                             'Podprogram.

 

 Lcd "Data:" ; Chr(34) ; "dd/mm/rr" ; Chr(34)               'Po włączeniu procesora, pokaż jak trzeba wpisać.

 Lowerline                                                  'I w drugiej linii..

 Lcd "Czas:" ; Chr(34) ; "gg:mm:ss" ; Chr(34)               'Po włączeniu procesora, pokaż jak trzeba wpisać.

 Pozycja = 9                                                'Do zmiennej Pozycja wpisz cyfrę 9.

  Iro = 0                                                   '

  Igo = 0                                                   '

 

'********************************************************************************

 Do                                                         'Pierwsza pętla Do. Służy tylko do wpisania daty i czasu.

 Kodklaw = Getatkbd()                                       'Odczytaj kod klawiatury (Getatkbd) i wpisz do zmiennej.

 

 If Kodklaw > 0 And Kodklaw < 255 Then                      'Jeśli ta cyfra będzie większa od 0 lub mniejsza od 255...

 Cls                                                        'Wyczyść Lcd.

       Locate 1 , 1                                         '

       Cursor Off                                           '

       Lcd "Data " ; A1 ; A2 ; B ; C1 ; C2 ; D ; E1 ; E2;   '

       Locate 2 , 1                                         '

       Lcd "Czas " ; E3 ; E4 ; F1 ; F2 ; G ; H1 ; H2 ; J;   '

 

     Incr Pozycja                                           'Po każdym naciśnięciu klawisza, powiększ Pozycja o 1.

 

     If Pozycja = 10 Then                                   'Jeśli Pozycja zawiera cyfrę 10, to...

     A1 = Chr(kodklaw)                                      'Do zmiennej A1 wpisz nazwę klawisza.

      End If                                                'Koniec warumku.

     If Pozycja = 11 Then                                   'Jeśli Pozycja zawiera cyfrę 11, to...

     A2 = Chr(kodklaw)                                      'Do zmiennej A2 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 12 Then                                   'Jeśli Pozycja zawiera cyfrę 12, to...

     B = Chr(kodklaw)                                       'Do zmiennej B wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 13 Then                                   'Jeśli Pozycja zawiera cyfrę 13, to...

     C1 = Chr(kodklaw)                                      'Do zmiennej C1 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 14 Then                                   'Jeśli Pozycja zawiera cyfrę 14, to...

     C2 = Chr(kodklaw)                                      'Do zmiennej C2 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 15 Then                                   'Jeśli Pozycja zawiera cyfrę 15, to...

     D = Chr(kodklaw)                                       'Do zmiennej D wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 16 Then                                   'Jeśli Pozycja zawiera cyfrę 16, to...

     E1 = Chr(kodklaw)                                      'Do zmiennej E1 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 17 Then                                   'Jeśli Pozycja zawiera cyfrę 17, to...

     E2 = Chr(kodklaw)                                      'Do zmiennej E2 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 18 Then                                   'Jeśli Pozycja zawiera cyfrę 18, to...

     E3 = Chr(kodklaw)                                      'Do zmiennej E3 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 19 Then                                   'Jeśli Pozycja zawiera cyfrę 19, to...

     E4 = Chr(kodklaw)                                      'Do zmiennej E4 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 20 Then                                   'Jeśli Pozycja zawiera cyfrę 20, to...

     F1 = Chr(kodklaw)                                      'Do zmiennej F1 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 21 Then                                   'Jeśli Pozycja zawiera cyfrę 21, to...

     F2 = Chr(kodklaw)                                      'Do zmiennej F2 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 22 Then                                   'Jeśli Pozycja zawiera cyfrę 22, to...

     G = Chr(kodklaw)                                       'Do zmiennej G wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 23 Then                                   'Jeśli Pozycja zawiera cyfrę 23, to...

     H1 = Chr(kodklaw)                                      'Do zmiennej H1 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 24 Then                                   'Jeśli Pozycja zawiera cyfrę 24, to...

     H2 = Chr(kodklaw)                                      'Do zmiennej H2 wpisz nazwę klawisza.

      End If                                                '

     If Pozycja = 25 Then                                   'Jeśli Pozycja zawiera cyfrę 25, to...

     J = Chr(kodklaw)                                       'Do zmiennej J wpisz nazwę klawisza.

      End If                                                '

 

      If Pozycja = 26 Then                                  'Ostatnia spacja.

       Da = A1 + A2 + B + C1 + C2 + D + E1 + E2             'Zmienna Da pamięta następujące, naciśnięte przyciski...

       Ti = E3 + E4 + F1 + F2 + G + H1 + H2 + J             'Zmienna Ti pamięta następujące, naciśnięte przyciski...

       Gosub Ustaw                                          'Skocz do podprogramu oczekiwania na start.

      End If                                                '

 End If                                                     '

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

 Loop                                                       'Powtórz pętlę,

 End                                                        'Koniec pętli.

'********************************************************************************

 Ustaw:                                                     'Podprogram oczekiwania na start.

   Do                                                       '

    If Pind.7 = 0 Then                                      'P7, skocz do pokazywania daty i czasu.

    Date$ = Da                                              'Zawartość Date$ będzie wyglądać tak, ja w zmiennej Da.

    Time$ = Ti                                              'Zawartość Time$ będzie wyglądać tak, ja w zmiennej Ti.

    Gosub Liczy                                             'Skocz do podprogramu liczenia czasu.

    End If                                                  '

    Loop                                                    '

   End                                                      '

 Return                                                     'Wracaj do pierwszej pętli.

'********************************************************************************

 Liczy:                                                     'Podprogram liczenia i pokazywania czasu.

   Do                                                       'Druga pętla, obsługująca zegar.

'-----wpis do Eprom------

  If Pinb.2 = 0 Then                                        'Zero od przycisku, albo we z zewnątrz (Ppr).

  Incr Iro                                                  'Powiększaj zmienną o 1 (kolejne zapisy w Eprom).

  Ro = _year                                                'Dane roku i czasu w chwili zapisu.

  Mie = _month                                              '

  Dz = _day                                                 '

  Go = _hour                                                '

  Mi = _min                                                 '

  Sek = _sec                                                '

  Home

Select Case Iro                                             'Sprawdzanie liczby w zmiennej.

  Case 1                                                    'Jeśli w Iro=1 (był jeden impuls z zewnątrz).

  Writeeeprom Ro , 1                                        'Zapisz zmienne...

  Writeeeprom Mie , 2                                       '

  Writeeeprom Dz , 3                                        '

  Writeeeprom Go , 4                                        '

  Writeeeprom Mi , 5                                        '

  Writeeeprom Sek , 6                                       '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                'Czas mignięcia.

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             '

  Lcd "1"                                                   'Pokaż który to kolejny numer impulsu z zewnątrz.

Wait 1                                                      'Czekaj sekundę na drugi impuls.

 

  Case 2

  Writeeeprom Ro , 7                                        'Zapisz zmienne...

  Writeeeprom Mie , 8                                       '

  Writeeeprom Dz , 9                                        '

  Writeeeprom Go , 10                                       '

  Writeeeprom Mi , 11                                       '

  Writeeeprom Sek , 12                                      '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             'Pokaż który to kolejny numer impulsu z zewnątrz.

  Lcd "2"                                                   '

Wait 1                                                      'Czekaj sekundę na następny impuls.

 

  Case 3                                                    '

  Writeeeprom Ro , 13                                       'Zapisz zmienne...

  Writeeeprom Mie , 14                                      '

  Writeeeprom Dz , 15                                       '

  Writeeeprom Go , 16                                       '

  Writeeeprom Mi , 17                                       '

  Writeeeprom Sek , 18                                      '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             'Pokaż który to kolejny numer impulsu z zewnątrz.

  Lcd "3"                                                   '

Wait 1                                                      'Czekaj sekundę na następny impuls.

 

  Case 4                                                    '

  Writeeeprom Ro , 19                                       'Zapisz zmienne...

  Writeeeprom Mie , 20                                      '

  Writeeeprom Dz , 21                                       '

  Writeeeprom Go , 22                                       '

  Writeeeprom Mi , 23                                       '

  Writeeeprom Sek , 24                                      '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             'Pokaż który to kolejny numer impulsu z zewnątrz.

  Lcd "4"                                                   '

Wait 1                                                      'Czekaj sekundę na następny impuls.

 

  Case 5                                                    '

  Writeeeprom Ro , 25                                       'Zapisz zmienne...

  Writeeeprom Mie , 26                                      '

  Writeeeprom Dz , 27                                       '

  Writeeeprom Go , 28                                       '

  Writeeeprom Mi , 29                                       '

  Writeeeprom Sek , 30                                      '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             'Pokaż który to kolejny numer impulsu z zewnątrz.

  Lcd "5"                                                   '

Wait 1                                                      'Czekaj sekundę na następny impuls.

 

  Case 6                                                    '

  Writeeeprom Ro , 31                                       'Zapisz zmienne...

  Writeeeprom Mie , 32                                      '

  Writeeeprom Dz , 33                                       '

  Writeeeprom Go , 34                                       '

  Writeeeprom Mi , 35                                       '

  Writeeeprom Sek , 36                                      '

  Reset Portc.2                                             'Mignij Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 201                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Locate 1 , 16                                             'Pokaż który to kolejny numer impulsu z zewnątrz.

  Lcd "6"                                                   '

Wait 1                                                      'Czekaj sekundę na pierwszy impuls.

 

  If Iro = 6 Then                                           'Jeśli przyszło 6 impulsów z zewnątrz.

  Iro = 0                                                   'Wyzeryj zmienną

  Locate 1 , 16                                             'Na końcu pierwszej linii Lcd pokaż zero.

  Lcd "0"                                                   '

  End If                                                    '

End Select                                                  'Koniec przeglądania zmiennej Iro.

 

End If                                                      'Koniec warunku gdy: If Pinb.2 = 0 .

 

'-----odczyt z Eprom------------------------------------

'------zapis na Lcd będzie taki: DD/MM/RRGG:MM:SS-------

  If Pinb.1 = 0 Then                                        'PB1 odczyt z Eprom.

  Incr Igo                                                  'Powiększaj zmienną o 1 (ile odczytów).

 

Select Case Igo                                             'Sprawdzanie liczby w zmiennej.

  Case 1                                                    'Jeśli w Igo=1 (PB1 naciśnięto raz).

  Readeeprom Ro , 1                                         'Odczytaj zmienne.

  Readeeprom Mie , 2                                        '

  Readeeprom Dz , 3                                         '

  Readeeprom Go , 4                                         '

  Readeeprom Mi , 5                                         '

  Readeeprom Sek , 6                                        '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       '

 

  Case 2                                                    'Jeśli w Igo=2.

  Readeeprom Ro , 7                                         '

  Readeeprom Mie , 8                                        '

  Readeeprom Dz , 9                                         '

  Readeeprom Go , 10                                        '

  Readeeprom Mi , 11                                        '

  Readeeprom Sek , 12                                       '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       '

 

  Case 3                                                    'Jeśli w Igo=3.

  Readeeprom Ro , 13                                        '

  Readeeprom Mie , 14                                       '

  Readeeprom Dz , 15                                        '

  Readeeprom Go , 16                                        '

  Readeeprom Mi , 17                                        '

  Readeeprom Sek , 18                                       '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       '

 

  Case 4                                                    'Jeśli w Igo=4.

  Readeeprom Ro , 19                                        '

  Readeeprom Mie , 20                                       '

  Readeeprom Dz , 21                                        '

  Readeeprom Go , 22                                        '

  Readeeprom Mi , 23                                        '

  Readeeprom Sek , 24                                       '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       '

 

  Case 5                                                    'Jeśli w Igo=5.

  Readeeprom Ro , 25                                        '

  Readeeprom Mie , 26                                       '

  Readeeprom Dz , 27                                        '

  Readeeprom Go , 28                                        '

  Readeeprom Mi , 29                                        '

  Readeeprom Sek , 30                                       '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       '

 

  Case 6                                                    'Jeśli w Igo=6.

  Readeeprom Ro , 31                                        '

  Readeeprom Mie , 32                                       '

  Readeeprom Dz , 33                                        '

  Readeeprom Go , 34                                        '

  Readeeprom Mi , 35                                        '

  Readeeprom Sek , 36                                       '

  Lcd Dz ; "/" ; Mie ; "/" ; Ro ; Go ; ":" ; Mi ; ":" ; Sek;       'Pokaż zapis.

  Lowerline                                                 'W drugiej linii...

  Lcd Igo ; " odczyt         " ;                            'Kolejny odczyt.

  Reset Portc.2                                             'Błysk Led, zapis gotowy.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 80                                                 '80mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS przerwy.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

Wait 5                                                      'Czekaj 5sek.

  Cls                                                       'Czyść Lcd.

  If Igo = 6 Then                                           'Jeśli był 6 oczyt.

  Igo = 0                                                   'Zeruj zmienną

  End If                                                    '

End Select                                                  'Koniec selekcji Igo.

                                                               '

  End If                                                    'Koniec warunku gdy: If Pinb.1 = 0.

'--------kasowanie zapisów w Eprom--------------------------

  If Pinc.0 = 0 Then                                        'Przycisk kasowania Eprom P0.

  Reset Portc.2                                             'Błysk Led.

  Waitms 100                                                '

  Toggle Portc.2                                            '

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 50                                                 '50mS.

  Sound Portc.3 , 100 , 214                                 'Jest dźwięk głośnika.

    Ro = 0                                                  '

    Mie = 0                                                 '

    Dz = 0                                                  '

    Go = 0                                                  '

    Mi = 0                                                  '

    Sek = 0                                                 '

 

    For I = 1 To 6

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

    For I = 7 To 12

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

    For I = 13 To 18

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

    For I = 19 To 24

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

    For I = 25 To 30

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

    For I = 31 To 36

    Writeeeprom Ro , I

    Writeeeprom Mie , I

    Writeeeprom Dz , I

    Writeeeprom Go , I

    Writeeeprom Mi , I

    Writeeeprom Sek , I

    Next I

 

 End If                                                     'Koniec warunku If Pinc.0 = 0

'--------jeśli W jest wyłączony, czasu nie widać, alarmu przypominającego o czymś nie ma-----------

       If Pinb.0 = 0 Then                                   'Jeśli włącznik W ustawiony będzie na 0...

       Cls                                                  'Wyczyść Lcd.

       Lcd Date$                                            'Pokaż zawartość Date$.

       Locate 1 , 10                                        'A w pierwszej linii Lcd, na 12 miejscu...

       Lcd "Data"                                           'Napisz Data.

       Lowerline                                            'W drugiej linii...

       Lcd Time$                                            'Pokaż zawartość Time$.

       Locate 2 , 10                                        'A w drugiej linii, na 12 miejscu napisz Czas.

       Lcd "Czas"                                           '

       Wait 1                                               'Przytrzymaj informacje przez 1s.

 

'---------wpis alarmu przypominającego o czymś---------------

    If _hour = 13 Then                                      'O godzinie 13...

    If _min = 20 Then                                       'Minut 20...

    If _sec = 10 Then                                       'Sekund 10...

    Enable Timer1                                           'Odblokuj Timer1.

    Gosub Meg                                               'I idź do podprogramu Mig.

     Cls                                                    'Wyczyść Lcd.

   Lcd "Włącz radio Z"                                      '

   Lowerline                                                '

   Lcd "audycja Weissa"                                     '

   Wait 3                                                   'Trzymaj na Lcd alarm 3min.

    End If                                                  '

    End If                                                  '

    End If                                                  'Koniec warunków czasów..

'--------

 

 End If                                                     'Koniec warunku włącznika W.

 Loop                                                       'Powtórz pętlę.

 End                                                        '

 Return                                                     'Wróć do drugiej pętli.

'********************************************************************************

  '--------o zapisanym czasie alarm ------------

 Meg:                                                       'Podprogram Timera1.

  Incr Liczba                                               'Zmienna Liczba zbiera ilość przepełnień.

  If Liczba = 1 Then                                        'Jeśli jest 1 przepełnienie.

  Sound Portc.3 , 100 , 205                                 'Jest dźwięk głośnika.

  Waitms 100                                                '100mS.

  Sound Portc.3 , 100 , 207                                 'Jest dźwięk głośnika.

 

   If Pinc.1 = 0 Then                                       'Jeśli naciśnięto kasowanie alarmu (PC1).

   Reset Portd.6                                            'Led zaświeciła się (żółta).

   Disable Timer1                                           'Zablokuj Timer1.

   Wait 3                                                   'Trzymaj 3min info o alarmie.

   Set Portd.6                                              'Led żółta zgasła.

   End If                                                   'Koniec warunku kasowania alarmu.

 

  End If                                                    'Koniec warunku ilości przepełnień Timer1.

  Return                                                    'Wracaj.

 

 '----miga czerw.Led.-- Włączone---

 Mig:                                                       'Podprogram Timer0 (miganie Led).

  Timer0 = 100                                              '

  Incr Licz                                                 '

  If Licz = 1 Then                                          'Jedno przepełnienie Timer0.

  Toggle Portb.3                                            '

  Waitms 100                                                'Krótki czas świecenia Led.

  Toggle Portb.3                                            '

  End If                                                    '

  Return                                                    '

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

'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 63 , 63 , 63 , 63 , 63 , 63 , 63 , 113 , 49 , 63 , 63 , 63 , 122,       ''''''''''B

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

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

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

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

   Data 108 , 59 , 112 , 95 , 63 , 63 , 63 , 63 , 63 , 63 , 61 , 63 , 63 , 63 ,       ''''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 , 34,       ''''''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

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

'Jak wpisać datę i czas z klawiatury:

'- dołącz klawiaturę komputerową do gniazda,

'- naciśnij Reset,

'- wpisz dzień (np 02), spacja, wpisz miesiąc, spacja, wpisz rok (np 10),

'- wpisz godzinę (np 21), spacja, wpisz minuty, spacja, wpisz skundy, spacja.

'- teraz czas czeka na wystartowanie.

'- przyciskiem P7 wystartuj czas.

'- włącznikiem W możesz ztrzymać wyświetlanie czasu (na Lcd będzie biegł lub stał).

'Wyłącznik W zatrzyma pokazywanie czasu, ale również zatrzyma wpisany do programu alarm.

 

'Jak widać w programie, początkową datę  i czas możemy wpisać z klawiatury, a następnie

'o określonej godzinie wystartować czas. Z klawiatury nie można jednak wpisać godziny

'jakiegoś alarmu. Ten czas należy wpisać do programu i takim programem załadować procesor.

 

'Obsługa

'Dołącz klawiaturę do urządzenia celem wpisania daty początkowej.

'O określonej godzinie wystartuj czas.

'Zasilanie buforowe podtrzyma zasilanie w wypadku braku zasilania z sieci.

'Po prawidłowym wpisaniu z klawiatury czasu i daty (na końcu spacja), o określonej godzinie naciśnij P7.

'Czas wystartował, widać go na Lcd.

'Próba impulsu z zewnątrz: naciśnij Ppr. Pierwsze przyciśnięcie - jeden pik w głośniku i 1 w prawym rogu Lcd.

'                                        Czwarte        "          cztery piki    "      4         "        .

'Dalsze naciśnięcia Ppr = dalsza rejestracja daty i czasu. Siódme przyciśnięcie będzie nadpisaniem pierwszego.

'Zostanie zarejestrowane jako 1.

'Odczyt zapisów: W w pozycję wyłącz, naciśnij PB1.Pierwsze naciśnięcie" jeden dźwięk, 1 na dole Lcd, pokaz treści.

'                                                 Drugie        "        dwa     "      2       "            "   .

'Dalsze PB1, odczyty do 6 i ponownie od 1.

'Chcąc wyczyścić pamięć zdarzeń, naciskamy P0.

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