avatar_kotan04

buton komutu

Başlatan kotan04, 20 Aralık 2012, 22:21:28

ferruh

hocam devreyi kurdum yine bir sıkıntı var 1 buton birinci ledi yakıyor sorun yok 4 buton 3 cü ledi yakıyor ondada sorun yok 2 ve 3 te tek basıldıgında yıne 1 ve 3 yanıyor ama 2 ve 3 cu butona basılınca hepsı yanıyor sadece 2 cı led yanması gerekıyor benım oncekı sorunum da oydu neden  1ıle 3 cu led de devre ye gırıyor.teşekkürler.

ete

Aşağıdakini dene o zaman. Sıralama hatasıdır bu.

IF BUTON1=0 then LED1=1
IF BUTON2=0 THEN
    IF BUTON3=0 THEN
      LED2=1
    ELSE
      LED1=1
    ENDIF
ENDIF
IF BUTON3=0 or BUTON4=0 THEN LED3=1   


ete

ferruh

hocam yıne olmadı.yer degıstırdım falan yıne hep bırlıkte yanıyor yada 1den 2ye dogru kayarak yanıyor..
baska turlu olsa.
  porta nın tamamını görup aynı anda olsa??
şöyleki..

  if porta=%11111001 tehn portb=%00000010
seklınde denesek

ete

#18
programı ve varsa simulasyonu yolla bakayım.
Ayrıca bir kere daha aşağıdakini dene bakalım.
ETE


IF BUTON1=0 then
  LED1=1
  WHILE BUTON1=0:WEND
  PAUSE 50
ENDIF

IF BUTON2=0 THEN
    IF BUTON3=0 THEN
      LED2=1
    ELSE
      LED1=1
    ENDIF
  WHILE BUTON2=0 OR BUTON3=0:WEND
  PAUSE 50
ENDIF
IF BUTON3=0 THEN  OR BUTON4=0 THEN
   LED3=1   
  WHILE BUTON3=0 OR BUTON4=0:WEND
  PAUSE 50
ENDIF

Ete

F®T

#19
IF BUTON1=0  OR  BUTON2=0 and led2=0 THEN  LED1=1
IF BUTON2=0  AND  BUTON3=0 then LED2=1
IF BUTON3=0 or BUTON4=0 and led2=0 THEN LED3=1


ete hocam bu şekil olmazmi acaba.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ferruh

hocam denedim  simdi 2 buton a aynı anda basılınca led 2 yanıyor fakat takılıp kalıyor sönmüyor.
Diğer 1. butona basılınca 1, 2. buton ada 1 yanıyor sorun kalktı.ben bıraz ilave  yaptım o yazdıklarınız uzerınde kontrol edermisiniz. Birde  DEFINE OSC 4 yazdıgımızda 4mhz krıstalle 12 mhz yazılınca 12 mhz ıle calısması gerekmıyormu.? kurdugum devrede 12 mhz krıstal kullandım yukleme cıhazı 4mhz calısmadı
DEFINE OSC 12 mhz yapmıstım sonra tekrar deneme ıcın 4 mhz ye döndum

     IF BUTON1=0 then
  LED1=1:PORTB.5=1 :PAUSE ZAMAN2
  ELSE
  LED1=0 :PORTB.5=0
           IF BUTON2=0 THEN
           LED1=1:PORTB.5=1
           ELSE
           LED1=0 :PORTB.5=0
           ENDIF
           ENDIF
IF BUTON2=0 THEN
IF BUTON3=0 THEN
LED2=1:PORTB.6=1:PAUSE ZAMAN3
ELSE
LED2=0:PORTB.6=0
ENDIF
ENDIF

       IF BUTON3=0 then
       LED3=1:PORTB.7=1
       ELSE
       LED3=0 :PORTB.7=0
           IF BUTON4=0 THEN
           LED3=1:PORTB.7=1 :PAUSE ZAMAN2
           ELSE
           LED3=0 :PORTB.7=0
           ENDIF
           ENDIF
   
bırde buton yerıne peryot ıcınde tusun basılı oldugu anlık sureyı sayarak sayılan sayı adetı ıstedıgımız sayı olunca ledı yaktırsak ve ıkıncı sayma ısınde sayı tutmuyorsa sönse böyle sartlı bır ıslem ıcın örnek verırmısınız.? ben onun üzerindede çalısayım..teşekkürler


ferruh

syn.F.T  denedim hoş fakat tusa basılınca yanacak ama bırakınca sönecek yanan led yanıp kalıyor.bırde hos olan bırıncı tustan basarak sırayla yanıyorsa resetlenınce 4 tustan basarak denedıgımdede o sırayla yanıp kalıyor. 2 nın yanma surası 100ms gıbı bekleterek söne bılır ama dıgerlerı buton bırakılınca sönmeli yada ark sorunu olmayacak kadar beklıye bılır.ama güzel ve kısa olmus.sizede cok tesekkurler. katkılarınızdan dolayı.

F®T

#22
IF BUTON1=0  OR  BUTON2=0 and led2=0 THEN  LED1=1
IF BUTON2=0  AND  BUTON3=0 and LED1=0 and LED3=0 then LED2=1
IF BUTON3=0 or BUTON4=0 and led2=0 THEN LED3=1


bu şekilde deneyin.simüle edemediğim için dediklerinizi göremiyorum.programı ve simülasyonu yüklerseniz bakabilirim.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ferruh

Syn F.T önceki yazdıgınızda led 2 tamam dı bunda hıc yanmadı.ayrıca bırıncı yazılan benım ıstedıgımı daha ıyı yaptı.ayrıca söyle ilave yaptım calısmaya calısıyor ama mantıgında sorun varmı??

IF BUTON1=0  OR  BUTON2=0 and led2=0 THEN  LED1=1:PORTB.5=1
:PORTB.7=0:LED3=0
IF BUTON2=0  AND  BUTON3=0 then LED2=1:PORTB.6=1             
:LED1=0 :LED3=0:PORTB.7=0:PORTB.5=0 :pause zaman2 :LED2=0 :PORTB.6=0
IF BUTON3=0 or BUTON4=0 and led2=0 THEN LED3=1 :PORTB.7=1:PORTB.5=0:LED1=0

sizin yolunuzdan giderek ilave yaptım.hemen hemen ıstedıgım oldu gıbı dönguden dolayı sanırım o aksamalarda.ben bırazda porta nın tamamını görup karar verecek portb'yide o sekilde yönlendırecek dıye dusundum. bırde ete hocamıza sordum ama bu ıslemın aynı sekılde 4 porttan buton yerıne kare dalga signal verıp saydırarak ıstenılen degısken elde edılınce sayılan degıskene atılıp ona göre karar vermesı saglanırmı.okuma ısını hangı komutla yapmamız gerekıyor orada takıldım.(count,pulsın,gibi).tesekkurler.

ferruh

dikkatimden kaçmış özür dilerim.
programı gönderdim simülasyon yok deney bordum var orda deniyorum..
sağolun.

F®T

#25
Program herkesin farklı düşünceleri ile oluştuğu için pek bişi söyleyemiyorum.ama senin isstediğin gibi çalışıyorsa sorun yok demektir. ;D

diğer konuda tabiki bir sayıcı yaparsın.değişken sayar .değişkenin aldığı değer hangi porta yada port durumuna eşlenirse o durum oluşur.

say=say+1
if say=1 then portb=%00001111
if say=2 then portb=%01010101
..
..
.
ıf say=8 then portb=%0000000

gibi olabilir.istediğin sayıya istediğin durumu bu şekil yükleyebilirsin.

yada  aşağıda verdiğin misale göre giriş olarak tanımladığın portun durumuna göre çıkış portuna durum oluşturabilirsin.

if porta=%00000001 then portb=%00001010 bu binary olarak.buda desimal olarak  if porta=1 then portb=10


"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ferruh

daha önceki yazdıklarımıza şöyle olurmu.
if PORTA=%11111110 then  PORTB=%00100001
if PORTA=%11111101 then  PORTB=%00100001
if PORTA=%11111001 then  PORTB=%01000010
if PORTA=%11111011 then  PORTB=%10000100
if PORTA=%11110111 then  PORTB=%10000100
  şeklinde.gerçi yükledim ama butona basınca hiç tepki vermedi.?!

ete

#27
Ferruh,
İstediğin şekli tam olarak açıklayamadın gibi geliyor bana. Mesela tuşu bırakınca ledlerin sönmesi gerektiğini söylemedin.
Mesajlarına bakarsan yalnızca yanma konumunu açıklamışsın.
Benim yazdığım kod'un kesin çalışacağını düşünüyorum. Sönme durumunuda ilave edince aşağıdaki şekil ortaya çıkıyor.
Dene bakalım.
IF BUTON1=0 then
  LED1=1
  WHILE BUTON1=0:WEND
  PAUSE 50
  led1=0
ENDIF

IF BUTON2=0 THEN
    IF BUTON3=0 THEN
      LED2=1
    ELSE
      LED1=1
    ENDIF
  WHILE BUTON2=0 OR BUTON3=0:WEND
  PAUSE 50
  led1=0:led2=0
ENDIF
IF BUTON3=0 THEN  OR BUTON4=0 THEN
   LED3=1   
  WHILE BUTON3=0 OR BUTON4=0:WEND
  PAUSE 50
  led3=0
ENDIF

Ayrıca bazı durumlarda her şeyi bir anda göremezsin. Bu konuda simulasyon çok yardımcı olur ve kusuru anında görür ve nereye müdahale edeceğini anlarsın. Bu bakımdan programın en azından butonla ilgili kısmını ve simulasyon dosyasını buraya koyarsan sorunun anında çözülecektir.

Ete

ferruh

sevgili hocam ete
simülasyon işini nasıl yapacam bilmiyorum beni bu konuda yönlendirirmisiniz.Eğer öğrenirsem yapmak istediklerim konusunda hem iyi yardım alırım hemde başarı oranımız yükselir diye algılıyorum.Hocam su son yazdığınız kodu yine denedim orta led yine yanmıyor deney bordun da deniyorum bu denemeleri.ben butonlara tam aynı anda basamıyor olabilirmiyim.!?
  WHILE BUTON1=0:WEND
  PAUSE 50 hocam buveri ark söndürmede mi kullanılıyor.? sizin derslerinizde button diye bir bölüm vardı sanki orada daha farklıdı
button pin ,butonun basılıncaki durumu,butonun basılı olduğu sürenin belirlenmesi,tekrar süresi,butonun basılı kaldığı süre ,butonun işlem yapılması için aldığı sart olan durumu,ve o durm da dallanacagı adres seklınde hatırlıyorum. bu ısı burada kullanabılırmıyız bu bıraz karısık bır durum ama ..

ferruh

hocam programı bord ta denemiştim 2 led yanmıyordu ama devrede sorunsuz çalıştı sanırım yine bord üzerinde ki  2 ve 3 tuşa aynı zamanda basamadığımdan olmuş.sizi yorduğum için kusura bakmayın.cok teşekkür ederim

Powered by EzPortal