Karaşimşek Devresi ve Programı

yuruyenyazi

Ç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

}
}
Bu yazı CCS C Örnekleri kategorisine gönderilmiş ve , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.