P

Söz verniştim ama :S

Başlatan ptna, 30 Temmuz 2014, 11:43:58

ptna

Soru sormayacağıma söz vermiştim ama :S:
"Hocam ben şöyle diyorum sorum şu:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 29.07.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
TRISA=1
TRISB=0

SYMBOL TUS=PORTA.0

DAKIKA VAR BYTE
SAY VAR BIT
SAYIM VAR BYTE
SAAT VAR BYTE

BASLA:
CLEAR
LCDOUT $FE,1,$80,"Burası gırıs yerı tusa basarsanız kronometreye gıder."
IF TUS=0 THEN KRONOMETRE
endIF
END

KRONOMETRE:
CLEAR
LCDOUT $FE,1,$80,#SAAT,":",#DAKIKA,":",#SAYIM
SAY=1
IF SAY=1 THEN
SAYIM=SAYIM+1
IF SAYIM=60 THEN
DAKIKA=1
SAYIM=0
IF DAKIKA=60 THEN
DAKIKA=0
SAAT=1
IF SAAT=24 THEN
DAKIKA=0
SAAT=0
SAYIM=0
ENDIF
ENDIF
ENDIF
ENDIF

'Kodun açıklaması:Önce ekranda burası giriş yeri tuşa basarsanız kronometreye gider diyor.Tuş girişe bağlı ve kapalı(1 durumunda).
'Tuşa basınca 0 oluyor.Kronometreye gidiyor.Kronometrede otomatik işte sayım=sayım+1 yolu ile artıyor.
'Ama sorum şu şimdi elimi tuştan çekince tuş=1 olacak(basılı tutmadığım için) kronometre ilerler mi görür müyüm ilerlediğini durur mu?
'Sürekli basmam mı gerekiyor?Normal saatlerde pullup olduğnu sanmıyorum ama ilerliyor donma yok?Donma olur mu?Devam mı eder?
'LCD yi bağlamadım bağladım varsayın.

tus=0 olduğunda kronometre açılıyor ondan sonra elimi çekince 1 olacak o zaman kronometre devam eder mi durur mu?saatlerde pullup olduğunu sanmıyorum ama devam ediyor kronometre?nasıl onu sağlarım.yoksa devam mı eder durmaz mı?anlatamadıysam lütfen yazın.çünkü ben anlamadım :S.tuş nasıl desem fare gibi basınca ileri gidiyor ya çekince elinizi geri geliyor öyle işte içinde kalmıyor.kalvye tuşu gibi yani.basınca aktif çekinc değil.basınca kronometre yazıyor saatte sürekli artıyor çekince durur mu?proteusda deneyemedim lcd bağlamak zor falan...ne olur

yani kronometre devam eder mi durur mu?durursa güncelleme nasıl olur?kusura bakmayın  :-\.

ete

Anlamadığın şeyi anlatmakta zorlanmışsın. Dolayısıyla hiç bir şey anlatamamış oldun. Zira anlattıklarından bir şey anlamadım.
Çok mu or bir şeyi adım adım anlatmak. Anlatmak istediğini program daha iyi anlatıyor.
Programına bakarak yorumlar yaptım. Amacın belli kronometre çalıştırmak ama kronometre bile belirli bir zaman diliminde artış yapar ki hatırladığım 10*100 olarak sayar. Yani her bir rakam artışı 10 ms de bir yapılır böylece 100 rakamına ulaşınca 1000 ms geçmiş olur ve 1 sn artış sağlanır. Rast gele saydırma ile kronometre yapılması sence mümkünmüdür? Hiç sanmıyorum.
Program en başta tuş kontrolünü yalnızca 1 kere yapıp end ile son bulmaktadır. Bu da doğru değil. Tuşa basılıncaya kadar tuş kontrolünü sürdürmesi gerekirdi.
Hadi tuşa bastık diyelim kronometre çalışmaya başlamalı ve elimizi tuştan çeksek bile çalışmasını sürdürmelidir. Bu işlem yeniden tuşa basıncaya kadar devam etmeli ve tekrar basınca kronometre orada durmalıdır.
Bir ikinci tuş kronometreyi sıfırlamalı böylece sistemde en azından iki tuş bulunmalıdır. Birisi başlat durdur diğeri sıfırlama yapmalıdır.  Ekran gösterimi ise;
00:00:00 (dak:sn:salise) ama bütün kronometreler son iki hanede salise yerine 1000/10 ms olarak gösterirler. Çünki salise aslında saniyenin 60 da biridir. Halbuki son iki hane 0-99 arası sayarak salise değil ms nin 10 a bölünmüş halini gösterir. Bunu sağlamanın yoluda 10 ms lik gecikmelerle rakamları artırıp 100 olunca sıfırlamaktan geçer. Bu esnada sn değeride bir artırılmalıdır. Kısaca son iki hane 0-99 arası sayacak sonraki haneler  0-59 sayacak şekilde ayarlanacaktır.

