'UstawCzasiDatezAT

Bascom



'UstawCzasiDatezAT.bas

'Program do nauki.

'Pozwala ustawić datę i czas z klawiatury AT.

'Zegar startujemy włącznikiem w Portc.4. Upływający czas nie jest widoczny.

'Krótki, niski impuls w Portc.4 spowoduje zapamiętanie czasu w którym to się stało.

'Jeśli upływający czas ma być widoczny, to Portc.4  dołączamy do masy na stałe.

'Wpis daty i czasu: DDspacjaMMspacjaRRGGspacjaMMspacjaSS.

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

'Co było do udowodnienia.

'Prcesor Atmega8.

'Pamięć zajęta w 27%.

'Opracował Henryk Wydmuch.

'Fusebit A997 ustawiony na oscylator wewnętrzny 0100.

'Kwarc zewnętrzny, zegarkowy 32768Hz.

 

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

 $crystal = 8000000                                         'Zastosujemy oscylator wewnętrzny 8MHz.

 Config Lcd = 16 * 2

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

 

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

 

  Enable Interrupts                                         'Odblokuj przerwania.

 

 

 Config Pinc.4 = Input                                      'Włącznik. Staruje czas.

 Set Portc.4                                                'Ustaw poziom wysoki.

 

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

 

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

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

 Dim Ti As String * 8                                       '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.

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

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

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

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

    Dim K5 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.

 

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

 Lowerline                                                  'I w drugiej linii..

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

Pozycja = 9                                                 'Do zmiennej Pozycja wpisz 9.

 

 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.

 Lcd Chr(kodklaw)                                           'Pokaż, co wpisujemy.

 

     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.

 

        Pozycja = 9                                         'Ponownie wpisz 9 do zmiennej Pozycja.

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

       Config Clock = Soft                                  'Konfiguruj czas.

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

       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 Ustawdate                                      'Skocz do podprogramu.

       End If                                               'Koniec warunku.

 End If                                                     '

 Loop                                                       'Powtórz pętlę,

 End                                                        'Koniec pętli.

 

 

  Ustawdate:                                                'Podprogram.

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

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

       Cls                                                  'Wyczyść Lcd.

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

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

       Lcd "Data"                                           'Napisz Data.

       Lowerline                                            'W drugiej linii...

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

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

       Lcd "Czas"                                           '

       Waitms 200                                           'Przytrzymaj informacje przez 200mS.

       End If                                               'Koniec warunku.

 

 Loop                                                       'Powtórz pętlę.

 Return                                                     'Wróć do pierwszej pętli.

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

'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