pbp port kontrol yardım

Başlatan ict06, 05 Nisan 2011, 14:09:02

ict06

merhabalar,  bir müddettir amatör olarak pic programlama ile ilgileniyorum, yaş itibariyle bazı şayleri anlamakta zorluk çekiyorum.

arayüz olarak kendimce en basiti pbp gibi geldi

ilgilenen arkadaşlara bir sorum olacak

döngü ve karar verme mekanizmasında 4 tane giriş seşeneğimiz bulunuyor 4 tane de çıkış

kesmeler ile başka bir tuşa basılınca program başka bir alt programa dallanması lazım.  tabi 1 tane tuşta dallanmanın kesilmesi lazım
benim

1. sorum pause komutunda beklerken başka bir tuşa basınca programda kesme meydana grlir mi?

2. sorum ise a portunu giriş yaparsak ilk 4 portu için binary değerlerini kontrol ederek bir karar verme mekanizması çıkarta bilirmiyiz

örnek= if portA 1010 ise şu satıra git

gibi

şimdiden herkese teşekkür ederim




Mucit23

1. sorunun cevabına bakarsak pause komutu işlenirken picin eli kolu bağlanır hiçbirşeyle uğraşamaz. Ama kesme oluşuyormu oluşmuyormu tam emin değilim. Galiba oluşmuyordu.
2. Sorunun cevabı ise kısmen evet. Yani direk porta nın değerine bakabilirsin. Fakat portlar 8 bitlik olduğu için max. 255 değerini alabilir.

ict06

cevabınız için çok teşekkür ederim, portun içeriğini okumak için benim yazdığım gibi

if portA=%00001011 then
              goto felen dongusu

şeklindemi yazılacak.

ete

Bekleme anında hem bekleyip hemde tuş kontrolü yapmak isterseniz aşağıdaki gibi bir mantık kurmalısınız.
FOR I=1 to 200
   pause 1
   GOSUB TUSBAK
   IF TUS>0 then CIK
NEXT

CIK:
       SELECT CASE TUS
       Case 1
        GOTO BIR
       CASE 2
         Goto IKI
       Case 3
         Goto 3
      end selct
     GOTO BASLA

TUSBAK:
              TUS=0
               TUS=PORTA & %00001111
               RETURN

Inceleyin anlamadığınız yer olursa sorun.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ict06

hocam merhabalar, sizin cevabınızı araştırken dikkat ettim ki ben sizin 10 derslik pbp öğretiniz ile bu işe heveslenip öğrenmeye çalışıyorum, sizinle tanıştığımıza memnun oldum. size ve diğer arkadaşlara teşekkür ederim, select case işlemini araştırdım,d
n yazınızı gönderdikten sonra bu zamana kadar internetten ve kitaplardan araştırmaktayım. lakin ben size pic ile yapmak istediğimin algoritmasını vereyim, olay sanırım bu şekilde daha net aydınlanır. program içresinde dallanmalar, ve beklemeler var, alt programlarda tekrar kontroller var. bu durum benim bünyede zorlanmalara neden oluyor. Bu devrenin analog olarak çalışanını yaptım. halen kullanmaktayım, lakin bu iş dijital olarak nasıl yapacağız ? 2 veya pic mi kullanmamız lazım veya analog olarak roleler mi gerekiyor ? şimdiden çok teşekkür ederim

OTOMASYON

GİRİŞLER                                                                              ÇIKIŞLAR
1- nolu switch                     1-  nolu çıkış (ROLE)
2- nolu switch                     2- nolu çıkış (ROLE)
3- nolu switch                     3- nolu çıkış (ROLE)
4- nolu switch                     4- lamba  (PWM)
5- nolu switch

DEVRENİN ÇALIŞMASI

1.kural 1 nolu switch lojik seviyesi 1 ise program devam edecek, eğer ki sensörun lojik durumu 0 ise hiçbir işlem yapmayacak



