Pic'e bağladığım led ve butonda problem var

Başlatan karakartal10, 21 Nisan 2007, 16:46:00

karakartal10

PORTA  nın 1. pinine  buton ekledim ve butonun diğer ucu toprağa bağlı PORTB pinlerini led diyotlara bağladım butona basınca led diyot yanıyor gecikmeye atlıyor ve gecikme bitene kadar led diyot yanıyor

ama bütün bunları ben butona basılı tutarsam yapıyor şimdi diyorum ki sadece 1 saniyelikte olsa butona bassam gecikme bitene kadar led diyotlar yanmaya devam etse nasıl yapabiliriz

şimdiden teşekürler

cuneytsezmis1

kodu koyarsan hatayı bulup yardım eden aradaşlar çıkar.kolay gelsin

wonder

hangi programı kullandığını söyleseydin yazardık bişeyler.

sir_hawk

@karakartal

sen yazdığın kodları yayınla,biz sorununu çözmeye çalışalım.Şimdi sana direk bunu yapan kodları verirsek sana iyilik mi yaparız acaba ?!


Saygılarımla.

karakartal10

pic assembly ile yazdığım programın tüm kodu aşağıdadır

LIST   P=16F84

;---------------------------------------------
PORTA   EQU   h'05'
PORTB   EQU   h'06'
STATUS EQU   h'03'
SAYAC1 EQU      h'0C'
SAYAC2 EQU      h'0D'
SAYAC3 EQU      h'0E'
TRISA   EQU   h'85'
TRISB   EQU   h'86'

;---------------------------------------------
   CLRF   PORTB
   BSF   STATUS,5
   CLRF   TRISB
   MOVLW   h'FF'
   MOVWF   TRISA
   BCF   STATUS,5
BASLA
PA_TEST
   BTFSC   PORTA,2
   GOTO   PA_TEST
   BSF   PORTB,1
   BSF   PORTB,2
   BSF   PORTB,3
   BSF   PORTB,4
   BSF   PORTB,5
   BSF   PORTB,6
   CALL   GECİKME
   BCF   PORTB,1
   BCF   PORTB,2
   BCF   PORTB,3
   BCF   PORTB,4
   BCF   PORTB,5
   BCF   PORTB,6
   GOTO   BASLA
;---------------------------------------
GECİKME
   MOVLW   h'FF'
   MOVWF   SAYAC1
DONGU1
   MOVLW   h'FF'
   MOVWF   SAYAC2
DONGU2
   MOVLW   h'4B'
   MOVWF   SAYAC3
DONGU3
   DECFSZ   SAYAC3,F
   GOTO   DONGU3
   DECFSZ   SAYAC2,F
   GOTO   DONGU2
   DECFSZ   SAYAC1,F
   GOTO   DONGU1
   RETURN   
END

e3

PA_TEST 
BTFSC PORTA,2 
GOTO PA_TEST 
BSF PORTB,1

Sen bu satırda butonun sıfır olup olmadığını kontrol ediyorsun.Ancak bu esnada bu işlem çok kısa sürdüğü için ve sende bu esnada butona belki yüzlerce kez bastığın için işlem yapılmıyor.Şöyle kodu değiştirirsen çalışabilir :
PA_TEST 
BTFSC PORTA,2 
GOTO PA_TEST 
BTFSS PORTA,2
GOTO PA_TEST
BSF PORTB,1

Kolay gelsin.İyi günler. ;)
.eem.

karakartal10

@protection teşekürler kardeşim denerim devreyi birazdan bir sorun olursa yine yarazarım

karakartal10

devreyi yeni yazılımla denedim @protection bu sefer butona basılsada basılmasada çıkışlar sürekli 5 volt oysa benim amacım botona sadece 1 kefa basılınca bile devrenin çalışmasını sağlamak yani kapı zili botunu gibi bir buton zile bastığımızda devre çalışacak gecikme bitene kadar yani yardım edin lütfen

cuneytsezmis1

buton bağladığın porta.2 nin ucunu pullup yaptın mı?

XX_CİHAN_XX

Alıntı yapılan: "karakartal10"devreyi yeni yazılımla denedim @protection bu sefer butona basılsada basılmasada çıkışlar sürekli 5 volt oysa benim amacım botona sadece 1 kefa basılınca bile devrenin çalışmasını sağlamak yani kapı zili botunu gibi bir buton zile bastığımızda devre çalışacak gecikme bitene kadar yani yardım edin lütfen
Evet buton girişini 10k ile pull up yap Burada butona sürekli basılıymış gibi bir işlem oluyor.portu bcf yaptıktan sonrada gecikme koyarsan portun clear olduğunuda görürsün.Gecikmenin ardından port tekrar (butona basmadıgın halde) set oluyorsa bu durumda ya pull up direncin yok yada buton baglantın dolayısıyla sorgun yanlış.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

e3

Yaptığın devre şemasını da buraya ekleyebilir misin?Bir de kullandığın döngü biraz uzun gibi geldi bana?Döngünün tamamiyle sona erdiğinden emin misin?
.eem.

alabora

Yazının başında Porta,1'e buton bağladım demişssin am programda porta,2 sorgulanıyor. Burada bir yazım hatasımı var acaba...

karakartal10

devrenin blok diyagramını ekledim

10 k pull up devresi nasıl yapılır yardımcı olabilirmisiniz.döndünün uzun olması ise yaklaşık 15 saniyelik gecikme yapmam gerekirdi o yüzden uzun döngü seçtim alabora dediğin gibi ilk başta yazım yanlışı olmuş pic in 1. pini diyecektim

XX_CİHAN_XX

Şema biraz blok şema gibi olmuş ama pull up direnci koymadıgın ortada buda sorunun kaynağı gibi gözüküyor.
Gelelim nası koyacağına...
Çok basit, porta 2 pinine 4.7k yada 10 ile +5v a bağla.
Zaman gecikmeside 15 saniyedende fazla gibi geldi bana.Tabi kristalin 4mhz nın ustunde değilse.Sen deneme aşamasında zaman gecikmesini biraz kısaltmalısın.Kolay gelsin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

karakartal10

gecikmeler yaklaşık 14.8 saniye tutuyor 4Mhz de hesaplama şeklini aşağıya ekledim  


@XX_CİHAN_XX pull up devresini anladım ama bunu zil butonu ile aktif hale
getirmemiz gerekiyor benim  yaptığım devrede ise zil butonuna basılınca pin2
deki gerilim transistör yardımıyla sıfır volt oluyor yoksa ben bu transistörle
kurduğum devreyi yanlışmı yaptım şimdi