﻿/******************************************************
      PIC16F877 ile Timer1 Uygulaması-2
      PIC PROG/DEKA     : Port B jumper'ı LED konumunda olmalı
*******************************************************/
#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ılacak osilatör frekansı belirtiliyor.

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

unsigned int kesme=0; // Tamsayı tipinde 16 bitlik değişken tanımlanıyor

//****************** Timer1 Kesmesi *****************************
#int_timer1  // Timer1 kesmesi
void  timer1_kesme ()   // Kesme fonksiyonu ismi
{
   set_timer1(65530); // TMR1 değeri belirleniyor

   kesme++; // kesme değeri 1 arttırılıyor
   output_b(kesme); // kesme değeri B portuna aktarılıyor

   if (kesme==255)   // Eğer kesme değeri 255 olursa kesme değerini sıfırla
      kesme=0;
}

/********* 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_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 komple çıkış
   set_tris_c(0x01);   // RC0 pini giriş

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

   setup_timer_1(T1_EXTERNAL | T1_DIV_BY_2); // Timer1 ayarları yapılıyor
   set_timer1(65530);   // TMR1 değeri belirleniyor


   enable_interrupts(INT_timer1); // int_timer1 kesmesini aktif yapar
   enable_interrupts(GLOBAL);     // Aktif edilen kesmelere izin ver

   while(1); // Sonsuz döngü

 }

