DS1307 gün oluşturma sıkıntısı

Başlatan ledanimasyon, 19 Ekim 2018, 21:38:39

ledanimasyon

Merhaba Arkadaşlar:

ds1307 entegresi ile bir proğram yazmam gerekiyor saat ve dakika saniye bilgilerini alabiliyorum fakat haftanın yedi günü nü kullanmam gerekiyor data olarak alamadım eksikğim nerede yardımcı olabilirmisiniz.LCD ekrankullanıyorum.



SCL var PORTC.3
SDA var PORTC.4
BOS var byte
TEM VAR BYTE
GUN VAR BYTE
GUNLER VAR word
AY VAR BYTE
i VAR BYTE
YIL VAR BYTE
HAFGUN VAR BYTE
saat var BYTE
dak var BYTE
sn var BYTE


'-----------------------------------SAAT YAZ------------------------------------
YAZ:
    PAUSE 500
    tem=(sn DIG 1)<<4+sn dig 0 : sn=tem
    tem=(dak DIG 1)<<4+dak dig 0 : dak=tem
    tem=(saat DIG 1)<<4+saat dig 0 : saat=tem
    tem=(gun DIG 1)<<4+gun dig 0 : gun=tem
    tem=(hafgun DIG 1)<<4+yil dig 0 : hafgun=tem
    tem=(ay  DIG 1)<<4+ay dig 0 : ay =tem
    tem=(yil DIG 1)<<4+yil dig 0 : yil=tem
    I2CWRITE SDA,SCL,$D0,$00,[sn,dak,saat,hafgun,gun,ay,yil,TEM]
goto BAS

' ----------------------------SAAT OKU-------------------------------------------
OKU1307:
I2CREAD SDA,SCL,$D1,$00,[sn,dak,saat,hafgun,gun,ay,yil,TEM]
         BOS=((sn>>4) & $0F)*10+(SN & $0F):sn=BOS
         BOS=((DAK>>4) & $0F)*10+(DAK & $0F):DAK=BOS
         BOS=((SAAT>>4) & $0F)*10+(Saat & $0F):SAAT=BOS
         BOS=((yil>>4) & $0F)*10+(yil & $0F):yil=BOS
         BOS=((AY>>4) & $0F)*10+(AY & $0F)  :AY=BOS
         BOS=((gun>>4) & $0F)*10+(gun & $0F):gun=BOS
         BOS=((hafgun>>4) & $0F)*10+(hafgun & $0F)  :hafgun=BOS
       
RETURN   

ete

Gördüğüm tek kusur ,
I2CREAD SDA,SCL,$D1,$00,[sn,dak,saat,hafgun,gun,ay,yil,TEM]
satırında yer alan $D1 değeri. Basic derleyicisi cihaz adresi olan $D0 değerini yazma komutunda otomatik $D1 yapar.
Muhtemelen sen oraya $D1 yazınca oda $D2 yapıyor olabilir. Bu değeri sen hem okumada hemde yazmada $D0 olarak kullan.
Ben bu şekilde kullanmıştım ve sorunsuz çalışıyordu sistem.

Ete

Powered by EzPortal