pic basic pro için bilgili arkadaşlardan öneri???

Başlatan gokhangu, 17 Ocak 2013, 18:21:05

gokhangu

Merhaba arkadaşlar,
Pic basic pro'ya yeni başladım. Acemiyim. Bilgili arkadaşların desteğine ihtiyacım var.
16f84a ile çalışıyorum. Porta ilk dört pin giriş, portb nin hepsi çıkış(pull down çalışıyorum). porta.0 pinindeki swich'e basılıp high yaparak, 1sn kadar bekleyince portb.0 pinini high, diger pinleri low yapan ve "döngü" adlı bir alt programa yönlendiren(bu alt programda diğer pinler için basit karşılaştırma yapılacak), aynı swich'e basılıp 3sn kadar bekleyince portb.1 pinini high yapan, diğer pinleri low yapan komut dizilimi nasıl olmalı? Aslında on/off yapmaya çalışıyorum. Bir tuşa 1 sn kadar basılınca röle sürülsün sistem açılıp diğer basit komutları işlesin, aynı tuşa 3 sn basılınca röleyi kessin mantığı...
Yardımcı olan arkadaşlara şimdiden teşekkür ederim...

subram

http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

gokhangu

Subram teşekkür ederim ilgin için, ancak verdiğin linkte aradığım cevap yok. Saol yine de. Bu konuda deneyimi olan arkadaşlardan yardım bekliyorum. Teşekkürler...

subram

sana küçük bir tüyo timer kesmesi senin işini çözer, bu  konuyu biraz araştır. verdiğim linkte bununla ilgili örnekler var. oradaki örnekler senin işini çözer. biraz kurcala sıkıştığın yerde yardım edelim.
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

kudretuzuner

Alıntı yapılan: gokhangu - 17 Ocak 2013, 22:34:53
Subram teşekkür ederim ilgin için, ancak verdiğin linkte aradığım cevap yok. sağol yine de. Bu konuda deneyimi olan arkadaşlardan yardım bekliyorum. Teşekkürler...
Merhaba
Derslere bir bakıverseniz konuya daha çabuk vakıf olursunuz.Kolay gelsin.
https://320volt.com/pic-basic-dersleri/
Amatör

ete

Anlaşılan yardım isteğin aslında hazır kod isteği yani akıl aramıyorsun istediğin işi yapacak hazır kod arıyorsun. Yada birisi yazıversin diyorsun. Aradıklarını o sitelerde bulamazsın çünki orada bu isteğinle ilgili hazır kod yok. Orada yalnızca bu işi nasıl yapacağına dair örnekler ve bilgi var ama sana yaramıyor anlaşılan. O halde neden mesajını yazarken direk bana şu işi yapacak kod lazım diye mesaj yazmıyorsun?

Her şeyi bir kenara bırakalım birde yazdıklarına bakalım istersen;
PORTA.0 pinine bağlı tuşa bastım. Elimi çekmeden 1000 ms geçti (1sn) PORTB.0 pinine bağlı led yandı ve diğer pinlere bağlı ledler sönük durumda bekliyor.

Aynı tuşa 3 sn basarsam bu sefer PortB.1 pinine bağlı led yansın demişsin. Peki 1 sn,  3 sn den önce gelir. Kısaca aynı tuş senin o tuşa 1 sn mi yoksa 3 sn mi basacağına nasıl karar versin. Bu yazdıklarına bakılırsa hep PortB.0 daki led yanar. Çünki 1 sn dolunca o iş yapılıyor.
Madem 4 tane girişin var neden yalnızca PORTA.0 dakini örnek vererek kullanmaya çalışıyorsun.? Bu işin doğrusu PortA.0 daki tuş 1 sn basılırsa PortB.0 'ı çalıştırsın
PortA.1 deki tuş 3 sn basılırsa PortB.1 dekini çalıştırsın şeklinde olursa mantıklı olur.

Önce yapmak istediğini kendin iyice bir mantık elemesinden geçirmen gerekir. Yoksa kimse seni ciddiye almaz.
Ben aldım çünki bu tür şeyleri nasıl yapman gerektiğini öğrenmeni istedim.
Bir isteği anlatmak da bir kabiliyet işidir. Bu hayatın boyunca karşına sürekli çıkacak bir durumdur. Bu nedenle kısa yoldan kendini düzeltmende yarar vardır.

Bir şey istiyorsan ne istediğini açıkça belirteceksin. Yardım denilen şey şu demektir. Bir işin ucundan tutarsın ancak taşıyamadığın kadar ağır ise yada yapamayacağın kadar zor ise yada bilgin yetmiyor ise yardım istersin. Ama mademki o işi yapmaya niyetlendin bir şeyler bilmen gerekir ve en azından bir şeyler ortaya koyman gerekir. O halde önce yaptıklarını ortaya koyacak ve onun üzerinden yardım isteyeceksin. Yoksa hiç bir şey yapma yokuşun başında dur şu yokuşu çıkacağım bana bir yardım gerek deyip kendini taşıtmayı beklememelisin. Yokuşun ortasına bir gel bakalımda ondan sonra yardım iste o zaman yardım gelir yoksa yokuşun başında yardım istersen madem çıkamıyorsun çıkma o zaman derler.

