Tek Buton ile Birden Fazla İş

atech21

Üye
Katılım
10 Tem 2010
Mesajlar
2
Puanları
1
ben pic yazmaya yeni başladım.benim sorunum tek buton ile sırasıyla başka etiketlere gitmek.örnek olarak RA pinindeki butona ilk bastığım zaman portbdeki ledler yanacak.2.kez bastığımda ledler sonecek birdaha bastığım zaman ledler yanıp sonecek aynı butona basğım zaman ledler sonecek.bunu yapmaya ğraştım hatta ornekler aradım yinede olmadı.lütfen acil olarak yardım edebilrmsiniz?şimdiden teşekür ederim
 
BUTON NORMALDE 1 BASILINCA 0 OLUYOR,VEYA SENİN BUTONA GORE AYRALARSIN
REPEAT
BTFSS PORTA,PIN
INCF SELECT,F ;BUTONA BASILDI İSE DEĞERİ BİR ARTIR
--------------------------
MOVLW 0X01
SUBWF SELECT,W
BTFSC STATUS,Z
CALL FIRST_SUB
---------------------------
MOVLW 0X02
SUBWF SELECT,W
BTFSC STATUS,Z
CALL SECOND
--------------------------
....
MOVLW 0XFF ;ÇIKIŞ DEĞERİ
SUBWF SELECT,W
BTFSS STATUS,Z
GOTO REPEAT
CLRF SELECT
..................
Kolay gelsin....
 
ben asm bilimiyorum.yukarda söylemeyi unuttum picbasic kullanıyorum.mümkünse basicle olsun yada nasıl yapıldığını soylerseniz yapmya çalışırım
 
ben pic yazmaya yeni başladım.benim sorunum tek buton ile sırasıyla başka etiketlere gitmek.örnek olarak RA pinindeki butona ilk bastığım zaman portbdeki ledler yanacak.2.kez bastığımda ledler sonecek birdaha bastığım zaman ledler yanıp sonecek aynı butona basğım zaman ledler sonecek.bunu yapmaya ğraştım hatta ornekler aradım yinede olmadı.lütfen acil olarak yardım edebilrmsiniz?şimdiden teşekür ederim


Kod:
     trisa.0 = 1
     symbol buton = porta.0
     sayac var byte
     sayac = 0
main:
      pause 1
      if buton = 0 then main ; [I][COLOR="Blue"]butona basılmamışsa başa dön[/COLOR][/I]
      pause 50
      sayac = sayac + 1      ;[I][COLOR="Blue"]basıldıysa sayacı arttır[/COLOR][/I]

secim:
      SELECT CASE sayac
             CASE 1 
                   goto gorev_1   ;[I][COLOR="Blue"]sayac değerine göre uygun etikete git[/COLOR][/I]
             CASE 2 
                   goto gorev_2
             CASE 3 
                   goto gorev_3
             CASE 4 
                   sayac = 1       ;[I][COLOR="Blue"]sayac 3'ü geçtiyse tekrar 1 yap ve[/COLOR][/I]
      END SELECT

      goto secim     ;[I][COLOR="Blue"]1. görev etiketine yollanmak üzere secim etiketine git[/COLOR][/I]

gorev_1:
      (şunu yap)                  ;[I][COLOR="Blue"]ilk basışta yapılacaklar[/COLOR][/I]
      goto main
gorev_2:
      (bunu yap)                  ;[I][COLOR="Blue"]ikinci basışta yapılacaklar[/COLOR][/I]
      goto main
gorev_3:
      (şunu, şunu yap)          ;[I][COLOR="Blue"]üçüncü basışta yapılacaklar[/COLOR][/I] 
      goto main

end

kolay gelsin
 
ccs de yapacaksan tyildizak hocamın yaptığı gibi swich case şartını kullanmak işini çözer. kolay gelsin.
 
ben bu işlemi ccs'de yapmak istiyorum ama daha önce hiç switch case kullanmadım..içiçe if'lerle yapmaya çalıştım,onu da beceremedim..ccs ile switch case kullanarak yapılmış bir örnek verirseniz sevinirim..
 

Forum istatistikleri

Konular
129,190
Mesajlar
924,068
Kullanıcılar
451,553
Son üye
baran.3230

Yeni konular

Geri
Üst