massakrienen
Üye
- Katılım
- 26 May 2010
- Mesajlar
- 5
- Puanları
- 1
Arkadaşlar merhaba, pic ile ve CCS C ile ilgili ilk projem. O yüzden detaylı anlatırsanız sevinirim. Projemi özet geçersem; birkaç trafik direğinin ışıklarını kontrol edeceğim. Her direğin her bir lambasının yanıp sönme sürelerini bilgisayardan C#'tan gireceğim. Sağdan soldan araştıra araştıra, sora sora baya ilerledim. Sadece tek sıkıntım kaldı.
Şimdi tek direk için yapabiliyorum, C#'tan aldığım sayıları delay_ms()'lerin içine yerleştiriyorum. Ancak CCS C yukarıdan aşağıya çalışıyor, bu yüzden bir led yanıp sönmeden diğer ledi yakamıyorum. Yani aynı anda iki kırmızı ışığı yakamıyorum. Yada yanması için ikisinin de sürelerinin aynı olması gerekiyor. Direklerin ledleri ile ilgili komutları her direk için {} arasına alıyorum. Özetle tüm {}'lerin aynı anda çalışması için nasıl bir yol izleyebilrim? Teşekkürler.
Kodumun basit hali şu şekilde:
Teşekkürler.
Şimdi tek direk için yapabiliyorum, C#'tan aldığım sayıları delay_ms()'lerin içine yerleştiriyorum. Ancak CCS C yukarıdan aşağıya çalışıyor, bu yüzden bir led yanıp sönmeden diğer ledi yakamıyorum. Yani aynı anda iki kırmızı ışığı yakamıyorum. Yada yanması için ikisinin de sürelerinin aynı olması gerekiyor. Direklerin ledleri ile ilgili komutları her direk için {} arasına alıyorum. Özetle tüm {}'lerin aynı anda çalışması için nasıl bir yol izleyebilrim? Teşekkürler.
Kodumun basit hali şu şekilde:
Kod:
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io (b)
#use fast_io (c)
unsigned long k1=1000;
unsigned long s1=1000;
unsigned long y1=1000;
unsigned long k2=500;
unsigned long s2=500;
unsigned long y2=500;
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00); //tümüyle çıkış olsun
set_tris_c(0x00); //tümüyle çıkış olsun
output_b(0x00); //Sıfırlayalım
output_c(0x00); //Sıfırlayalım
//Direk 1
{
output_high(pin_b0);
delay_ms(k1);
output_low(pin_b0);
output_high(pin_b1);
delay_ms(s1);
output_low(pin_b1);
output_high(pin_b2);
delay_ms(y1);
output_low(pin_b2);
}
//Direk 2
{
output_high(pin_c0);
delay_ms(k2);
output_low(pin_c0);
output_high(pin_c1);
delay_ms(s2);
output_low(pin_c1);
output_high(pin_c2);
delay_ms(y2);
output_low(pin_c2);
}
}
Teşekkürler.