karaapak
Profesyonel Üye
- Katılım
- 2 May 2011
- Mesajlar
- 1,933
- Puanları
- 507
- Yaş
- 36
Hangi mikrodenetleyici olduğunu söylememişsin 12F675 için örnek mikroc konfigurasyon ayarı şu şekilde:
16F877 kullanıldığını varsayalım,
4 Adet led
Led0 PORTB0
Led1 PORTB1
Led2 PORTB2
Led3 PORTB3 e bağlı olsun.
Led Anod ları mcu pinine bağlı yani öcu çıkışı 1 high 5V olduğunda led yanıyor olsun.
Buton1 PORTB4
Buton2 PORTB5 e bağlı olsun.
Butona basıldığında mcu pinine High 5V geliyor olsun.
}
1)LEDli bir uygulama geliştimeniz istenmektedir. Bu uygulamada 4 adet LED ve 2 adet buton kullanılacaktır. Birinci butona basıldığında bütün LEDler yanıp sönecektir. İkinci butona basıldığında ise LEDler sıra ile yanacaklar ve hepsi yandıktan sonra hepsi sönecektir.
NOT:LEDler arasındaki yanıp sönme aralığı zaman gecikme süresi isteğinize bağlı olarak ayarlanabilir.
16F877 kullanıldığını varsayalım,
4 Adet led
Led0 PORTB0
Led1 PORTB1
Led2 PORTB2
Led3 PORTB3 e bağlı olsun.
Led Anod ları mcu pinine bağlı yani öcu çıkışı 1 high 5V olduğunda led yanıyor olsun.
Buton1 PORTB4
Buton2 PORTB5 e bağlı olsun.
Butona basıldığında mcu pinine High 5V geliyor olsun.
}
Kod:
ANSEL = 0x00;
CMCON =0x07;
TRISB = 0b00110000//Ledler için pinleri çıkış 0, butonlar için giriş 1 yapmalıyız.
while (1){
if(PORTB.F4 == 1) //Buton1 e basıldıysa
{
Delay_ms(100); //Buton arkı için bekle
while(PORTB.F4 == 1);//Butondan el çekilene kadar bekle
PORTB = 0x0F; //4 ledde yansın
Delay_ms(1000); //1 saniye yanık kalsın
PORTB = 0x00; //bütün ledler sönsün
}
if(PORTB.F5 == 1) //Buton2 ye basıldıysa
{
Delay_ms(100); //Buton arkı için bekle
while(PORTB.F5 == 1);//Butondan el çekilene kadar bekle
PORTB.0 = 1; // led1 yansın
Delay_ms(1000); //Led1 1 saniye yanık kalsın
PORTB.1 = 1; //Led2 yansın
Delay_ms(1000); //Led2 1 saniye yanık kalsın
PORTB.2 = 1; //led3 yansın
Delay_ms(1000); //Led3 1 saniye yanık kalsın
PORTB.3 = 1; //Led4 yansın
Delay_ms(1000); //Led4 1 saniye yanık kalsın
PORTB = 0x00; //bütün ledler sönsün
}
}