﻿/******************************************************
      PIC16F877 ile WDT Uygulaması
      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,WDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

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

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

/********* 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 birimi 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_a(0x01);   // RA0 pini giriş
   set_tris_b(0x00);   // B portu komple çıkış

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

   setup_WDT(WDT_2304MS); // WDT ayarları yapılıyor

   while(1)    // Sonsuz döngü
   {
      output_toggle(pin_b0); // RB0 ucunun çıkış durumu tersleniyor

      while (input(pin_a0)) // Eğer RA0 girişindeki butona basıldı ise
         restart_wdt();     // WDT'ı sıfırla

      sleep();   // Denetleyici uyku moduna alınıyor.
   }

 }

