pcbway

pause nin alternatifi

Başlatan knksvn, 10 Eylül 2010, 02:27:29

knksvn

benim bir  sorunum var picbasic de bir butona basıldığında 1 nolu lamba 5 sn yanıyor 1 nolu lamba yanarken başka bir butona bastığımda 1 sönecek 2 nolu lamba yanacak süreyi pause ile belirliyorum ama pic  pause komutunu işlerken başka  hiçbirşey yapmıyor kesmeyle olmayacak bunu nasıl yapabilirim veya pause komutunun bir alternatifi var mı _? şimdiden çok teşekkürler

justice_for_all

simdi arkadasim butonlu projelerden sen lede sukadar saniye yan diyemezsin cunku ne zaman butona basicagin belli diil bu yuzden 1. led yaniyosa 2.butona basilana kadar ledi yak diceksin yani

while(!input(2.buton)) //2. butona basilmadigi surece don
{
   1. ledi yanik
   2.led sonuk
}

while(!input(1.buton)) //1.buton basilana kadar don
{
  2. led yanik
  1. led sonuk
}

ben c de ornek yazdim buna benzetirsin basicte butonlari ve ledleri hangi pinlere taktigini bilmedigim icin isimlerini soyledim hadi kolay gelsin...

knksvn

dostum öncelikle ilgilendiğin için teşekkürler program şöyle
TRISB=%11110000
TRISA=%00000
BAS:
IF PORTB.4=0 THEN
GOSUB BB
endIF
IF PORTB.0=1 AND PORTB.5=0 THEN
GOSUB CC
ENDIF
GOTO BAS
BB:
PORTB.0=1
PAUSE 5000
RETURN
CC:
PORTB.0=0
PAUSE 10
PORTB.1=1
PAUSE 5000
RETURN
GOTO BAS
END

portb.0 daki led yanıksa ve bortb.5 deki buton basılıysa portb.1 deki ledi yakacak ama olmuyo çünkü pic pause konutunu işlerken başka hiçbirşey yapmıyo yardımcı olursan sevinirim  şimdiden çok teşekkürler

ASPGraphic

10 Eylül 2010, 21:27:34 #3 Son düzenlenme: 10 Eylül 2010, 21:30:33 ASPGraphic
TrisA = $00
PortA = $00
TrisB = $F0

Ana_Program:

IF PortB.0 = 1 and PortB.5 = 0 then
Low PortB.0
Pause 10
High PortB.1
Pause 5000
Endif

IF PortB.4 = 0 then
High PortB.0
Pause 5000
Endif

Goto Ana_Program
End

// Bu sekilde tekrar deneyebilirmisiniz? Bir de bitleri kontrol ederken PORTB.0=0 Değilde High, Low gibi argümanları kullanırsanız sorun yaşamazsınız. = işareti atama işareti olduğu için mikrodenetleyici bazen bunu yanlış anlayabiliyor.
// Not: Buradaki 5000ms bekleme bana gereksiz geldi fakat belki bir yerde lazımdır diye koda ekledim, eğer o beklemeyi bi yerde kullanmıyorsan kaldırman daha iyi olacaktır.
İnsan hayalleriyle yaşar. www.32bit-core.com

knksvn

denedim dostum ama olmadı :( benim sorunum pause ile
pause pici son halinde durduruyo ve pic başka hiçbirşey yapmıyo bana pic\'in pauseye girmeden nasıl çıkış süresini belirleyecem o lazım ilgilendiğin için teşekkürler

justice_for_all

arkadasim iste dongulu yapcaksin onda pause kullanmicaksin ki birinci butona basildiktan sonra ikinci butonu kontrol etceksin basilmadiysa surekli yanacak led 2.butona basilinca da birinci butona basilincaya kadar 2. led yanacak ben basic kodlarini bilmedigim icin yazamiyorum kolay gelsin...

justice_for_all

arkadasim devrenin calismasini iyi aciklayabilirmisin tek butonmu var yoksa iki buton mu

justice_for_all

TrisA = $00
PortA = $00
TrisB = $F0

Ana_Program:

     IF PortB.0 = 1 and PortB.5 = 0 then

DON1:
        Low PortB.0
        Pause 10
        High PortB.1

        IF PortB.4 = 1 then
            Goto Ana_Program
        Endif
    Endif

    IF PortB.4 = 0 then
           
DON2:
         Low PortB.1
         Pause 10
         High PortB.0
         IF PortB.4 = 0 then
             Goto DON2
         Endif
     Endif

Goto Ana_Program
End


//arkadasim bide bunu dene bakalim olcakmi hadi kolay gelsin

ASPGraphic

12 Eylül 2010, 12:26:36 #8 Son düzenlenme: 12 Eylül 2010, 18:18:57 ASPGraphic
Acaba başka bir yerde sıkıntı olabilir mi? Çünkü ben bu programı çalıştırmıştım. Zaten çok basit bir program bu kadar sorun yaşamamanız gerekiyordu. Belki de donanımsal olarak bir eksiğiniz vardır. Sizin verdiğiniz bilgilere göre butonlar düşen kenarda aktif hale geliyor. Yani butonların bağlı olduğu pinlere bir pull up direnci takıp butonuda GND ile tetikletmelisiniz. Belki tam tersini yapıyor olabilirsiniz. Oraları bir takip edin.

Programda PortB\'nin 4ncü pinine bağlı butona basılınca PortB\'nin 0ncı pinini logic 1 yapacak ve 5000 ms bekleyecek. Eğer siz 5000 ms beklemeden başka bir işlem yapıyorsanız program okuma durumunda olduğu için yaptığınız işlem pasif kalır sizde program çalışmıyor sanabilirsiniz. Eğer sorun böyle bir şeyse ilk önce PortB\'nin 4ncü pinindeki butona basın ve 5000 ms bekleyin. 5 sn geçtiğinden emin oldukdan sonra PortB\'nin 5nci pininde butona basarak ledin sönüp sönmediğini kontrol edin.
Yada programdaki Pause 5000 olan yerleri iptal edip programı tekrar derleyin ve bu şekilde deneyin.
Çünkü programda eksik göremiyorum ve emin olmak için tekrar çalıştırdım. Bir sorun çıkmaması lazım.
İnsan hayalleriyle yaşar. www.32bit-core.com

oldurenkafiye

Aslında programın çalışmasında bir sorun yok yukarıdaki kodlarda hata görünmüyor. ama zamanında başıma gelen sizinde gelmesi muhtemel bir durum olabilir. pic ile motor sürmek istiyordum bildiginiz dc motor çok hassas birşey olmadıgı için role ile sürdüm ancak motor çalışdığında süresi geldiginde durmuyor devam ediyordu motoru ayrı kaynakdan besleyince sorunun çözüldügünü gördüm kısacası devrenizde pic beslemesini tam regüleli bir kaynakdan ve yeterli gücü sağlayacagından emin oldugunuz bir kaynakdan besleyin. ikinci sorun ise role ve benzeri elektronik komponent sürecek iseniz role ucları arasına ters diyot mutlaka koyun (ters polarma diye aratınca birçok sonuç bulursunuz)

knksvn

arkadaşlar öncelikle teşekkürler ben size soruyu veriyim...
1 nolu butona basılınca 1. led 5 sn yanacak herhangi bir işlem olmazsa 5 sn sonra otomatik sönecek eğer led yanarken ikinci butona basılırsa led hemen sönecek ve diğer led yanacak
1, led sönükken 2. butona basılırsa pic herhangi bi işlem yapmayacak sorun şurda pic pause komutunu işlerken başka birşey yapmıyor tekrar teşekkürler

justice_for_all

arkadasim o zaman timerla yapman gerekiyo   timeri 5 sn saydircaksin eger hic degisiklik olmadiysa kesmeyle sondurceksin farkli islem yapildiysa timeri kapatcaksin anladin mi ..
kolay gelsin..

knksvn

timer diye bi komut bulamadım zahmet olmazsa küçük bir  örnek verebilir  misiniz_?

ASPGraphic

Bir çok yolla yapabilirsin ama en basit şekli kesme kullanarak olur sanırım. Programa bir dış kesme ata, dış kesme her aktif oluşunda programı kesip kesmeye atlar ve buraya da koşulları yazabilirsin.
Bu programı yazabilirdim ama gene olmadı diyeceksin diye eriniyorum. Kesmeler hakkında bilgin varsa zaten kendin yazabilirsin. Eğer bilgin yoksa aşağıdaki link de ki makaleye bir göz at ve kendin yapmaya çalış. Daha iyi aklında kalır.
https://320volt.com/picbasic-dersleri-pic-basic-pro-ile-pic-programlama-6/
İnsan hayalleriyle yaşar. www.32bit-core.com

knksvn

öncelikle zahmet veriyorum sana kusura bakma
kesmeler hakkında bilgim var ama programın içinde zaten birkaç kesme  var kesme dışında bir alternatif var mı_? şimdiden tşk

justice_for_all


Fatih76

bir de ben bişey sormak istiyorum. Butona baslı olduğu sürece ledi yakan ve  butonda elimizi çektikten sonra ledi söndüren program kodlarını nasıl yazabiliriz
şimdiden teşekkürler