Gönderen Konu: Buton  (Okunma sayısı 6216 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Buton
« : 19 Haziran 2012, 08:37:06 »
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.

Çevrimdışı pro-TR

  • Yarbay
  • **
  • İleti: 2291
Ynt: Buton
« Yanıtla #1 : 19 Haziran 2012, 12:05:44 »
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.

Kod: [Seç]
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"

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: Buton
« Yanıtla #2 : 19 Haziran 2012, 17:23:31 »
İ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

  • Ziyaretçi
Ynt: Buton
« Yanıtla #3 : 19 Haziran 2012, 21:10:30 »
  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.

Çevrimdışı pro-TR

  • Yarbay
  • **
  • İleti: 2291
Ynt: Buton
« Yanıtla #4 : 19 Haziran 2012, 23:43:41 »
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"

Çevrimdışı pro-TR

  • Yarbay
  • **
  • İleti: 2291
Ynt: Buton
« Yanıtla #5 : 19 Haziran 2012, 23:56:24 »
humhum ustam sizin vermiş olduğunuz yazılımda mantık hatası var, sakın beni yanlış anlamayın, şöyle ki;
Alıntı
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:

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ı
Basla:
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ı
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ı
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"

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: Buton
« Yanıtla #6 : 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.

Çevrimdışı pro-TR

  • Yarbay
  • **
  • İleti: 2291
Ynt: Buton
« Yanıtla #7 : 21 Haziran 2012, 12:25:14 »
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"