Haberler:

Türkiye'nin Elektronik ve Metal Dedektörlerini Buluşturan İlk Sitesi Teknoloji Ekibi'ne Hoş Geldiniz.

Ana Menü

Buton

Başlatan humhum, 19 Haziran 2012, 08:37:06

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

humhum

Merhabalar , PİC Basıc Pro ile yazılmış  ,devre ilk açıldığında çıkış LED'i yanmayacak  Butona basılınca (1) oluncada yanmayacak ,hemen devamında   buton (0) olunca çıkışı 1saniye boyunca yakacak bir loop komut programı arıyorum.



Saygılar.
Linkback: Buton

pro-TR

SLM humhum usta demek istediğiniz şu mu;
açılışta led yanmayacak, butona basınca da yanmayacak ne zaman ki butonu basmayı bıraktınız o zaman 1 sn boyunca led yanacak doğrumu? eğer öyle ise iu şekilde olabilir.

led =0
main:
if buton =1 then                        'butona basıldımı
while buton ==1 :wend            'buton basılı olduğu sürece işlem yapma
led =1                                       'buton bırakıldığında ledi yak
say =1                                      'say değerini 1 yap
repeat                                   
inc say           'say değişkenini bir artı
until say =100                            'buradaki 100 değeri 1 saniyeye göre ayarlanacak zira kristal işlem süresini belirler   
led =0                                        'ledi söndür
endif


bu senin söylediğin işlemi yapar ve ben protonda yazdım ama PBP da da aynı komutlar gecerli
Güzeli güzel yapan EDEBTİR,
Edeb güzeli sevmeye SEBEBTİR...

"Rufailer giyer pembe kırmızı
Tacının üstünde nurdan yıldızı
Evlatları tutar şişi ateşi, közü
Bülbül güle hayran ben de şeyhime"

humhum

İlgin için Teşekürler PRO-TR , senin yazıyı derledim fakat 5 tane hata verdi yani yapamadım,  Giriş butonu  sürekli  basılı iken ve bastığım sürecede çıkış vermeyip  bıraktığım anda çıkışı High yapacak
komut satırı hangi komutlarla oluyor . Benim denemem şöyle:
   
   @device16f628A
@device16F628A_PWRT_ON_PROTECT_OFF_WDT_ON
TRISA=%00000001
TRISB=%00000000  'hepsi çıkış
CMCON=7          'PIC port pinlerin hepsi I/O  ,comparator devredışı.
PORTB.0=0        'Çıkış low
Pause 500
Basla:
PORTB.0=0
IF PORTA.0=1 Then abc:   'eğer giriş 1 ise çıkışı 0 yap
'Return
IF PORTA.0=0 Then bcd:
abc: Low PORTB.0
bcd: High PORTB.0
Pause 1000
Call Basla:

End

   

asenkron

  burada karıstırılan kısım sanırım su.pull luop dırenclerının artıdamı yoksa sasedemı oldugu bılınmeden .yazılan ıfadenın yanlıs olacagı ve tanımlamalarda bu belırtılmemıs.pıc basıc veya protonu yazımda kullanmasamda duzenleme yapacak kadar bılıyorum.benım dıkkatımı ceken bu oldu c kodu veya asm ısınızı görurse yazayım.

pro-TR

humhum usta bendeki simülasyonda bir hata vermedi,isis cizimini ve bas dosyasını ekliyorum. inceleyin. ayrıca asekron ustamın dediği gibi siz buton girişini +5v a mı şaselediniz yoksa GND ye mi, ukelalık olmasın ben genellikle buton pinini +5v a şaseleyip buton ile GND basarım pine daha az parazitli oluyor. ekteki yazılım ile de ilgili bir sorun olursa elimden gelen yardımı yaparım,
Güzeli güzel yapan EDEBTİR,
Edeb güzeli sevmeye SEBEBTİR...

"Rufailer giyer pembe kırmızı
Tacının üstünde nurdan yıldızı
Evlatları tutar şişi ateşi, közü
Bülbül güle hayran ben de şeyhime"

pro-TR

humhum ustam sizin vermiş olduğunuz yazılımda mantık hatası var, sakın beni yanlış anlamayın, şöyle ki;
Alıntı YapBasla:
PORTB.0=0
IF PORTA.0=1 Then abc:   'eğer giriş 1 ise çıkışı 0 yap
'Return
IF PORTA.0=0 Then bcd:
abc: Low PORTB.0
bcd: High PORTB.0
Pause 1000
Call Basla:

if lere kadar sorun yok, ama abc :...... ve bcd:.... satırlarınıda işler ana döngüde yazılım, oysa siz onu bir şarta bağlamış olsaydınız şayet o zaman abc ve bcd işlemleride çalışırdı, yani şöyle yapabilirdiniz,
Alıntı YapBasla:
PORTB.0=0
IF PORTA.0=1 Then gosub abc:   'eğer giriş 1 ise çıkışı 0 yap
'Return
IF PORTA.0=0 Then gosub bcd:


Pause 1000
Call Basla
abc:
Low PORTB.0
return

bcd:
High PORTB.0
return

end
:

ayrıca şu butona basılı olduğu sürece işlem yapmaması olayı ise
Alıntı Yap
if porta.0 =0 then
while porta.0 ==0 :wend
demek ile while komutu porta.0 ın bırakılmasına kadar döngüde kalır ve bir alt satıra gitmez, bunu şu şekilde de yapabiliriz.

Alıntı Yap
if porta.0 =0 then
aa: porta.0 =0 then aa
yani porta.0 pini 0 olduğu sürece aa rutininda yazılım dönüp durur ne zaman ki porta.0 in durumu değişir o zaman işlem bir alt rutine gecer
Güzeli güzel yapan EDEBTİR,
Edeb güzeli sevmeye SEBEBTİR...

"Rufailer giyer pembe kırmızı
Tacının üstünde nurdan yıldızı
Evlatları tutar şişi ateşi, közü
Bülbül güle hayran ben de şeyhime"

humhum

Asenkron ve Pro -Tr  ilginize teşekürler ,   Pro-Tr  yapmış olduğun yazılım işime yaradı eline sağlık kardeş.



Saygılar.

pro-TR

Alıntı yapılan: humhum - 21 Haziran 2012, 10:29:00
Asenkron ve Pro -Tr  ilginize teşekürler ,   Pro-Tr  yapmış olduğun yazılım işime yaradı eline sağlık kardeş.



Saygılar.

önemli değil usta işinizi görmesine sevindim
Güzeli güzel yapan EDEBTİR,
Edeb güzeli sevmeye SEBEBTİR...

"Rufailer giyer pembe kırmızı
Tacının üstünde nurdan yıldızı
Evlatları tutar şişi ateşi, közü
Bülbül güle hayran ben de şeyhime"


Paylaş whatsappPaylaş facebookPaylaş linkedinPaylaş twitterPaylaş myspacePaylaş redditPaylaş diggPaylaş stumblePaylaş technoratiPaylaş delicious