ccs c ile ds1302 ayarlı saat tarih

Başlatan point_blank, 13 Nisan 2013, 23:50:51

point_blank

merhaba arkadaşlar ben ds1302 ile tarih saat ayarlamak istiyorum devreyi boarda kurdum calısıyor ancak buton ekleyip tarih ve saati ayarlamak istiyorum nasıl yapabilirim bi fikir verebilirmisiniz tesekkürler

ete

Çok kolay. 3 adet buton koyacaksın. Birisi Sec diğeri artır ve sonuncusu ise azalt butonu olacak. Sec tuşu ile ayar menüsüne gireceksin. Önce saat ayar işlemi yapacaksın. Artır tuşuna basınca saat değeri artacak , azalt tuşuna basınca değer azalacak. Sınırlarıda koyacaksın saat değeri sıfırdan aşağındüşmeyecek 23 den yukarı çıkmayacak. Ayar bitince sec tuşuna basıp dakika ayarına geçeceksin. Aynıöişlemleri dakika için yapıp saniye ayarını es geçeceksin. Sonra tarih ayarlarına geçip benzer şekilde ayarlarını yapıp sonunda sec tuşu ile ayarlanan değerleri rtc ye yazıp ayar menüsünden çıkacaksın.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Extreme

ete hocam mantığını anlatmış.

sen ben uğraşmıyım alıntı yapıyım dersen internetde bir şeyler bulabilirsin.

point_blank

çok teşekkür ederim mantıgı anladım ama rtc ye ayarladıgım degeri hangi komutla yazdırabilirim ccs c kullanıyorum ufak bi örnek yazarmısınız tesekkür ederim ilginiz için

ete

Ben maalesef CCS kullanmıyorum. O nedenle komut bilmiyorum. Nasıl okuyorsan ki o okuma komutu onun terside yazma komutu olmalıdır.
Ancak dikkat etmen gereken bir sürü şey var. RTC lerde zaman registerleri 8 bitlik registerin ilk 4 bitinde birler hanesini sonraki 4 bitlik bölümde de onlar hanesini tutarlar. Saniye=45 olsun bunun binary karşılığı % 0010 1101 şeklindedir. Ama saniye registerinden bu değeri direk bu şekilde okuyamazsın. Şöyle bir değer okursun %0100 0101. Burada ilk 4 bit olan %0101,  5 sayısına eşittir. Sonraki 4 bit ise %0100 da 4 sayısına eşittir. O halde bunu saniye değerine çevirmek için 4*10+5 şeklinde çevirmek gerekir. Bunları biliyormusun acaba?
Benzer şekilde değeri 45 olan bir dakika değerinide geri yazarken aynı işlemin tersini yapmak gerekir.
Önce onlar hanesini alıp bunu 4 bit sola kaydırmak gerekir. %00000100 4 bit sola kaydırınca bu %0100 0000 şekline döner.
Buna birler hanesini ekleyince DAK=%01000101 şeklini alır register değeri. Sonra bunu gidip dakika registerine yazmak gerekir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

pwm.c

#5
rtc_set_datetime(gun,ay,sene,hafta,saat,dakika)



Alıntı Yap////  rtc_init()                                   Call after power up////
////                                                                  ////
////  rtc_set_datetime(day,mth,year,dow,hour,min)  Set the date/time  ////
////                                                                  ////
////  rtc_get_date(day,mth,year,dow)               Get the date       ////
////                                                                  ////
////  rtc_get_time(hr,min,sec)                     Get the time       ////
////                                                                  ////
////  rtc_write_nvr(address,data)                  Write to NVR       ////
////                                                                  ////
////  data = rtc_read_nvr(address)                 Read from NVR      ////
////                                                                  ////
////  get_bcd(data)                              Convert data to BCD  ////
////                                                                  ////
////  rm_bcd(data)                               Convert data to int  ////
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-