B

Basic ile gün sayacı kontrolü

Başlatan BAHAR, 28 Şubat 2013, 15:47:22

BAHAR

Herkese merhabalar, rtc kullanarak bir gün sayacı yapıyorum. Gün kontrol kısmı aşağıdaki gibidir. Ancak, saat, dakika ve saniye 0 olduğu zaman günün 1 artmasını istiyorum. Fakat 1sn içerisinde birden fazla döngü gerçekleştiği için(saniye 1 olana kadar) gün kısmında birden fazla artış gerçekleşiyor. PAUSE gibi bir kod ile işi çözdüm ama bu işlemin çok işe yarar olduğunuda düşünmüyorum açıkçası. Bu işlemi yapmak için daha farklı bir mantık arıyorum. Görüş ve düşünceleriniz için teşekkür ederim.

GUNKONTROL:
IF SAAT=0 AND DAKIKA=0 AND SANIYE=0 THEN
READ $07,GUN
GUN=GUN+1
IF GUN=31 THEN GUN=1
WRITE $07,GUN : PAUSE 10
ENDIF
RETURN

sinancnc

.......
IF SAAT=0 AND DAKIKA=0 AND SANIYE=0 THEN
    gün=gün+1
    WHILE  SAAT=0 AND DAKIKA=0 AND SANIYE=0:WEND
    ENDIF

.........

kırmızı alan saat=0 dakika=0 saniye=0 sa bekle gibi kullanılabilir aynen sürekli butona basılı tutuluyorsa mantığı gibi düşünebilirsin




Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

BAHAR

Alıntı yapılan: sinancnc - 28 Şubat 2013, 16:41:47
.......
IF SAAT=0 AND DAKIKA=0 AND SANIYE=0 THEN
    gün=gün+1
    WHILE  SAAT=0 AND DAKIKA=0 AND SANIYE=0:WEND
    ENDIF

.........

kırmızı alan saat=0 dakika=0 saniye=0 sa bekle gibi kullanılabilir aynen sürekli butona basılı tutuluyorsa mantığı gibi düşünebilirsin

Çok güzel ama while komutunu denedim bu şekilde çalışmıyor. Çünkü hepsi birden saat, dakika ve saniye 0 olduğu zaman while ve wend arasında kod sürekli çalışıyor ve bu şekilde kalıyor. Peki neden? Çünkü rtc'den okuma yapılmadığı için. Daha farklı bir yöntem olmalı.

sinancnc

#3
Bu döngünün içine girdikten sonra pause ile saniye atlayana kadar bekletmek en mantıklısı gibi duruyor kesme olabilirmi diye düşünüyorum ama bakalım üstadlar ne diyecek.. Kolay gelsin
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

F®T

GUNKONTROL:

IF SAAT=0 AND DAKIKA=0 AND SANIYE=0  and k=0 THEN

k=1

READ $07,GUN
GUN=GUN+1
IF GUN=31 THEN GUN=1
WRITE $07,GUN : PAUSE 10
ENDIF
RETURN

ıf sanıye>0 then k=0

"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

BAHAR

Teşekkürler yanıtlar için ancak kodda timer kullanmış olsaydım sizin kodlarınız olmuş olacaktı. Fakat Zaman bilgisi RTC'den okunduğu için kodların arasına rtc okuma rutini eklenmesi gerekiyor. Zannedersem başka çare de yok.

Sağolun,

F®T

bence kodu iyi inceleyin.
saat dakika ve saniye 0 olunca ve k 0 ise koda giriyor.k1 oluyor kod içinde gerekeni yapıyor ve çıkıyor.daha sonra rtc yi okuyup hepsinin sıfır olması durumunda kod içine k 1 olduğu için giremiyor.ne zamanki  saniye 0 dan büyük ise k 0 oluyor ve tekrar saat dakika saniye 0 k 0 olursa koda giriyor.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Bu işin iki tane çözümü var.
Birincisi IF SAAT=0 AND DAKIKA=0 AND SANIYE=0 THEN olunca gün artırmak ve sn değişinceye kadar bu satırıbir daha işlememek. Bununda çaresi uzunca bir pause koyarak bulunabilir.

İkinci yolu bir ilave işaretçi daha kullanmak ki bunuda F.T göstermiş zaten. En güzel çözüm budur. Sorunsuz çalışır. O kodu iyi inceleyin.

Ete


Powered by EzPortal