mobilspy
Üye
- Katılım
- 13 Eki 2006
- Mesajlar
- 122
- Puanları
- 1
- Yaş
- 45
arkadaslar 16f84 ile tekbuton kullanarak bir step motor kontrol etmek istiyorum
devrenin çalışması:
butona basıldıgında motor sag yöne 16 adım donecek ve buton basılı oldugu surece duracak buton basılması kesildiginde tekrar ilk konumuna yani sola 16 adım donecek ancak 16 adım dolmadan misal 7. adımda buton basılması kesilirse 7 adım geri donmesini istiyorum.
bunun için asagıdaki kodu hazırladım ama bi sorunum var bundada ilk calıs etiktindeki for..next döngüsünü
( FOR X=0 TO 10 STEP 1) yapıp (x=x+1) satırını sildiğimde program çalışmıyor aşagıdaki şekilde çalışıyor fakat ileri çalışırken ikişer ikişer atlıyor geri tek tek dönüyor. bir yorumu olan varmı acaba
denemek isterseniz isis dosyası ekte:
devrenin çalışması:
butona basıldıgında motor sag yöne 16 adım donecek ve buton basılı oldugu surece duracak buton basılması kesildiginde tekrar ilk konumuna yani sola 16 adım donecek ancak 16 adım dolmadan misal 7. adımda buton basılması kesilirse 7 adım geri donmesini istiyorum.
bunun için asagıdaki kodu hazırladım ama bi sorunum var bundada ilk calıs etiktindeki for..next döngüsünü
( FOR X=0 TO 10 STEP 1) yapıp (x=x+1) satırını sildiğimde program çalışmıyor aşagıdaki şekilde çalışıyor fakat ileri çalışırken ikişer ikişer atlıyor geri tek tek dönüyor. bir yorumu olan varmı acaba
Kod:
TRISA=1
TRISB=0
PULS VAR BYTE
X VAR BYTE
Y VAR BYTE
PULS=0
PORTB=%00000001
X=0
Y=0
BASLA:
button PORTA.1, 1, 255,255,PULS,1,CALIS
GOTO BASLA
CALIS:
FOR X=0 TO 16
x=x+1
gosub TABLO
IF PORTA.1=0 THEN GOTO DUR
PAUSE 500
NEXT X
GOTO BEKLE
BEKLE:
IF PORTA.1=1 THEN GOTO bekle
GOTO dur
DUR:
Y=X-1
FOR Y=Y TO Y=0 step -1
GOSUB TABLOY
IF PORTA.1=1 THEN GOTO BASLA
PAUSE 500
NEXT
GOTO BASLA
TABLO:
SELECT CASE x
CASE 1
PORTB =%00000001
RETURN
CASE 2
PORTB =%00000011
RETURN
CASE 3
PORTB =%00000010
RETURN
CASE 4
PORTB =%00000110
RETURN
CASE 5
PORTB =%00000100
RETURN
CASE 6
PORTB =%00001100
RETURN
CASE 7
PORTB =%00001000
RETURN
CASE 8
PORTB =%00001001
RETURN
CASE 9
PORTB =%00000001
RETURN
CASE 10
PORTB =%00000011
RETURN
CASE 11
PORTB =%00000010
RETURN
CASE 12
PORTB =%00000110
RETURN
CASE 13
PORTB =%00000100
RETURN
CASE 14
PORTB =%00001100
RETURN
CASE 15
PORTB =%00001000
RETURN
CASE 16
PORTB =%00001001
RETURN
CASE IS > 16
PORTB =%00001001
RETURN
CASE ELSE
PORTB =%00000001
END SELECT
TABLOY:
SELECT CASE Y
CASE 1
PORTB =%00000001
RETURN
CASE 2
PORTB =%00000011
RETURN
CASE 3
PORTB =%00000010
RETURN
CASE 4
PORTB =%00000110
RETURN
CASE 5
PORTB =%00000100
RETURN
CASE 6
PORTB =%00001100
RETURN
CASE 7
PORTB =%00001000
RETURN
CASE 8
PORTB =%00001001
RETURN
CASE 9
PORTB =%00000001
RETURN
CASE 10
PORTB =%00000011
RETURN
CASE 11
PORTB =%00000010
RETURN
CASE 12
PORTB =%00000110
RETURN
CASE 13
PORTB =%00000100
RETURN
CASE 14
PORTB =%00001100
RETURN
CASE 15
PORTB =%00001000
RETURN
CASE 16
PORTB =%00001001
RETURN
CASE IS > 16
PORTB =%00001001
RETURN
CASE ELSE
PORTB =%00000001
END SELECT
END
denemek isterseniz isis dosyası ekte: