/******************************************************************
PIC16F877 ile DS1868 Dijital Potansiyometre Uygulaması
*******************************************************************/
#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ılacak osilatör frekansı belirtiliyor.
#include <DS1868.c> // DS1868.c dosyası programa ekleniyor
// Butonlar ve Anahtar Tanımlamaları Yapılıyor
#define pot_reset pin_a0
#define pot_sec pin_a1
#define arttir pin_a2
#define azalt pin_a3
int i=0,j=0; // Tam sayı tipinde değişkenler tanımlanı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ışı
init_pots(); // 2 potansiyometre değeri ilk anda sıfırlanıyor
while(1) // Sonsuz döngü
{
if (input(pot_reset)) // Eğer Pot reset butonuna basıldı ise
{
init_pots(); // 2 potansiyometreyi de sıfırla
i=0; j=0; // i ve j değerleri de sıfırla
}
if (input(pot_sec)) // 0. Potansiyometre seçilmiş ise
{
if (input(arttir)) // Arttir butonuna basılmış ise
{
i++; // i değerini bir arttır
set_pot(0,i); // 0. potansiyometreyi i değerine ayarla
while(input(arttir)); // Butondan el çekile kadar bekle
}
if (input(azalt) && (i!=0)) // Azalt butonuna basılmış ise ve
{ // i değeri 0 değil ise
i--; // i değerini bir azalt
set_pot(0,i); // 0. potansiyometreyi i değerine ayarla
while(input(azalt)); // Butondan el çekile kadar bekle
}
}
else // 1. potansiyometre seçilmiş ise
{
if (input(arttir)) // Arttir butonuna basılmış ise
{
j++; // j değerini bir arttır
set_pot(1,j); // 1. potansiyometreyi j değerine ayarla
while(input(arttir)); // Butondan el çekile kadar bekle
}
if (input(azalt) && (j!=0)) // Azalt butonuna basılmış ise ve
{ // j değeri 0 değil ise
j--; // j değerini bir azalt
set_pot(1,j); // 1. potansiyometreyi j değerine ayarla
while(input(azalt)); // Butondan el çekile kadar bekle
}
}
}
}