Witam!
Proszę o pomoc w rozwiązaniu problemu. Jedyne dane jakie dostaję od PCF-a to 165 dla wszystkich danych (godzina, miesiąc,.....)
Szczerze dziękuję za pomoc
Proszę o pomoc w rozwiązaniu problemu. Jedyne dane jakie dostaję od PCF-a to 165 dla wszystkich danych (godzina, miesiąc,.....)
'$sim 'praca w emulacji sprzętowej
$crystal = 4000000
$regfile = "m32def.dat"
Config Sda = Portc.1 'konfiguracja linii SDA magistrali I2C
Config Scl = Portc.0 'konfiguracja linii SCL magistrali I2C
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7
Dim M As Byte 'deklaracja zmiennej określającej minuty
Dim S As Byte 'deklaracja zmiennej określającej sekundy
Dim H As Byte 'deklaracja zmiennej określającej godziny
Dim Day As Byte 'deklaracja zmiennej określającej dzień miesiąca
Dim Month As Byte 'deklaracja zmiennej określającej miesiąc roku
Month = 7
Day = 20
H = 9
M = 15
I2cinit
'Input "Podaj miesiąc: " , Month
'Input "Podaj dzień miesiąca: " , Day
'Input "Podaj godzinę: " , H
'Input "Podaj minutę: " , M
Month = Makebcd(month) 'konwersja miesiąca do formatu BCD
Day = Makebcd(day) 'konwersja dnia do formatu BCD
H = Makebcd(h) 'konwersja godziny do formatu BCD
M = Makebcd(m) 'konwersja minut do formatu BCD
S = 0 'wyzerowanie sekund
I2cstart 'inicjalizacja magistrali I2C
I2cwbyte 162 'podanie adresu PCF8583 do zapisu
I2cwbyte 0 'wybranie pierwszego (kontrolnego) rejestru
I2cwbyte 8 'ustawienie zapisu rejestru daty
I2cstop 'koniec transmisji
I2cstart 'inicjalizacja magistrali I2C
I2cwbyte 162 'ustawianie trybu zapisu
I2cwbyte 2 'wybranie drugiego rejestru (sekund)
I2cwbyte S 'zapis sekund
I2cwbyte M 'zapis minut
I2cwbyte H 'zapis godzin
I2cwbyte Day 'zapis dnia
I2cwbyte Month 'zapis miesiąca
I2cstop 'koniec transmisji
Cls
Do
I2cstart 'inicjalizacja magistrali I2C
I2cwbyte 162 'podanie adresu PCF8583 dla zapisu
I2cwbyte 2 'wybranie drugiego rejestru (sekund)
I2cstart 'powtórna inicjalizacja magistrali I2C
I2cwbyte 163 'podanie adresu PCF8583 dla odczytu danych
I2crbyte S , Ack 'odczyt sekund z potwierdzeniem transmisji
I2crbyte M , Ack 'odczyt minut z potwierdzeniem transmisji
I2crbyte H , Ack 'odczyt godzin bez potwierdzania transmisji
I2crbyte Day , Ack 'odczyt dni
I2crbyte Month , Nack 'odczyt miesięcy
I2cstop 'koniec transmisji I2C'wyślij na ekran terminala:
H = Makedec(h) : M = Makedec(m) : S = Makedec(s) : Day = Makedec(day) : Month = Makedec(month)
Lcd "Godzina:" ; H ; " "
Lowerline
Lcd "Minuta:" ; M ; " "
Thirdline
Lcd "Sekunda:" ; S ; " "
Fourthline
Lcd "Dzien:" ; Day ; " Miesiac:" ; Month ; " "
Loop
Szczerze dziękuję za pomoc