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.
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
İ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
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.
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,
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
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.
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