tek bir portu inp/output kullanmak

Başlatan tapir, 01 Aralık 2004, 13:40:10

tapir

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

ete

@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
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

bsivgin

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


tapir

cöztürk arkadaşım verdiğin link çalışmıyor yükleyemedim ilgine teşekkürler

ete

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
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tapir

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

cozturk

Ç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/

tapir

selam
elektronik sebil den nasıl faydalanabiliriz ben giremiyorum yahoo ıd de aldım

aster


ete

@Çö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
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tapir

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

ete

@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
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tapir

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

ete

@ 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
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com