May
23rd

ÇocukluÄŸumuzun meÅŸhur dizisi Knight Rider yada kara ÅŸimÅŸek’deki siyah arabanın önündeki led efektini sanırım hepimiz biliriz. Bu uygulamada B,C,D portları kullanarak 18 led ile yürüyen ışık devresi yapılmıştır. Kodlarda yapacağınız deÄŸiÅŸiklik ile led sayısını artırıp azaltabilirsiniz.
#include <16f877.h>
#fuses XT,NOWDT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NOCPD
#use delay(clock=4000000)
//Tüm programdaki gecikmeleri ayarlama
#define gecikme 30
void main ()
{int i,j;
while(1)
{ // İLERİYE SAYIM
// B portu için
j=1; //kaydırma işlemi için sayı değeri
for(i=0;i<8;i++)
{ output_b(j); // j sayı değeri B portunda
j=j<<1; // j sayısını 1 bit sola kaydır
delay_ms(gecikme); //ledin yanık kalma süresigecikme veriliyor
}
// C portu için
output_b(0);//son kalan portb bilgisi sıfırlanır
j=1;
for(i=0;i<8;i++)
{ output_c(j);
j=j<<1;
delay_ms(gecikme);
}
// D portu için
output_c(0);//son kalan portc bilgisi sıfırlanır
j=1;
for(i=0;i<8;i++)
{ output_d(j);
j=j<<1;
delay_ms(gecikme);
}
//İLERİYE SAYIM SONU
//GERİYE SAYIM D PORTU İLE BAŞLAR
j=128; //kaydırma işlemi için sayı değeri
for(i=0;i<7;i++)
{ j=j>>1; // j sayısını 1 bit sola kaydır
output_d(j); //j sayısı çıkış portunda
delay_ms(gecikme); //ledin yanık kalma süresi
}
output_d(0);//son kalan portd bilgisi sıfırlanır
j=128; //kaydırma işlemi için sayı değeri
for(i=0;i<7;i++)
{ j=j>>1; // j sayısını 1 bit sola kaydır
output_c(j); //j sayısı çıkış portunda
delay_ms(gecikme); //ledin yanık kalma süresi
}
output_c(0);//son kalan portc bilgisi sıfırlanır
j=128; //kaydırma işlemi için sayı değeri
for(i=0;i<7;i++)
{ j=j>>1; // j sayısını 1 bit sola kaydır
output_b(j); //j sayısı çıkış portunda
delay_ms(gecikme); //ledin yanık kalma süresi
}
//GERİYE SAYDIRMA SONU
}
}
Devrenin kaynak kodlarına ve proteus simülasyonuna buradan ulaşabilirsiniz.






