PIC ile sıralı işlem

thefcs

Üye
Katılım
12 Kas 2008
Mesajlar
21
Puanları
1
Yaş
40
Merhaba arkadaşlar,

Bir uygulama için sıralı şekilde 3 tane butona basılıp baslımadığını kontrol etmem gerekiyor.

1 numaralı butona basıldıktan 1-2 sn icinde 2 numaralıya ardından tekrar 1-2sn ıcınde 3 numaralı butona baslıp basılmadığını kontrol etmem gerekiyor bu eger belirlenen zaman dilimleri icerisinde basılmaz ise ikaz lambasını yakmak istiyorum.


Bu sistemi PLC ile yapabilirim fakat maliyeti dolayısı ile PİC ile yapmayı düşünüyorum bu sistemi PIC ile yapabilirmiyim.
 
evet yapabilirsin ama yazacağın programın algoritmasını iyi tasarlaman gerekiyor
 
kardeş bunu zaman kesmesi kullanarak yapabilirsiniz. zaman kesmesi birinci butona basıldıktan sonra başlasın, eğer iki saniye içinde diğer butona basılmazsa istediğin işlemi yaptırabilirsin. bu zaman kesmelerini eğer butona basılırsa iptal ettir. sonraki buton için yeni bir zaman kesmesi başlatırsın. aynı şekilde zaman kesmesi süresi dolmadan istenilen butona basılırsa istediğin işlemi yaptırırsın.

anlatması, yapmaktan zor. maalesef türkçeyi verimli olarak kullanamıyorum.
 
yardımcı olayım ben bir program yazdım umarım işinize yarar.yazdığım programın algoritması şöyle şimdi ilk butona basılıp basılmadığını kontrol ediyor basılmışsa 1sn bekliyor.2.butona basılıp basılmadığını kontrol edip 1sn bekliyor.3.butona basılıp basılmadığını kontrol edip 1 sn bekliyor.hiç bir butona basılmamışsa ledi yakıyor.

Kod:
[COLOR="Red"][B]LIST P=16f84A

STATUS EQU 0X03
PORTA EQU 0X05
TRISA EQU 0X85
PORTB EQU 0X06
TRISB EQU 0X86
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
SAYAC3 EQU H'0E'

ORG 0X00

BASLA
CLRF PORTA
CLRF PORTB //portb yi olumsuz koşullara karşı temizledik.
BSF STATUS,5//bank 1 e geçtik
CLRF TRISA//porta çıkış seçtik
MOVLW H'FF'
MOVWF TRISB //portb yi giriş seçtik

TEST_PORTB

BTFSS PORTB,0 //portb nin 0.biti 1se atla yoksa 1 olana kadar bekle
GOTO TEST_PORTB
CALL BEKLE1
BTFSS PORTB,1 //portb nin 1.biti 1se atla yoksa 1 olana kadar bekle
GOTO TEST_PORTB
CALL BEKLE1
BTFSS PORTB,2 //portb nin 2.biti 1se atla yoksa 1 olana kadar bekle
GOTO TEST_PORTB

LED_KONTROL

MOVLW 0X00 // w registerine 0 yükledik
XORWF PORTB,W //portb ile w registerinı karşılaştırdık.yani hiç bi butona basılmadığını kontrol ettik.
BTFSS STATUS,2
GOTO LED_KONTROL

LED_YAK

BSF PORTA,0

DONGU
GOTO DONGU

BEKLE1

MOVLW H'05'
MOVWF SAYAC1

DON1

MOVLW H'FF'
MOVWF SAYAC2

DON2

MOVLW H'FF'
MOVWF SAYAC3

DON3

DECFSZ SAYAC3,F
GOTO DON3
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
[/B][/COLOR]
 
1. butona bastıktan sonra 2. butona basmak için geçecek süre bilirli mi ? yani birkaç milisaniye sonrasıda olabilir mi? Eğer butonlar arası basma süresi 1 sn yenin altında olabileceği durumlar oluşursa bu yukarıdaki arkadaşın yazdığı program sağlıklı çalışmaz. Bekleme yaparken sen butona basarsan ve pic 2 . butonu test etmek için porta bakana kadar sen elini butondan çekersen pic butona basılmadığını anlar ve kendine göre doğru sana göre hatalı olan çıkışı verir. Buna açıklık getirirsen değişik program düşünülebilir tekrar yazabiliriz. Hatta her ihtimale karşı yazmayı deneyelim :)
 
Merhaba arkadaşlar,

Bir uygulama için sıralı şekilde 3 tane butona basılıp baslımadığını kontrol etmem gerekiyor.

1 numaralı butona basıldıktan 1-2 sn icinde 2 numaralıya ardından tekrar 1-2sn ıcınde 3 numaralı butona baslıp basılmadığını kontrol etmem gerekiyor bu eger belirlenen zaman dilimleri icerisinde basılmaz ise ikaz lambasını yakmak istiyorum.


Bu sistemi PLC ile yapabilirim fakat maliyeti dolayısı ile PİC ile yapmayı düşünüyorum bu sistemi PIC ile yapabilirmiyim.

arduino kullanarak pcb maliyetindende kurtulabilirsin
 

Forum istatistikleri

Konular
129,906
Mesajlar
931,206
Kullanıcılar
452,789
Son üye
yigitt.m
Geri
Üst