/****************************************************** Uygulama Adı : Buton ile BCD Sayıcı Programın Amacı : RA0 butonuna her basışta 0'dan itibaren artan BCD sayılar B portuna bağlı LED'lerde görünecektir 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 #define buton pin_A0 // "buton" adında "pin_A0" kelimesine eşit bir sabit tanımlanıyor int i=1; // 8 bitlik tamsayı tipinde değişken tanımlanıyor /********* ANA PROGRAM FONKSİYONU********/ void main () { setup_psp(PSP_DISABLED); // PSP 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_a(0x01); // RA0 pini giriş olarak yönlendiriliyor set_tris_b(0x00); // RB0 portu tümüyle çıkış olarak yönlendiriliyor output_b(0x00); // B portu çıkışları sıfırlanıyor while(1) // Sonsuz döngü oluşturuluyor { delay_ms(15); // Butona basılınca meydana gelen arkın etkisini önlemek için verilen gecikme output_b(i); // b portuna i değeri yükleniyor delay_ms(1000); i=i+1; // i değeri 1 arttırılıyor while(input(buton)); // Buton bırakılana kadar bekle if (i==16) // i değeri test ediliyor.i değeri 10 olunca sıfırlanıyor. { i=0; // i değeri sıfırlanıyor } } }