napisałem (a raczej posklejałem) soft do jego obsługi i nawet wstawiłem biblioteki żeby lepiej pracował, ale nie dzieje się nic poza tym że wyświetla mi czas w postaci:
Kod: Zaznacz cały
05:05:05i nie wiem o co chodzi?
oto program:
Kod: Zaznacz cały
$PROG &HFF , &HA4 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes.
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$lib "mcsbyte.lbx"
$lib "ds1307clock.lib"
$eepleave
$hwstack = 40
$swstack = 16
$framesize = 40
config LCD = 16 * 2
CONFIG LCDPIN = PIN , DB4 = pind.4 , DB5 = pind.5 , DB6 = pind.6 , DB7 = pind.7 , E = pind.3 , RS = pind.2
config sda = portb.0
config scl = portb.1
i2cinit
const ds1307w = 208
const ds1307r = 209
dim wartosc as byte
dim sekundy as byte
dim minuty as byte
dim godziny as byte
sekundy = 0
minuty = 0
godziny = 0
sekundy = makebcd(sekundy)
minuty = makebcd(minuty)
godziny = makebcd(godziny)
cursor off
cls
gosub zapis_do_zegara
do
home
i2cstart
i2cwbyte ds1307w
i2cwbyte 0
i2cstart
i2cwbyte ds1307r
i2crbyte sekundy , ack
i2crbyte minuty , ack
i2crbyte godziny , ack
i2cstop
sekundy = makedec(sekundy)
minuty = makedec(minuty)
godziny = makedec(godziny)
waitms 500
cls
wartosc = makebcd(godziny)
lcd bcd(wartosc) ; ":"
wartosc = makebcd(minuty)
lcd bcd(wartosc) ; ":"
wartosc = makebcd(sekundy)
lcd bcd(wartosc)
loop
end
zapis_do_zegara:
i2cstart
i2cwbyte ds1307w
i2cwbyte 0
i2cwbyte sekundy
i2cwbyte minuty
i2cwbyte godziny
i2cstop
return
okazuje się że jednak działa tylko nie wiem czemu na początku pokazywało to co pokazywało. przez kilka godzin zegar chodził na baterii bez zasilania głównego i teraz pokazuje godzinę jak trzeba.
wiecie coś na ten temat?
