arkadaşlar picde tek pini kullanarak hem input hemde out put olarak kullanabilirmiyiz örneğin 16f628 in a portuna bir led bir de buton bağladım butona bir kez basıp çektğimde aynı port üzerindeki led yanık kalacak tekrar basıp çektiğimde sönük kalacak lütfen bir çözümü varsa yardımlarınızı bekliyorum
@tapir,
istediğin mümkün. Örnek kodlar aşağıdadır. Bunun için bir Pic devresi kur.
Portb.7 ye 470 Ohm direnç bağla direncin ucuna bir LED bağla LED in diğer ucunu GNDye bağla.
PortB.7 ye ayrıca 10K bir direnç bağla direncin diğer ucunu yine GND ye bağla.
Son olarak Portb.7 ye birde buton bağla butonun diğer ucunu +5V a bağla.
Sistemin çalışmaya hazır.
Aşağıdaki programı PIC'e yükle ve çalıştır.
z var bit
led var byte
tus var portb.7
lcdout $FE,1
start: input portb.7
if tus=1 then
if z=1 then start
output portb.7
led=1-led
portb.7=led
z=1:
Lcdout $fe,1,"z=",#z," led=",#led
pause 200
goto start
endif
output portb.7
portb.7=led
Lcdout $fe,1,"z=",#z," led=",#led
pause 100
z=0
goto start
end
Ben isis te denedim mükemmel çalışıyor.
İşin temeli port sürekli çıkış modunda tutulacak ve yalnızca çok kısa bir süre giriş moduna alınıp tuşa basıldımı diye test edilecek. Tuşa basıldı ise gerekli işlem yapılacak.
Kolay Gelsin
ETE
Sizin söylediğiniz devreyi denemedim ama çıkş sıfırken butona basılırsa garip bir durum ortaya çıkmayacak mı acaba, sanki bana öyle geliyor.
Saygılarımla
Bülent ŞIVGIN
http://s11.yousendit.com/d.aspx?id=5DF29109BEED14D6A9A008F39064CCC6
cöztürk arkadaşım verdiğin link çalışmıyor yükleyemedim ilgine teşekkürler
Sayın Bülent Şıvgın,
Programı denedim diyorum size sizde gerekirse isis te deneyin göreceksiniz.
@ Sevgili Çöztürk;
Yousendit.com'u daha önce kullanmadım. Verdiğin link yalnızca download için buraya bir şey upload nasıl edilecek.? Home sayfasında E-Mail yolu ile bir şey göndermek istiyor sanki. Anlamadım ve bir sorayım dedim.
ETE
ar-ge dostum verdiğin programı proteusda 16f628 ile denedim portb.7 de kararsız çalıştı porta.0 a bağlayınca sorun yok teşekkürler
Çalışmayan link bazen çalışabilir. gönderdiğin kişiye haber gitmesini istersen email yazıyorsun yoksa gerekmez. sonra linki ilgili kişiye kendin de bildirirsin istersen.
gönderme yeri:
http://s11.yousendit.com/
Benim koda aşağıda ilaveten isis dosyası vardı belki yukarıdaki sonra çalışır (şemaya şuan bakamıyorum pull up ve led bağlantısına ) :
Loop:
input portb.0 'pin input
if portb.0 =0 then 'but. basılıdı ise bırakılana kadar bekler
while portb.0 =0: wend
low portb.0 'sonra bu pini output yap
pause 3000 '3 saniye out olarak kalsın!!!
endif
Goto loop
Ayrıca isis ve pbp dosyalarını burada da bulabilirsiniz.:
http://groups.yahoo.com/group/elektronik_sebil/files/
selam
elektronik sebil den nasıl faydalanabiliriz ben giremiyorum yahoo ıd de aldım
https://www.picproje.org/index.php/topic,2648
@Çöztürk,
Yaptığın programa baktım. Tuşa basılı tuttuğun müddetçe led yanıyor bıraktığın zaman sönüyor. Bilmiyorum Tapir arkadaş böyle bir şeymi istiyordu. Ben olayı farklı algıladım. Benim yaptığım sistemde led toggle olarak çalışıyor. Yani tuşa bir kere basarsanız LED yanıyor, ikinci bastığınızda sönüyor. Tekrar basarsanız tekrar yanıyor. Sanırım Tapir'in istediğide bu ama yinede kendi karar versin. Her iki şekilde de çalışan program örneği elinde var.
@Tapir,
Benim programda 16F628 için gerekli olan Cmcon=7 ibaresi yok idi. Bu ifadeyi programa ilave etmeniz gerekir. Bu şekilde sistem düzgün çalışması gerekir. Bende çalışıyor.
Kolay Gelsin
ETE
selam arkadaşlar
bu tek portu hem input hemde output olarak kullanma olayı proteusda yukardaki programla sorunsuz çalışıyor ama pic'e yüklediğimde olmuyor yani gerçek devrede çalışmıyor sorunu bir türlü çözemedim yardımcı olacak arkadaşlara şimdiden teşekkürler
saygılar
@Tapir,
Şayet 16F628 kullanıyorsan aşağıdaki programı bir dene. Yok 16F84A kullanıyor ise yalnızca CMCON=7 ibaresini kapa veya çıkart.
Sorun muhtemelen butondaki debouncing (ark) olayından kaynaklanıyor olabilir.
Aşağıdaki programa biraz gecikme koydum. Muhtemelen sorunu çözecektir. Dene ve lütfen neticeyi bildir.
Kolay Gelsin
ETE
z var bit
led var byte
tus var portb.7
lcdout $FE,1
cmcon=7
start: input portb.7
if tus=1 then
if z=1 then
pause 100
goto start
endif
output portb.7
led=1-led
portb.7=led
z=1:
Lcdout $fe,1,"z=",#z," led=",#led
pause 200
goto start
endif
output portb.7
portb.7=led
Lcdout $fe,1,"z=",#z," led=",#led
pause 100
z=0
goto start
end
selam
Ete arkadaşım
walla bende ne olduğunu anlayamadım isisde geçen gün çalışan ilk programın dahi şu anda tekrar denediğimde aynı pic 16f628e yüklediğimde ki gibi çaışmıyor oysa daha önce en azından isisde çalışıyordu tabii doğal olarak yeni gönderdiğin programda çalıimıyor
nasıl böyle oldu anlamadım iki gün önce isisde çalışan şimdi çalışmıyor
@ Tapir,
Yazdığım programı ve isis dosyasını aşağıdaki adrese upload ettim
Programlar LCD-Test.Zip dosyası içinde. Al bak ve dene bakalım.
Belki hatanı bulursun. Yok benimkilerde çalışmaz ise mutlaka makinende veya programlarında bir sorun vardır. Zira burada programlar çalışıyor.
http://groups.yahoo.com/group/PicProjeUP4/files/ETE-Files/
Kolay gelsin
ETE
dostum ete
ilgine çok teşekkürler ama maalesef olmadı lcd de dahi bi değer göremedim denemeyi proteus 6.4 sp2 de yaptım gönderdiğin hex dosyasını aynen kullandım bu arada simulasyon devresine 16f628 ile 16f 84ü üst üste koymuşsun 628i ayırıp sadece 84 ü kullandım genede olmadı
@Tapir,
Sanırım sorunun isis te veya başka bir yerde. Bendeki dosyalar çalışıyor.
Bu aşamdan sonra yardımcı olamıyacağım. Kusura bakma.
ETE
@ete hocam, sanırım U1 (16f84 var) üstüne U2 koymuşsun (16f628)
84 devrede bağlı ama 628 öyle boşta duruyor
arkadaşın ot yolmasına sebep bu herhalde ? :roll:
U2 yi silin hex i yeniden yükleyin ve çalıştırın normal çalışıyor (84 olarak )
@Aster,
Sanırım sorun o değil. Zira dosyayı ben açtım. Devreyi önce F84 ile çalıştırmıştım. SOnra F628 kullanıyorum deyince onu da koydum ve programda gerekli değişikliği yaptım. Bu arada 628 in bacaklarını bağlamadan araya bir şey girmiş (başka bir işle uğraşmışım herhalde) ve sonuçta devreye bakınca 628 bağlı gibi duruyor. Ama yinede program çalışıyor.
Hatta bir dakika önce isis teki durumuda düzelterek 16F628'e çevirdim ve aynı program yine çalışıyor.
Hata muhtemelen arkadaşın sisteminde olabilir. Bilemiyorum.
ETE
@Tapir,
Şimdi aklıma geldi, acaba LED' i ters mi bağlıyorsun. Böyle şeyler basit ve sorulmaması gereken şeyler ama insanın aklınada başka bir şey gelmiyor.
Devrede bulunan 10K direncide kaldırabilirsin. Zira devre LED üzerinden zaten gerek eksi kuplaj alıyor. Bu akşam gerçek devrede deneyip sana yarın bir cevap vermeye çalışacağım.
ETE
ŞÖYLEki, hex dosyasını gidiyor hep sendeki yerinde arıyor ( hex in yeri değişmiyor) sende çalışması bu sebeple normal
sim yapınca zaten 1 tek o hatayı veriyor yani hex in yerini (sendeki yerinde) bulamadım diyor, halbuki biz U2 ye hex i gösteriyoruz ama çalışan 84
Sevgili Aster,
Bu durumda isis de Pic leri silip yerine yeniden bir pic koyulsa ve aynı bağlantılar yapılsa ve sonuçta Hex de adres olarak gösterilse düzelmezmi?. Sanırım sende öyle yapıyorsun.?
Enteresan bir durum. Şimdi bende aynı dosyayı evde deneyeceğim. Böylece senin söylediğin hataları görürüm sanırım.
ETE
Evet , ben 628 i silip altaki 84 e hex in yerini gösterince çalıştı zaten
ama hiç bir şey değiştirmeden hex i gösterip (U2 16f628) play dersen
amcam sim sırasında gidiyor U1 16f84 için hex arıyor, senin pc de her nerdeyse buluyor tabi bizde o dosyayı bulamıyor ve sadece o kısımda error veriyor. (umarım arkadaş klavyeyi yememiştir, bazen böyle hatalar olabiliyor sonuçta insanız hepimiz
bkz:osc sorunu)
şimdi gördüm
Alıntı yapılan: "tapir"16f628 ile 16f 84ü üst üste koymuşsun
o zaten olayın farkına varmış ondaki sebep nedir acaba ?
arkadaşlar
bende sizin anlattığınız sorunlar yok yani hex dosyasını bulamama falan gibi derdim yok sorun devreyi çalıştırıp butona bastığımda led'in yanması tekrar bastığımda sönmemesi devamlı yanık kalıyor on_off olmuyor yani ayrıca displeyde de hiç bişey görünmüyor sadece display ekranı ışıgı yanıyor hepsi bu
herkese selam başarılar
not:devreyi 16f84 ile simüle ediyorum
@Tapir,
Senden ricam benim gönderdiğim isis dosyasında üst üste olan pic lerden 16F628 olanını sil. alttki 16F84 ün kullanacağı program (Lcd-Test.hex) ın yerini göster ve çalıştır. Şayet yine çalışmıyor ise ne olup bittiğini anlat.
Yani çalışmıyor ama ekranda z=0 Led=0 gibi ifadeler gözüküyor veya gözükmüyor gibi. Merak ettiğim program çalışıyor da buton ve led mi çalışmıyor yoksa hiç birşeymi çalışmıyor. BUnu merak ediyorum.
BU dediklerimi Aster arkadaşımız yapmış ve program çalışmış. Akşam evde bende yaptım ve çalıştı. Senin sorununu gerçekten merak ediyorum.
ETE
ete dostum
yukarıdaki mesajıma tekrar bakarsan orada anlattım butona basınca led yanıyor tekrar basınca sönmesi gerekir ama bunu yapmıyor led sürekli yanık kalıyor ayrıca displayde hiç bir karakter görünmüyor
(http://img51.exs.cx/img51/2326/m4jadsz1.jpg)
@Tapir,
Gördüğün gibi Aster benim devreyi koymuş, hemde çalıştırmış da koymuş.
Bu durumda sen istersen sıfırdan kendi isis'inde bu devreyi yeniden yap ve hex'i göstererk çalıştır bakalım çalışacakmı.?
Mikro işlemci olarak 16F628 kullan.
ETE
sonunda devreyi proteus 6.1 sp2 de yeniden çizip çalıştırmayı başardım
sorun kullandığım 6.4 sp2 versiyonundan kaynaklanıyormuş sanırım bendeki bu 6.4 sp2 hatalı çalışıyor 6.1 sp2 de yapınca oldu birde ben derlemeyi picbasic plus 1.23 de yapıyordum derlerken hata vermemesine ragmen define lcd komutları işlemedi yerine declare lcd kullanınca display sorunumda halloldu şimdi sıra gerçek devrede denemeye geldi umarım sorunsuz çalışır
emeği gecen arkadaşlara teşekkürler başarılar