CCS C VE PIC 16F877 YÜRÜYEN IŞIK
CCS C dili ile yazılmış ve PIC 16F877 mikroişlemcisi kullanılmış bir yürüyen ışık uygulaması. Uygulamada 8 adet led kullanıldı.
Uygulamada asıl amaç led yakıp söndürmekten çok mikroişlemci yazılımına hakim olmak. Önce tek ledi yakıp söndüren uygulama örneği verdik, sonrasında ise bu ledi buttona bağladık. Daha sonra 8 ledi yakıp söndüren bir uygulama örneği verdik. Bu şekilde gelişerek devam edecektir.
PIC uygulamalarında her bir porta tek tek hakim olabilmek gerekir. Örneğin B portunda 8 adet pin (bacak) var . Bu pinlerin hangisi 1, hangisi 0 olacak. Bunu integer değişkenine saysal olarak bildirmek istersek her bir durum için oluşan ondalık sayının 2 lik düzendeki karşılığını bilmemiz veya hesaplamamız gerekecektir. Ancak bu değerleri binary biçiminde verirsek her seferinde hesap yapmaktan kurtuluruz.
Örneğin B portunun 3. Pinini 1 yapmak istiyoruz, bunu nasıl yaparız.
1. Yol
int light = 4;
output_b(light);
Yukarıdaki örnekte 00000100 dizilimini B portuna göndermiş olduk. Birde şöyle deneyelim.
2. Yol
output_b(0b00000100);
Yukarıdaki örnekte int değişkenine ondalık değer atamadan port çıkışlarını düzenledik.
int light =4;
light=light<<1;
output_b(light);
Yukarıdaki örnek integer değişkeninin bitlerini 1 sıra sola kaydırdı. Light değişkeninin yeni sıralaması şu şekilde oldu.
light = 0b00001000 oldu, çünkü 1 olan biti 1 birim sola kaydırdık. light değişkeninin yeni ondalık karşılığıda 8 oldu.
Devre Şeması
Program Kodları
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
void main()
{
while(TRUE)
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0x00);
output_b(0x00);
int light=1;
while(TRUE)
{
for(int x =0; x<8;x++)
{
output_b(light);
light=light<<1;
delay_ms(100);
}
light=0b10000000;
for(int k=0; k<7;k++)
{
light=light>>1;
output_b(light);
delay_ms(100);
}
light=1;
}
}
}
PIC İLE 3 ADET DİSPLAY SÜRME
PICLER ARASI HABERLEŞME SİSTEMİ
SANATSAL BİLGİ
25/10/2016