﻿/******************************************************
 Uygulama Adı      : Yürüyen Işık
 PIC PROG/DEKA     : Port B jumper'ı LED konumunda olmalı
*******************************************************/

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i, led; //i ve led isminde tam sayı tipinde 8 bitlik değişkenler tanıtılıyor.

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_b(0x00);    // B portu tümüyle çıkış olarak yönlendiriliyor

   output_b(0x00);      // B portu çıkışları sıfırlanıyor

   while(1)
   {
      led=1;      //led değişkeni değeri 1 oluyor

      for(i=0;i<=7;i++)   // for döngüsü oluşturuluyor
      {
         output_b(led);      // led değişkeni değeri B portuna gönder
         led=led<<1;         // led değişkeni değerini 1 bit sola kaydır
         delay_ms(100);      // 100 msn'lik gecikme veriliyor
      }

      led=0x80;       //led değişkenine değer yükleniyor
      output_b(led);  //B portuna 0b10000000 bilgisi gönderiliyor
      delay_ms(100);  // 100 msn'lik gecikme veriliyor
      
       for(i=0;i<=6;i++)  // for döngüsü oluşturuluyor
      {
         led=led>>1;    // led değişkeni değerini 1 bit sağa kaydır
         output_b(led); // led değişkeni değeri B portuna gönder
         delay_ms(100); // 100 msn'lik gecikme veriliyor
      }
   }
}





