Buton ile değişkeni ayarlamak

Başlatan yolcu27, 05 Kasım 2017, 18:02:05

yolcu27

Merhabalar bir led animasyon düzenledim kayan ledler düşünün sıra ile soldan sağa kayıp sonra baştan başlıyor. Ve bunun pause sürelerini porta.0 ile değiştirmek istiyorum. Bu pause kısmını gosub return ile yaptım ve bu bekleme kısmında hem bekleme yapmasını istiyorum hemde porta.0 ile bekleme değişkenini değiştirmek istiyorum. Şuan telefonda olduğum için kod ekleyemedim.
....
Delay var word
.

Delay=200

Basla:
portb=%10000000
Gosub bekle
Portb=%01000000
Gosub bekle
.
.
.
.

Goto basla
Bekle:
..
..
.

Return


Bu bekle etiketi içine ne yazmak lazım butona basınca delay

ete

Bir INDEX (WORD) değişkeni tanımlarsın. Açılışta ona default bir değer verirsin. Mesela 100 gibi.
Sonra bekle kısmında;
BEKLE:
IF PORTA.0=0 then
  INDEX=INDEX+50
  IF INDEX=2000 THEN THEN INDEX=100  '2000 değerine ulaşınca tekrar default değeri verirsin.

  PAUSE INDEX
RETURN

Şeklinde olur.
Ete

yolcu27

Peki hocam bu pause index bölümde program tuşa basıldığını algilamaz sanırım. Bu pause kısmınıda  tekrarlayan işlemler ile yapsak. Mesela
For x=1 to 5
Pause index/5
İf porta.0=1 then
İndex=İndex+100
Endif
İf İndex=1000 then İndex=100

Next

Return


Bu şekilde olur mu bekleme süresi içinde yine butonu algılamasını istiyorum da çok uzun süreler olmayacak normalde İndex=1000 olacaktır en fazla

Kusura bakmayın dediğim gibi telefondan yazarak aklımdaki soruların cevaplarını bulmaya çalışıyorum

ete

O zaman bekleme döngüsü yaratıp içine buton kontrolünüde aklamak gerekir.
temp=index
For X=0 to Index
If porta.o=0 then
  Temp=Temp+100
   If temp=1000 then temp=100
Pause 1
Next
Index=temp
Return

yolcu27


@ DEVICE pic16f84 'işlemci pic16f84 
@ DEVICE pic16f84, WDT_on 'Watch Dog timer kapalı 
@ DEVICE pic16f84, PWRT_OFF 'Power on timer açık 
@ DEVICE pic16f84, PROTECT_OFF 'Kod Protek kapalı 
@ DEVICE pic16f84, XT_OSC 'Dahili osilatör kullanılacak
DEFINE OSC 4
trisa=%00000001 ' a portu çıkış  porta.0 giriş
trisb=%00000000 ' b portu çıkış
porta=0         ' porta sıfıra
portb=0         ' portb sıfırla

index var word
temp var word
temp =50
index=50

x var word

pause 200
x=0


basla1:
portb=%10000000  : Porta=0
gosub delay1
portb=%01000000  : Porta=0
gosub delay1
portb=%00100000  : Porta=0
gosub delay1
portb=%00010000  : Porta=0
gosub delay1
portb=%00001000  : Porta=0
gosub delay1
portb=%00000100  : Porta=0
gosub delay1
portb=%00000010  : Porta=0
gosub delay1
portb=%00000001  : Porta=0
gosub delay1
portb=%00000000  : porta=%00001000
gosub delay1
portb=%00000000  : porta=%00000100
gosub delay1
portb=%00000000  : porta=%00000010
gosub delay1


goto basla1

delay1:
temp=index
For X=0 to Index
If porta.0=1 then
  Temp=Temp+50
  If temp=500 then temp=50
   endif
   
Pause 1
Next

Index=temp
Return





oldu gibi bir hata gözlemliyor musunuz?

bu arada teşekkür ederim



ete

Bir hata görünmüyor. Olması gerek.
Ete

Powered by EzPortal