pic 16f877a ile dakika ve saniye gösteren c dili program isteği

Katılım
28 Tem 2007
Mesajlar
33
Puanları
1
Yaş
40
arkadaşlar pic 16f877a c dili ile saat programı yazmak istiyorum ama bir türlü olmuyor.Sanırım 16f877a'nın içinde bulunan timer2 ile yapılması gerekli ama yapamıyorum aslında devre çok basit sadece iki tane led olacak birisi saniyeyi gösterecek yani hersaniyede yanıp sönecek, diğeri ise dakikayı gösterecek yani bir dakika yanacak bir dakika sönecek
???
bu durum acil yardım eder misiniz?
???
arkadaşlar bu konuda yardımcı olursanız çok sevinirim cevaplarınızı ve çözümlerinizi bekliyorum
??? ??? ???
 
arkadasım hocanın verdiği ödevi burada ne amaçla yaptırıyorsun!!!
ayıp deilmi senin yaptıgın!!!
bizim emeğimiz boşamı gidecek!!!

imza:sınıfbaskanı
 
ccp1 modülünü 1msde (veya 50 veya 200ms) bir kesme verecek şekilde ayarla. gerisi daha kolay.
 
arkadaşım bu dediğinin daha açık bir şekilde yanıtı var nı çünkü bize hiçbir bilgi vermeden istenilen birşey bu ve benimde bulmam imkansız sanki bu konuda açıklama yapabilirmisin?
Yardımcı olduğun için çok teşekkür ederim kardeşim..
kolay gelsin....
 
ccp1 modülünü compare_reset_on_match özelliğine ayarlayacaksınız. Timer1 i çalıştıracaksınız. timer1 CCP1_H ve CCP1_L içerisine yerleştireceğiniz 16 bitlik sayıya ulaştığında sıfırlanacak ve kesme üretecek. karşılaştıracağınız değeri çalışma frekansınıza göre 1ms veya 200 ms de bir kesme oluşturacak şekilde seçeceksiniz. Örneğin 200ms seçtiğinizde kesmede bir sayaç arttıracaksınız. Bu sayaç 5'e ulaşınca 1 sn oluşmuş demektir.
 
işine yarar sanırımyanlız sadece snye kısmı dogru
pic csc c dili

#include "16f877a.inc"

#FUSES NOWDT, HS, PUT, NOPROTECT,BROWNOUT, NOLVP, NOCPD
#use delay(clock=20000000)
#define led PIN_B7

int msaniye=0,saniye;
int1 a=0;
int8 deger=0;



#int_TIMER1
void TIMER1_isr()
{
if(msaniye<100){
msaniye++;}
else{
saniye++;
msaniye=0;
if(a==0)
{output_low(led);
a=1;
}
else{
output_high(led);
a=0;
}
}

set_timer1(15536);
}






void main()
{

set_tris_b(0x00);
output_high(led);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_timer1(15536);





while(true){


}
}
 
tmr0 kesmesi ilede cok rahat bir sekilde saniye hesabı tutabilirsin dakika kısmınada bir sayac koyarsın 60 saniyede bir dakikayı 1 arttırırsın... tmr0 kesmesinin ayarlamasıda cok problemli degil piyasada bulunan herhangi bir c kitabında anlatılıyor hemen anlar ve kısa bir sure icinde programını yazarsın ...
 

Forum istatistikleri

Konular
129,840
Mesajlar
930,685
Kullanıcılar
452,682
Son üye
ugurcankut1

Yeni konular

Geri
Üst