Şimdi Ara

ds1302 ile yapılan saate ayar vermek

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
829
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,

    Şekildeki devre ile ds1302 den saat bilgisini alıyor ve ekrana verebiliyorum.Ancak bunu kullanırken saati ayarlamam gerekebilir(Mesela hersene saatler ileri ve geri alınıyor). Bu ayarı yapmak için saat-dakika kısmında sağ-sol tuşları ile kursörü gezdirip aşağı-yukarı tuşları ile artırma eksiltme yapmayı düşünüyorum.Burda kursorun durumunu değiştirerek ayar vermek istiyorum ama tam beceremedim bi türlü:(

     .  
    .
    .
    POZ=113
    LCDOUT $FE,1
    LCDOUT $FE,$84, HEX2 SAAT,":",HEX2 DAKIKA

    IF POZ=113 AND SOL=0 THEN GERI
    IF POZ=113 AND YUKARI=0 THEN SAAT=SAAT+1
    IF POZ=113 AND ASAGI=0 THEN SAAT=-1
    GOSUB GETTIME

    IF SAAT>23 THEN SAAT=0
    IF SAAT<00 THEN SAAT=23
    .
    .
    .


    böyle bir kod yazdım olmadı.Sizce ne yapmam gerekiyor?

    Devrenin şekli:

    http://img506.imageshack.us/my.php?image=saatayar1jp.jpg







  • arkadaşlar yokmu bi fikri olan ??
  • Yazdığın kodun tamamını mesajına eklebilir misin? Bu şekilde tam olarak cevap verip yazdıgın kodun üzerinde düşünmek imkansızlaşıyor...

    Kolay gelsin...
  • @serkanmj ilgilendiğin için teşekkürler.

    şöyle bir kodla ayar verme işini çözdüm sayılır ancak problemi tam olarak çözdüğümü söyleyemem.Saat ve dakika bilgilerini artırıp azaltabiliyorum ama bu seferde rakamlar hexadecimal olarak artıyor ya da azalıyor.Bunu decimal olarak yapmam lazım.

     
    SAATAYAR:
    WHILE SEC=0
    WEND
    LCDOUT $FE,1
    GOSUB EKRAN


    DD: POZ=111
    IF POZ=111 AND SEC=0 THEN S_AYAR
    IF POZ=111 AND SOL=0 THEN MENU2_1
    GOTO DD

    EKRAN:
    GOSUB GETTIME
    LCDOUT $FE,$80,"SAAT AYAR"
    LCDOUT $FE,$C0,HEX2 (SAAT),":", HEX2 (DAKIKA) :RETURN

    EKRAN0:
    LCDOUT $FE,$C0,HEX2 (SAAT),":", HEX2 (DAKIKA) :RETURN

    EKRAN1:
    GOSUB SETTIME
    LCDOUT $FE,$80,"TARiH AYAR"
    E11:LCDOUT $FE,$C0,HEX2 (GUN),"/", HEX2 (AY),"/", HEX2 (YIL):RETURN

    S_AYAR:
    LCDOUT $FE,$C1
    LCDOUT $FE,$0E 'ÇİZGİLİ KURSOR AÇIK
    PP: POZ=112
    PAUSE 250
    GOSUB EKRAN0
    IF POZ=112 AND SAG=0 THEN D_AYAR
    IF POZ=112 AND YUKARI=0 THEN SAR
    IF POZ=112 AND ASAGI=0 THEN SAZ
    IF POZ=112 AND SOL=0 THEN MENU2_1
    GOTO S_AYAR

    SAR:SAAT=SAAT+1
    IF SAAT>23 THEN
    SAAT=0
    ENDIF
    GOTO S_AYAR

    SAZ:SAAT=SAAT-1
    IF SAAT=0 THEN
    SAAT=23
    ENDIF
    GOTO S_AYAR

    D_AYAR:
    LCDOUT $FE,$0C
    LCDOUT $FE,$C4
    LCDOUT $FE,$0E 'ÇİZGİLİ KURSOR AÇIK
    POZ=113
    PAUSE 250
    GOSUB EKRAN0
    IF POZ=113 AND SOL=0 THEN S_AYAR
    IF POZ=113 AND YUKARI=0 THEN DAR
    IF POZ=113 AND ASAGI=0 THEN DAZ
    GOTO D_AYAR


    DAR:DAKIKA=DAKIKA+1
    IF DAKIKA>59 THEN
    DAKIKA=0
    ENDIF
    GOTO D_AYAR

    DAZ:DAKIKA=DAKIKA-1
    IF DAKIKA<0 THEN
    DAKIKA=59
    ENDIF
    GOTO D_AYAR


    çözemediğim kısmı şu:
    ds1302 deki saat / takvim bilgilerini değiştirmek isterken sanırım hex şeklindeki bilgileri alıp decimale çevirmek gerekiyor zannedersem.Esas tıkandığım kısım bu ve ds1302 nin 8 bitlik registerlarındaki bilgileri yani saatin 12 mi yoksa 24 formatında mı çalışacağına am mi pm mi olacağına karar verilen registerlar varya işte onları nasıl değiştirebilirim ?? ?

    Bu konular hakkında bi fikri olan varsa çok makbule geçer :)




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.