kesme yaparak doğru saniyeyi nasıl yakalıcam

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
 
16f84a ya göre yaptım ama çalışmıyor TRİS B instucıonis deprecadet for pic 1684 diye bir hata veriyo pc=0x000A ısıte bu hatayı veriyor
 
aaaaaaaaaaa.jpg

böyle bir hata
 
#include "C:\Users\server\Desktop\aaaaa\main.h"
#use fast_io(b) //Port yönlendirme komutlar? B portu için geçerli
#int_TIMER0
int8 i=0;
void timer0_kesme ()
{
set_timer0(60); // TMR0 deg(eri belirleniyor
i++; // i deg(eri 1 artt?r?l?yor
if (i==20) // i deg(eri 20'a es,itse RB0 ç?k?s,? lojik-1 olsun
output_high(pin_b0);
if (i==40) // i deg(eri 40'ye es,itse RB0 ç?k?s,? lojik-1 olsun ve i deg(eri s?f?rlans?n
{
output_low(pin_b0);
i=0;
}
}


void main()
{
set_tris_b(0x00);
output_b(0x00);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); // Timer0 ayarlar? yap?l?yor
set_timer0(60); // TMR0 deg(eri belirleniyor
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);

// TODO: USER CODE!!




}

programıda böyle yaptım başlangıçta ıntrup ayarlarından timerı sectim 4000000 mhz yaptım niye çalışmıyo
 
10 sn yapmak için int16 yımı kullanıcam
 
Sn. tersoll amacınız ne? Ne yapmak istiyorsunuz? Sonuç bulamamanız üzücü.
 
Pic ile led arasında direnç kullanıyorsan dirençi 100 ohm yap. İsis seçilen dirençlere 10k değer atıyor. devre çalışsa bile led yanmıyor. 2. secenek çıkış veren uç mavi renkten kırmızıya kırmızıya dönüyor.
 

Forum istatistikleri

Konular
128,179
Mesajlar
915,658
Kullanıcılar
449,940
Son üye
yavuzturan

Yeni konular

Çevrimiçi üyeler

Geri
Üst