Arkadaşlar yardım ederseniz sevinirim, sürmem gereken 4 transistör var. Bunlar sırasıyla 1. transistör 1 sn. sonra 2. transistör 1 sn sonra tekrar 1. transistör ve 1sn sonra 3.transistör sürülecek (basamak 1) 2 sn sonra tekrar 1.transistör tekrar sürülecek bu işlem (basamak 1) 39 defa yapıldıktan sonra 4.transistör sürülecek ve işlem bitecek. Tekrar en başa dönecek. Fakat transistörlerin sürülmeside en az 1 sn gerçekleşecek. Yardımlarınız için şimdiden teşekkürler...
Meraba! Sitede gezerken senin sonunla karşılaştım; bi bakayım dedim. Sorununu çözmenin çok basit birkaç yolu var... Burada sa biraz bahsadicem, gerkli hesaplamaları artık kendin yaparsın. Şuan sana saceca nasıl kontrol edebileceğin hakkında biraz bilgi verecem gerisi sana ait... Kullanacağın devre konusunda çok geniş seçeneğinvar:
Mesela en basit 16F84(A) entegresi yada 16F628 olabilir. (Neredeyse bütün PIC entegrelerinde çalışır...)
Anladığım kadarıyla PIC ile pekte aran yok diye düşünüyorum oyüzden çook basit anlatıcam... İlk aklıma gelen (tek bir PIC chipi kullanarak yapman) mantığı aşırı basit ama bira uğraşmak gerektiren bir program yapman. (not: Eğer uyarlama yapmazsan program; açılır açılmaz bu işi yapacak, işini daha iyi görmesi için mutlaka değişiklik yap. Zaten gerekli değişiklileri yapmadan çalışmaz (KOPY/PASTE ile yaparsan) ).
Assenbly dilini kullandınığı umarak başlayalım:
İlk önce çıkışları ayarlaman lazım, ben kolay olsun diye "b" portunu kullanacam... (programı direk can alıcı noktadan yazacam sen istediğin gibi kullanırsın)
__________________________________________
PROGRAM
INCF ASAMA, F
MOVF ASAMA, W
ANDLW B'00111111' ;artık nekadar aşaması varsa okadar genişlet)
CALL TABLO
MOVWF PORTB ; çıkış sayı sı nedeniyle portb yi seçtim)
CALL SYN
GOTO PROGRAM
TABLO
ADDWF PCL, F
RETLW B'XXXXXXXX' ; "X" yerine artık hangi transistöre akım vereceksen "1" yap diğeleri "0"
RETLW B'XXXXXXXX' ; Bir sonraki durumda ne yapacağını yaz
RETLW B'XXXXXXXX' ; Bir sonraki durumda ne yapacağını yaz
RET...
...
.
;Buraya kekadar aşama koyacaksan yaz
CLRF ASAMA
GOTO PROGRAM
SYN
;Buraya klasik bir gecikme programı yazacaksın... AMA kodların çalışması için geçen süreyi hesapyayıp ona göre hazırlamalısın yoksa zamanl ilgili işin olmaz (unutma kullandığın osilatörün 4 te birinde geçekleşir bu bir işlem süresine denk gelir) goto, call, retlw, return, decfsz (eğer register içindeki değer "0" ise komutu 2 işlem süresi ister (kı
END
;______________________________________________
İşin sorduğun tarafının bukadar olduğunu düşünüyorum
İkinci olarak; eğer "ben saymakla uğraşmak istemiyorum diyorsan bir devreye daha ihtiyacaın olacak en basit "LM555" entegresi var yada kendin birtane yap yada başka enterede olur amaç 1 snlik osilatör takman)
SYN başlığı altına yazacağın stripti bunla geğiştir:
__________________________
SYN
BTFSX PORTY, Z ; "Y" yerine artık hangi portu kullanacaksan onu yaz
; "X" yerine "1" demi "0" damı ilerleyeceğini yaz
; "Z" yerine hangi bacağı kullanacksan
GOTO SYN
RETURN
__________________________________
(not:kullanacağın enteğreye ve bacağa dikkat et anolok olarak çalışıyorsa hep hendini "1" görür...)
--------------------
Çok aşırı basit bir devre; niye bukadar uzattım diye kendime kızıyorum ama işine yarayacaksa ne ala...
Ama eğer senin sorunu yanlış anladıysan ve binary olarak transitörleri sürmek istiyorsan yukarıda "ASAMA" diye yazdığım adresi "MOVLW PORTX" olarak geğişti (x yine kendin yazamn için)
Gözümden kaçan yazım hatası olduysa kusuruma bakmayın prgramı ve yazıyı kontrol edemediğim için üzgünüm :cry: ( İstediğin herşeyi yazdığımı umarak iyi şanslar direrim .)
Selam mesajını yeni gördüm ağımda sanırım bir sorun vardı. İlk olarak pic le aram eskiden vardı şu sıralar ne dökümanım var nede başka kaynağım işin aslı evden uzağım programını deneyemedim ama eminim çalışır. Eğer mümkün olursa senden yeni bir ricam var ben picle zamanlama yapmak istiyorum bu mümkün müdür? Yapmam gereken yine aynı şekilde 4 rolem var ilk olrak 1. role 2 dakika sonrada 2. roleyi sürmem gerek fakat bu arada 3 ve 4. rolenin de bu 2 dakika içersinde 8 tur yapması gerek. Bu tur 13 sn 3 role sürülecek daha sonra da 1 sn ile 4 role bu bir tur yapacak 8 defa bu işlem tekrarlandıktan sonra 1 role bırakcak ve 2. role sürülecek ve tekrar olay başa dönecek şimdiden ilgin için sağol...İyi çalışmalar...
Arkadaş yapmak istediğin çok basit bişey ama time durumları tam net yazılmamış.
Sen şöyle yazarsan daha kolay anlaşılır ve hemen çözüm gelir.
Başla
R1=1 R2=1 R3=0 R4=1
x saniye bu durumu koru sonra
R1=1 R2=0 R3=0 R4=1
gibi. Yani başlattık, R1, R2, R4 ü yaktık. x saniye sonra R2 yi söndürdük şeklinde alt alta yazarsan hemen çözüm bulursun.
Zaten aslında böyle yaptığında programı yazmış sayılırsın.