'DataCzas3

Bascom



'DataCzas3

'Zegar pokazujący czas z dokł. do sekundy, oraz aktualną datę.

'Ustawiony czas i data w Date$ i Time$ po załączeniu procesora czeka na przyciśnięcie przycisku w Portb.0.

'Daje to możliwość wystartowania nastawionego czasu, dokładnie z czasem zegarowym.

'Jeśli zewnętrzny sygnał 0 dotrze do Portc.4, pokazywanie czasu zostanie zatrzymane.

'Zatrzymanie czasu trwa aż do przyciśnięcia Reset w Portb.0.

'Po zresetowaniu pokazywany jest aktualny czas, niezależny od zatrzymania go na Lcd.

'Na Lcd widzimy w jakim czasie ten sygnał dotarł.

'Jest więc możliwość zarejestrowania o jakim czasie nastąpiło zdarzenie.

'Procesor Atmega8.

'Kwarc zegarkowy 32768Hz w miejsce XT1, XT2.

'Pamięć zajęta w 11%.

'Opracował Henryk Wydmuch.

'Fusebit A997 ustawiony na oscylator wewnętrzny 8MHz, 0100.

 

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

 $crystal = 8000000                                         'Oscylator wewnętrzny o częstotliwości 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 Pinc.4 = Input                                      'Portc.4 jako wejście sygnału z zewnątrz lub przycisk.

 Set Portc.4                                                'Ustaw poziom wysoki.

 Config Pinb.0 = Input                                      'Portb.0 jako wejście.

 Set Portb.0                                                'Ustaw poziom wysoki.

 Config Clock = Soft                                        'Konfiguracja czasu.

 Config Date = Dmy , Separator = /                          'Konfig. daty. Dmy=dzień,miesiąc,rok. Seperator=/,albo-,albo. .

 Enable Interrupts                                          'Uruchamiamy odblokowania.

 Date$ = "02/08/06"                                         'Ustawiamy datę od której wystartuje.

 Time$ = "12:00:00"                                         'Ustawiamy czas od którego wystartuje.

 

    Do                                                      'Pierwsza pętla.

    If Pinb.0 = 0 Then                                      'Tu, Poprtb.0 czeka na 0, aby wystartować zegar.

 Do                                                         'Pętla główna.

 Cls                                                        'Czyść Lcd.

 Lcd Time$                                                  'Pobierz aktualny czas.

 Locate 1 , 10                                              'Za wyświetlonym czasem na Lcd napisz: "Czas".

 Lcd "Czas"                                                 '

 Lowerline                                                  'W drugiej linii.

 Lcd Date$                                                  'Pobierz aktualną datę.

 Locate 2 , 10                                              'Za datą na wyświetlaczu napisz: "Data".

 Lcd "Data"                                                 '

 Waitms 100                                                 'Trzymaj chwilę wyświetlony czas.

 If Pinc.4 = 0 Then                                         'Tu 0 zatrzyma czas na Lcd. Poza Lcd jest dalej liczony.

 Exit Do                                                    'Wyjdź z pętli.

 End If                                                     'Koniec warunku.

 Loop                                                       'Zamknij pętlę.

 

    End If                                                  'Koniec warunku pierwszej pętli.

    Loop                                                    'Powtórz pierwszą pętlę.

    End                                                     'Koniec pętli.