Tuşa basılıp kronometre kısmına atlanınca orada sistem SAYIM değerini 10ms lik dilimler halinde artıracaktır. SAYIM değeri 100 olunca sayım=0 yapılacak ve onadan sonrası normal saat değeri artırım sistemine uygun olarak artacaktır.
Bu bölümün sonunda kronometrenin devamlı çalışmasını sağlamak üzere program ya BASLA satırına gönderilecek yada Kronometre etiketine gönderilecektir. Burada tuş kontrolü yeniden ilave edilmelidir. Zira tuşa basılınca  kronometre beklemeye alınmalı yeniden basınca çalışmasına devam etmelidir.
Bu dediklerimi yazar verirdim belki ama madem bir şey yapmak için yola çıktın kendin de bitirmelisin.
Bu kadar yardımla bitirmen gerekir artık.

Programla ilgili yorumlarımı satırların kenarlarına ekledim.

Ete
TRISA=1
TRISB=0

SYMBOL TUS=PORTA.0

DAKIKA VAR BYTE
SAY VAR BIT
SAYIM VAR BYTE
SAAT VAR BYTE

BASLA:
CLEAR 'bu komut basla satırından evvel yazılmalı bence.
LCDOUT $FE,1,$80,"Burası gırıs yerı tusa basarsanız kronometreye gıder."
IF TUS=0 THEN KRONOMETRE
endIF ' bu komut burada gereksiz. Şayet if ile başlayan komut sonunda THEN yazıp sonra
'nereye gidileceğini belirtirseniz ayrıca alt satırda endif kullanmaya gerek yoktur.
END'buraya end yazmakla programın yalnızca bir kere tuş kontrolü yapmasını sağlarsın.
'Halbuki tuşa basılıncaya kadar program tusa basıldımı bakması gerekir. O nedenle
'end yerine Goto Basla yazmak daha doğru olurdu.

KRONOMETRE:
CLEAR
LCDOUT $FE,1,$80,#SAAT,":",#DAKIKA,":",#SAYIM
SAY=1 'say değişkeninin neden kullanıldığını anlamadım doğrusu. Sen kendin 1 yapıyorsun
'sonra altında SAY=1 ise deyip işlem yapıyorsun bu anlamsız.
IF SAY=1 THEN
  SAYIM=SAYIM+1
  IF SAYIM=60 THEN
     DAKIKA=1
     SAYIM=0
     IF DAKIKA=60 THEN
        DAKIKA=0
        SAAT=1
        IF SAAT=24 THEN
          DAKIKA=0
          SAAT=0
          SAYIM=0
        ENDIF
     ENDIF
  ENDIF
ENDIF
'burada program son bulur. Halbuki çalışmaya devam etmelidir.
'Buraya ya Goto Kronometre yazmak gerekir ki orada Clear komutu sürekli olarak değişkenleri sıfırlar.
' clear komutu oradan silinmeli lüzümsuz koyulmuş oraya.
'yada buraya goto basla demek gerekir.

ptna

Alıntı YapHadi tuşa bastık diyelim kronometre çalışmaya başlamalı ve elimizi tuştan çeksek bile çalışmasını sürdürmelidir. Bu işlem yeniden tuşa basıncaya kadar devam etmeli ve tekrar basınca kronometre orada durmalıdır.

Yapmak istedigim tusa basp elimi cekince kronometrenin devam etmesi...cunku elimi cekince tus=1 oluyor oysa kronometreye tus=0ken git komudu verdik ekrandaki kronometre sabit kalip tekrar tus=0 olunca guncelleniyor sorun bu...

ete

Ortada bir sürü kusur varken yanlış bir noktaya takılmışsın.
İsyeğini yapmak için şu kodları kullanabilirsin.
If tus=0 then
While tus=0:wend
Goto kronomeyre
Endif


Ete

Powered by EzPortal