Elektronik ve Teknoloji Merkezi Elektrotekno.com
Elektronik ve Teknoloji Merkezi




Click here to go to the original topic

Elektrotekno.com Ana Sayfa Microchip Pic Serisi
Yazar Mesaj
mancho67
Tarih: 02.03.2007, 17:29 Mesaj konusu: picle ileri geri motor kontrolü

arkadaşlar 16f84 ile AC motor kontol etmek istiyorum. örneğin A0 pini lojik 1 ise

portb=%00111000 olsun

eğer A0 pini lojik 0 ise ;

portb=%00000111 olsun

istiyorum. bunu yaptım ama ben A0 değiştiği zaman B portunu lojik 0 yapıp 1 saniye beklemesini ondan sonra yukarıdaki durum değişikliğini yapmasını istiyorum. fakat bunun mantığını bir türlü kuramadım. yardımcı olursanız sevinirim herkese kolay gelsin . . .
-----------------------------------------------------

ete
Tarih: 02.03.2007, 18:42 Mesaj konusu:

Sorunu cevabı şöyle olabilir

basla:
if PortA.0=1 then
pause 100
if degistir=0 THEN
degistir=1 ' degistir VAR bit cinsinden bir değişken olmalı
portb=0
pause 1000
portb=%00111000
goto basla
endif
endif
if degistir=1 then ' burada PORTA.0=0 olmuş olacak ve şayet PORTA.0=1 olduktan sonra buraya gelinmiş ise
degistir=0
portb=0
pause 1000
portb=%00000111
endif
goto basla
end

Hepsi bu kadar. Umarım istediğin gibi olmuştur.
Burada degistir isimli bir bit bazında değişken kullandık. Sebebi. PortA.0 bir kere HIGH olursa ve tuşu bırakmadan tekrar HIGH da kalırsa aynı işi tekrar yapmasın program diye koydum.
Birkere PortA.0 HIGH oldumu program , PortB yi sıfırlayacak 1 sn bekleyecek ve sonra PORTB=%00111000 komutunu icra edecektir. Bu komutdan sonra portA.0 LOW oluncaya kadar tekrar aynı komut dizisi icra edilmeyecektir. Aynı husus PORTA.0 pininin LOW olması içinde geçerlidir.

ETE
mancho67
Tarih: 02.03.2007, 19:52 Mesaj konusu:

ete kardeş gönderdiğin kodlarda şöyle bi sıkıntım oldu. ilk kez portA değişTiğinde düzgün çalışyor ama 2. kez portA değiştiğinde flip-flop gibi sürekli portB durum değiştiriyordu. ben biraz uğraştım şu şekilde değiştirdim senin programını ve yapmak istediğimin büyük kısmını yardımların sayesinde yaptım. ama şimdi burda da ilk anda portA lojik 1 ise hemen algılayamıyorum bunu. yani belli bir gecikme oluyo.gecikmeden ziyade sanki portA lojik 0 gibi algılanıp, portB o şekilde çıkış veriyo başlangıçta. ama kısa bir süre sonra portA nın lojik 1 olduğunu algılıyo. bu konuda ne yapabilirim acaba?bir de ilk açılışta PORTB.7 de lojik 1 oluyo çok ilginç anlayamadım bi türlü. teşekkür ederim kolay gelsin . . .
GÜRKAN ÇELİK
TRISA=%11111
TRISB=%00000000

degisim var bit

basla:
if PortA.2=1 then
portb=0
pause 100
if degisim=0 THEN
degisim=1
portb=0
pause 1000
portb=%00111000
goto basla
endif
endif
IF PORTA.2=0 THEN
portb=0
PAUSE 100
if degisim=1 then
degisim=0
portb=0
pause 1000
portb=%00000111
goto basla
endif
ENDIF
goto basla
end
ete
Tarih: 02.03.2007, 21:24 Mesaj konusu:

Birde aşağıdaki kodu dene. Aslında kod doğru çalışıyor ancak PortB ye değer verildikten sonra bir pause koymadığımız için anında portB sıfırlanıyor.


ETE


portA=0
Portb=0
TRISA=%00011111
TRISB=%00000000

degistir var bit

BASLA:

if PortA.0=1 then
pause 100
if degistir=0 THEN
degistir=1 ' degistir VAR bit cinsinden bir değişken olmalı
portb=0
pause 1000
portb=%00111000
pause 500
goto basla
endif
endif

if degistir=1 then ' burada PORTA.0=0 olmuş olacak ve şayet PORTA.0=1 olduktan sonra buraya gelinmiş ise
degistir=0
portb=0
pause 1000
portb=%00000111
pause 500
endif
goto basla
end
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 1 sayfa)

picle ileri geri motor kontrolü

Gizlilik Politikası

PLC programming