Her kes bilgisi oranında işlere bulaşmalı yada yapmalıdır. Bilmiyorsa bilgisini geliştirmelidir. En azından o işe başlayacak bilgi seviyesine gelmelidir.

Bu yazdıklarımı bir ağabey nasihatı olarak algıla. Darılmaca yok. Bak ben darılmadan yinede sana ayrdım etmeye çalışıyorum. Doğru yolu göstermeye çalışıyorum. Son olarak, bu yazdıklarıma muhtemelen vereceğin cevaba karşılık bir şeyler karalayayım istedim.
Muhtemel cevabın şu olabilir. Yok ben hazır kod istemiyorum sadece bana yol gösterilmesini istiyordum diyebileceğini düşünüyorum.
O zaman sen yinede yazdıklarıma kulak ver ve şayet böyle bir isteğin var ise o zaman aşağıda yazdıklarımı incele bakalım.

Bir Tuşa basılmasını algılamak demek o tuşun bağlı olduğu port pininin konum değiştirmesini gözlemlemek anlamına gelir.
Pull-down olarak kullandığın pinlerin giriş pinleri olduğunu düşünüyorum. Her ne kadar yanlış yere yazmış isen de (çıkışları belirtip pulldown kullanıyorum demişsin ki çıkışların Pullup yada pulldown ile alakası yoktur yalnızca girişlerin bu konu ile alakası vardır.)
Bu durumda PortA.0 pinine bağlı tuş un LOW da beklediğini , tuşa basılınca PortA.0 pininin HIGH olacağını varsayıyoruz.
O halde;
SAYAC=0
IF PORTA.0=1 THEN    'yani Tuşa basılmış ise
  SAYAC=SAYAC+1:PAUSE 1  'sayac değerini bir artır ve 1 ms bekle
  IF SAYAC=1000  THEN  'yani 1000 ms süre geçmiş ise
     PORTB=0:PORTB.0=1  'önce portB yi sıfırlıyor ardından sıfır nolu pini high yapıyoruz.
   Endif
ENDIF

Burada tek bir tuş kontrolünün zamana bağlı olarak nasıl yapılacağını gösterdim. Şimdi sen aynı şeyi diğer tuşlar için yada 3sn kontrolü için yapabilmen gerekir. Zaman sisteminde 1Sn=1000 ms dir. Dolayısıyla 3sn=3000 ms dir.
Yukarıdaki programda sayac değişkeni Word cinsinden tanımlanmalıdır.

Her hangi bir alt programa yönlendirme işi direk GOTO DONGU şeklinde bir yönlendirme komutu yazılarak yapılabilir.
Yazdıkların çok açık olmadığı için bunu nereye yazacağıma karar veremedim ama ne yapılacağını anlatmış oldum.
Umarım bu yazdıklarım işini görür. Hadi bakalım sıra sende. Yaptıklarınıda buraya koy ki bizde ne yaptığını bilmiş olalım.

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

gokhangu

Arkadaşlar teşekkür ederim yardımlarınız için. Ete arkadaşım özelliklede sana... Emek vermiş bayağı açıklamışsın eksik olma. Bu işte yeni olduğum için, birazda işin heyecanıyla(biraz da vakit sıkıntısı) anlatmak istediğimi net ifade edemeyerek mantık dışı gibi görünen ifadelerde bulunmuş olabilirim. Kusura bakmayın. Hani aslında bir çok yerde karşımıza çıkıyor ya ,ama farkında oluyoruz ama olmuyoruz... Cep telefonunda bile on/off tuşuna farklı sürelerde basıldığında farklı işlevler yapılıyor ya, hani kısa bir süre on/off tuşuna basıyorsun, bir menü çıkıyor; uzun süre basıyorsun direk kapanıyor. Şa an daha farklı örnekler gelmiyor aklıma. Mantıksal olarak benim sorduğum soruda 1 saniyelik işlem her zaman aktif olacak, 3 saniyelik işlemin işleme konması mümkün olmayacak gibi görünüyor. Benimde burada siz bilenlerden sorduğum, böyle bir durumun ne kadar olabilirliği(yukarıda verdiğim örneğe dayanarak sordum). Alt rutinler vs. bunu sizce mümkün kılar mı? Yada pic basic pro'nun burada çözüm sunup sunamayacağı... Soru saçma gelebilir ama tüm samimiyetimle sormak istedim. İlginize teşekkür ederim.

F.T

anladığım kadarı ile tek buton var.but butona 1 sn basarsan 1.led yanacak.  aynı butona 2sn basarsan 2.led yanacak.aynı butona 3 sn basarsan 3.led yanacak. bu mudur? :)

bu iş şöyle bir mantıkla yaparsın.butona basarsın butonu bırakınca butona basılma süresine bakılır hangi işleme denk geliyorsa o işlemi yaptırırsın.istediğin kadarda işlem yapabilirsin.

mesela:

ıf buton=0 then
whıle buton=0
sure=sure+1
delayms 100
wend
endıf

ıf sure>1000 and sure<1500 then
led1=1
endıf
ıf sure>1500 and sure<2000 then
led2=1
endıf   

vs..... 






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

gokhangu

Eksik olmayın arkadaşlar, teşekkür ederim. Sayın F.T emeğine sağlık.