2. nolu switch lojik seviyesi 1 olduğu zaman (1 nolu switch 1 ise)       2-nolu role
                                 3-nolu role
                                 4-lamba pwm
Lojik seviyesi 1 olacak
Eğer hiçbir işlem yapılmazsa 30 sn sonra kapanacak
Bu durumu sadece 3 nolu switch ve 4 nolu switch bozabilir


3. nolu switch lojik seviyesi 1 olduğu zaman (1 nolu switch 1 ise)      

Ve 2 numaralı işlem devam ediyorsa                  3-nolu roleyi kapat

Eğer 2 numaralı işlem bitmiş ise ve (1 nolu switch 1 ise)         2-nolu switch
                              3-nolu switch
                              4-nolu switch
Lojik seviyesi 1 olacak
Eğer hiçbir işlem yapmazsa 20 sn sonra kapatanacak

Bu durumu sadece 4 numaralı switch bozabilir



4. nolu switch lojik seviyesi 1 olursa (1 nolu switch 1 ise)
Bütün çıkışları 0 la
1 ve 5 numaralı switchleri kontol et

5 numaralı uc 0 ise sadece 2 numaralı roleyi
5 numaralı uc 1 ise 1 ve 2 numaralı role yi çalıştır

Bu durumu hiçbir şey bozamaz, sadece1, 4 ve 5 numaralı uçlardaki değişiklik bozabilir

(1 numaralı switch lojik 1 ise bunların hepsini yapar. 1 numaralı switch 1 iken 0 olursa 40 sn sonra lojik seviyesi 0 olur)


(lambada pwm ortalık karıştırıyorsa 1-0 olabilir)

ict06

düzeltiyorum

yazım hataları için

OTOMASYON

GİRİŞLER                                                                              ÇIKIŞLAR
1- nolu switch                     1-  nolu çıkış (ROLE)
2- nolu switch                     2- nolu çıkış (ROLE)
3- nolu switch                     3- nolu çıkış (ROLE)
4- nolu switch                     4- lamba  (PWM)
5- nolu switch

DEVRENİN ÇALIŞMASI

1.kural 1 nolu switch lojik seviyesi 1 ise program devam edecek, eğer ki sensörun lojik durumu 0 ise hiçbir işlem yapmayacak



2. nolu switch lojik seviyesi 1 olduğu zaman (1 nolu switch 1 ise)                                                       2-nolu role
                                 3-nolu role
                                 4-lamba pwm
Lojik seviyesi 1 olacak
Eğer hiçbir işlem yapılmazsa 30 sn sonra kapanacak
Bu durumu sadece 3 nolu switch ve 4 nolu switch bozabilir


3. nolu switch lojik seviyesi 1 olduğu zaman (1 nolu switch 1 ise)      

Ve 2 numaralı işlem devam ediyorsa                                                  3-nolu roleyi kapat

Eğer 2 numaralı işlem bitmiş ise ve (1 nolu switch 1 ise)                                         2-nolu role
                              3-nolu role
                              4-nolu lamba (pwm)
Lojik seviyesi 1 olacak
Eğer hiçbir işlem yapmazsa 20 sn sonra kapatanacak

Bu durumu sadece 4 numaralı switch bozabilir



4. nolu switch lojik seviyesi 1 olursa (1 nolu switch 1 ise)
Bütün çıkışları 0 la
1 ve 5 numaralı switchleri kontol et

5 numaralı uc 0 ise sadece 2 numaralı roleyi
5 numaralı uc 1 ise 1 ve 2 numaralı role yi çalıştır

Bu durumu hiçbir şey bozamaz, sadece1, 4 ve 5 numaralı uçlardaki değişiklik bozabilir

(1 numaralı switch lojik 1 ise bunların hepsini yapar. 1 numaralı switch 1 iken 0 olursa 40 sn sonra lojik seviyesi 0 olur)


(lambada pwm ortalık karıştırıyorsa 1-0 olabilir)