Ç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 30void main (){int i,j;while(1){ // İLERİYE SAYIM// B portu içinj=1; //kaydırma işlemi için sayı değerifor(i=0;i<8;i++){ output_b(j); // j sayı değeri B portundaj=j<<1; // j sayısını 1 bit sola kaydırdelay_ms(gecikme); //ledin yanık kalma süresigecikme veriliyor}// C portu içinoutput_b(0);//son kalan portb bilgisi sıfırlanırj=1;for(i=0;i<8;i++){ output_c(j);j=j<<1;delay_ms(gecikme);}// D portu içinoutput_c(0);//son kalan portc bilgisi sıfırlanırj=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ŞLARj=128; //kaydırma işlemi için sayı değerifor(i=0;i<7;i++){ j=j>>1; // j sayısını 1 bit sola kaydıroutput_d(j); //j sayısı çıkış portundadelay_ms(gecikme); //ledin yanık kalma süresi}output_d(0);//son kalan portd bilgisi sıfırlanırj=128; //kaydırma işlemi için sayı değerifor(i=0;i<7;i++){ j=j>>1; // j sayısını 1 bit sola kaydıroutput_c(j); //j sayısı çıkış portundadelay_ms(gecikme); //ledin yanık kalma süresi}output_c(0);//son kalan portc bilgisi sıfırlanırj=128; //kaydırma işlemi için sayı değerifor(i=0;i<7;i++){ j=j>>1; // j sayısını 1 bit sola kaydıroutput_b(j); //j sayısı çıkış portundadelay_ms(gecikme); //ledin yanık kalma süresi}//GERİYE SAYDIRMA SONU}}
Hiç yorum yok :
Yorum Gönder