/****************************************************** Uygulama Adı : Port Okuma ve Porta Bilgi Gönderme Programın Amacı : A portu RA0,RA1,RA2 ve RA3 pinlerine bağlı butonların durumunun okunarak, okunan bu bilginin B portuna bağlı LED'lerde gösterilmesi PIC PROG/DEKA : Port B jumper'ı LED konumunda olmalı Yazan : SERDAR ÇİÇEK *******************************************************/ #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 #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 #byte portb=6 // Bu komutla portb kelimesi denetleyicinin B portu kaydedicisi adresiyle eşleştirilmiştir int giris; // 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(0xFF); // A portu tümüyle giriş olarak yönlendiriliyor set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor output_b(0x00); // B portu çıkışları sıfırlanıyor basla: giris=input_a(); // A port girişi komple okunuyor ve okunan değer giris değişkenine aktarılıyor giris=giris&0b00111111; // giris değerinin yüksek değerlikli son 2 biti maskeleniyor portb=giris; // giris değişkeni değeri B portuna çıkış olarak gönderiliyor goto basla; // basla etiketine dallanılıyor }