hkn_blt
Üye
- Katılım
- 31 Ağu 2009
- Mesajlar
- 1,160
- Puanları
- 31
Kod:
/****************************************************** PIC16F877 ile Timer0 Uygulaması-1
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
int i=0; // Tamsayı tipinde değişken tanımlanıyor
//****************** Timer0 Kesmesi *****************************
#int_timer0 // Timer0 kesmesi
void timer0_kesme () // Kesme fonksiyonu ismi
{
set_timer0(60); // TMR0 değeri belirleniyor
i++; // i değeri 1 arttırılıyor
if (i==20) // i değeri 20'a eşitse RB0 çıkışı lojik-1 olsun
output_high(pin_b0);
if (i==40) // i değeri 40'ye eşitse RB0 çıkışı lojik-1 olsun ve i değeri sıfırlansın
{
output_low(pin_b0);
i=0;
}
}
/********* 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_b(0x00); // B portu komple çıkış
output_b(0x00); // B portu çıkışı ilk anda sıfırlanıyor
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); // Timer0 ayarları yapılıyor
set_timer0(60); // TMR0 değeri belirleniyor
enable_interrupts(INT_timer0); // int_timer0 kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
while(1); // Sonsuz döngü
}
bu kod çalışıyor 1sn ledı yakıp 1 sn sönük tutar