Teknoloji Ekibi

Elektronik Dünyası => Mikrodenetleyici ve Mikroişlemciler => PIC => Konuyu başlatan: humhum - 19 Haziran 2012, 08:37:06

Başlık: Buton
Gönderen: humhum - 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.
Başlık: Ynt: Buton
Gönderen: pro-TR - 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.

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
Başlık: Ynt: Buton
Gönderen: humhum - 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

   
Başlık: Ynt: Buton
Gönderen: asenkron - 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.
Başlık: Ynt: Buton
Gönderen: pro-TR - 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,
Başlık: Ynt: Buton
Gönderen: pro-TR - 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ı 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
Başlık: Ynt: Buton
Gönderen: 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.
Başlık: Ynt: Buton
Gönderen: pro-TR - 21 Haziran 2012, 12:25:14
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