pic kronometre

emalper

Üye
Katılım
25 Nis 2014
Mesajlar
13
Puanları
1
Yaş
29
Merhaba arkadaslar ben yaptigim uv box icin bir zamanlayici/timer yapmak istiyorum ama bunu picin timer1 ile yapmak istiyorum cunku bana gercek bir zamanlama lazim. Serdar cicek hocamizin kitabindaki en basit timer1 uygulamasini asagida paylasacagim eger bir bilginiz varsa bana bu konuda yardim edip bu programa nasil 7 segmentli display ekleyip dakikayi saniyeyi bu segmente yazdirabilirim acaba.

Kod:
/******************************************************
      PIC16F877 ile Timer1 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_timer1  // Timer1 kesmesi
void  timer1_kesme ()   // Kesme fonksiyonu ismi
{
   set_timer1(63036); // TMR1 deðeri belirleniyor

   i++; // i deðeri 1 arttýrýlýyor

   if (i==50)    // i deðeri 50'ye eþit olursa RB0 lojik-1 olsun
      output_high(pin_b0);
   if (i==100)  // i deðeri 100'e eþit olursa RB0 lojik-0 ve i=0 olsun
   {
      output_low(pin_b0);
      i=0;
   }
}

/********* ANA PROGRAM FONKSÝYONU********/

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi 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_1(T1_INTERNAL | T1_DIV_BY_8); // Timer1 ayarlarý yapýlýyor
   set_timer1(63036);   // TMR1 deðeri belirleniyor


   enable_interrupts(INT_timer1); // int_timer0 kesmesini aktif yapar
   enable_interrupts(GLOBAL);     // Aktif edilen kesmelere izin ver

   while(1); // Sonsuz döngü

 }
 
Moderatör tarafında düzenlendi:
banada 6 karakter saat dakika saniyeli ve 3 butonlu (başlat, durdur, sıfırlama) butonlu displayli kronometre deresi lazım
 

Forum istatistikleri

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

Yeni konular

Geri
Üst