﻿/******************************************************
 Uygulama Adı      : 74164 ile 2 Çıkışla 7 Segment Display Sürme 
*******************************************************/

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

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

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

#use fast_io(b) // Port yönlendirme komutları b portu için geçerli

#define data pin_b0   // data sabiti pin_b0'a eşitleniyor
#define clock pin_b1  // clock sabiti pin_b1'e eşitleniyor

// Ortak katot display için veri değerleri
int digit[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F};

char i=0,j=0;  // Karakter tipinde değişken tanımlaması yapı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); // İlk anda B portu çıkışı sıfırlanıyor

   while(1)
   {
     for(i=0;i<10;i++)   // Displayde gösterilecek 0-9 sayıları için döngü

     {

        for(j=0;j<8;j++) // Gönderilecek verinin bit bit gönderilmesi için
                         // oluşturulan döngü
        {
           output_bit(data,bit_test(digit[i],j)); // Bit değeri data pinine gönderiliyor

           output_high(clock); // Clock sinyali lojik-1 yapılıyor
           output_low(clock);  // Clock sinyali lojik-0 yapılıyor
        }
        delay_ms(500); // Gecikme veriliyor
    }
   }
}

