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

Podobne dokumenty