Ç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.
-
Kod:
#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 } }
Eklentiler
Son düzenleme: