Laboratorium 5 – Zegar czasu rzeczywistego na
Transkrypt
Laboratorium 5 – Zegar czasu rzeczywistego na
Techniki Mikroprocesorowe Laboratorium 5 – Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515 Krzysztof Lewandowski, Mirosław Jedynak 1. Cel ćwiczenia Celem ćwiczenia jest poznanie możliwości nowoczesnych mikrokontrolerów o architekturze RISC, i technologii programowania uC w językach wysokiego poziomu. 2. Przebieg ćwiczenia W trakcie realizacji ćwiczenia należy napisać i uruchomić program realizujący funkcje zegara. Program ma za zadanie: 1) ustawić konfigurację pinów 2) ustawić czas początkowy 3) wyświetlać aktualny czas 4) w razie spełnienia odpowiedniego warunku wyświetlić mrugający napisz „alarm” – jeśli liczba sekund jest równa 0 to przez 4 sekundy miga napis „alarm” Program realizujący powyższe zadanie : 'Laboratorium 5 , 25.10.2005 'Miroslaw Jedynak , Krzysztof Lewandowski 'konfiguracja pinow Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Scl = Portd.6 Config Sda = Portd.5 Config Lcd = 20 * 2 Dim K As Byte , Hh As Byte , Ll As Byte Declare Sub Zapisz(byval Adr As Byte , Byval Value As Byte) Declare Sub Czytaj(byval Adr As Byte , Value As Byte) Dim Mig As Byte Dim Reszta As Byte Zapisz 04 , 20 Zapisz 03 , 54 Zapisz 02 , 0 Cursor Off Noblink 'wylaczenie migania kursora 'jesli >0 to oznacza ile razy ma mignac napis alarm 'jesli !=0 to nie wyswietla sie napis 'ustawianie poczatkowe zegara 'godizna 14 'minut 36 'sekund 0 Mig = 0 Do Cls 'czyszczenie wyswietlacza Czytaj 04 , K 'odczyt godziny i konwersja na ASCII Ll = K And 15 Ll = Ll + 48 Hh = K / 16 Hh = Hh And 3 Hh = Hh + 48 Lcd Chr(hh) Lcd Chr(ll) Lcd ":" Czytaj 03 , K Ll = K And 15 Ll = Ll + 48 Hh = K / 16 Hh = Hh And 3 Hh = Hh + 48 'odczyt minut i konwersja na ASCII Lcd Chr(hh) Lcd Chr(ll) Lcd ":" Czytaj 02 , K Ll = K And 15 Ll = Ll + 48 Hh = K / 16 Hh = Hh And 3 Hh = Hh + 48 ''odczyt sekund i konwersja na ASCII Lcd Chr(hh) Lcd Chr(ll) If K = 0 Then Mig = 8 End If If Mig > 0 Then 'jesli liczba sekund == 0 to wyswietl miganie '4 razy pojawia sie i znika 'czy ma sie w tym cyklu pojawic 'czy nie napis (emulacja migania) Reszta = Mig Mod 2 Mig = Mig - 1 End If If Reszta = 0 Then 'jesli ma sie pojawic i licznk migniec jest >0 'to wyswietl If Mig>0 Then Lowerline Lcd "alarm" End If End If Wait 1 'czekaj 1/2 sekundy Loop End 'sample of writing a byte to EEPROM AT2404 Sub Zapisz(byval Adr As Byte , Byval Value As Byte) I2cstart I2cwbyte 160 I2cwbyte Adr I2cwbyte Value I2cstop Waitms 100 End Sub 'sample of reading a byte from EEPROM AT2404 Sub Czytaj(byval Adr As Byte , Value As Byte) I2cstart I2cwbyte 160 'start condition 'slave address 'value to write 'stop condition 'wait for 10 milliseconds 'generate start I2cwbyte Adr I2cstop Waitms 100 I2cstart I2cwbyte 161 I2crbyte Value , Nack I2cstop Waitms 100 End Sub 'slave adsress ' ' 'repeated start 'read byte 'generate stop