Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

:.:.sayici.:.:

Başlatan teknikelektronikci, 17 Kasım 2006, 16:48:56

teknikelektronikci

merhaba arkadaslar üstadlar linkte verdigim devrenin programini kendim yazmaya calistim fakat bir kac eksigim oldugu icin bir kac yerde problem yasadim yardimci olursaniz sevinirim simdiden tesekürler saygilar

problemler:
1-)sayici basa döndügünde rakamlar sifirlanmior
2-)sayici cok hizli gidior ben bunun 1 saniye aralikta olmasini istiorum tam olarak 1 sn olmasada olur 1.sn ye yakin olsun yeter

link:

http://rapidshare.com/files/3722846/okul.rar.html
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

ibrsel

sevgili dostum,devrenden pek birsey anlamadım.. proteus çiziminde "menu,aşağı,yukarı,ileri,geri" tuşları koymuşsun ama programında bunların ne işe yaradığı ile ilgili bir fikir edinemedim..zaten basic programında bu tuşlar ile ilgili bir satır da yok..ayrıca sayma işleminin ne zaman resetlenmesi gerektiğinide belirtmemişsin..programına göre sadece dakika değeri 60 olunca zaman resetleniyor..

Ayrıca programında kesme kullanmaya çalışmışsın.Ama interruptı bu şekilde kullanamazsın..İntcon registerine hiçbir ayar yapmamışsın..Gerçi zamanın tam "1" saniye olmasının önemi yoksa interrupt kullanmana da gerek kalmaz..Bu yüzden bekleme ekleyerek saniyenin "1" saniye ye yakın aralıklar ile artmasını sağladım..

Programının ve devrenin ne işe yarayacağını daha ayrıntısı ile anlatır isen daha net ve kalıcı şekilde yardımcı olunabilir diye düşünüyorum..

İyi çalışmalar..

http://rapidshare.com/files/3749581/okul_1.rar.html

teknikelektronikci

cevabiniz icin ilk öncelikle cok tesekür ederim isisdeki tuslarin önemi yok o isis dosyasini daha önce baska devre icin kullanmistim sonra bir daha kurmayayim diye aynisina devam etim fakat tuslari silmedim yani tuslarla bir ilgisi yok ;-)  sayma islemi tam bir saat sonra durmasi gerekior ve degerlerin sifirlanmasi gerekior aslinda bunu acik unutulan lamba icin kullanacam buton yerine bir pir dedektör lamba yaninca 1 saat sonra kapansin diye

programdaki o intconlari ben simdi bosunami yaptim o kismi sagdan soldan arastirarak yaptim ama nerde yanlis yaptim anlamadim daha önce interup ile gene forumumuza sormustum ve siz degerli üstadlar cevap verip yardimci olmuştunuz yani bu benim ilk interup calismam olsun dedim onuda yanlis yaptim acaba bunu nasil yapmam gerekirdi ne gibi ekleme yapmam gerekirdi programima. ayrica düzeltme icin cok tesekür ederim saygilar
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

halukece

Gerçek zaman istiyorsan sana CCS de yazılmış güzel bir kod parçası vereyim. Kesme kullanılarak zamanlar hesaplanıyor.Test amaçlı 4-5 saat çalıştırmıştım sapma görmedim.

#define XTAL_FREQUENCY  20000000  // Kristal frekansı
#define TIMER1_FREQUENCY (XTAL_FREQUENCY / 4) 

int32 Ticker; 
int8 Seconds=0; 


//optional: 
int8 Year=6,Month=11,Days=18,Hours=06,Minutes=16; 


#define IS_LEAP(year) (year%4 == 0) 

void Initialize_RTC(void) 
{ 
  	Ticker = TIMER1_FREQUENCY; 
  	setup_timer_1( T1_INTERNAL | T1_DIV_BY_1 );
  	enable_interrupts(INT_TIMER1); // Start RTC
} 


#int_TIMER1                                
void TIMER1_isr()                          
{ 
  Ticker -= 65536;
  if ( Ticker < 65536 )
  {  Ticker += TIMER1_FREQUENCY;
     Seconds++;
  } 
  if(Seconds == 60) {Minutes++; Seconds=0; 
    if(Minutes == 60) {Hours++; Minutes=0; 
      if(Hours == 24) {Days++; Hours=0; 
        if (  (Days == 29 && Month==2 && !IS_LEAP(Year)) 
           || (Days == 30 && Month==2) 
           || (Days == 31 && (Month==4 || Month==6 || Month==9 || Month==11 )) 
           || (Days == 32) 
           ) {Month++;Days=0;} 
        if(Month == 13) {Year++; Month=0;} 
  }}} 
}

void main() 
{ 
  Initialize_RTC(); 
  enable_interrupts( GLOBAL );  //INTCON.7=1
  while(1){
  //printf("%d:%d:%d",hours,minutes,seconds)
 } 
}


PICBASIC e çevirmek zor olmasa gerek.Kolay Gelsin