Haberler:

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

Ana Menü

Ynt: zamanlama konusunda yardım.

Başlatan mikrodevre, 14 Ekim 2013, 00:34:05

mikrodevre

Merhaba Arkadaşlar

CCS C de zamanlama songüsü kurmaya çalısıyorum ama istediğim gibi olmadı. PIC programlamada yeniyim. Forumdaki örneklerle aşağıdaki kodu yazdım ama istediğim gibi çalışmadı.GSM li bir proje yapmak istiyorum detayları burda paylaşacağım.

Yardımınızı bekler şimdiden teşekkür ederim.

#include <16f877.h>    
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD  
#use delay(clock=4000000)   
#use fast_io(b) 

 
void gecikme(int a){
int i;
 for (i=0;a>10000;i++)
{
delay_ms(10);
}
}


void main ()
{
   setup_psp (PSP_DISABLED);           //PSP birimi devre dışı
   setup_spi (SPI_SS_DISABLED);        //SPI birimi devre dışı
   setup_timer_1 (T1_DISABLED);        //T1 birimi devre dışı
   setup_timer_2 (T2_DISABLED,0,1);    //T2 birimi 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_a(0x00);
 
 while(1)
 {
 output_high(pin_a0);
 
gecikme(10);
  output_low(pin_a0);
gecikme(10);
 }
 
}


mesaj birleştirme:: 14 Ekim 2013, 01:20:48

Sorunu çözdüm.

for (i=0;a>10000;i++)   

a>i yapmam gerekiyormuş.

Kodun son hali

#include <16f877.h>    
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD  
#use delay(clock=4000000)   
#use fast_io(b) 

 
void gecikme(int a){
int i;
 for (i=0;a>i;i++)
{
delay_ms(10);
}
}


void main ()
{
   setup_psp (PSP_DISABLED);           //PSP birimi devre dışı
   setup_spi (SPI_SS_DISABLED);        //SPI birimi devre dışı
   setup_timer_1 (T1_DISABLED);        //T1 birimi devre dışı
   setup_timer_2 (T2_DISABLED,0,1);    //T2 birimi 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_a(0x00);
 
 while(true)
 {
 output_high(pin_a0);
 
gecikme(100);
  output_low(pin_a0);
gecikme(100);
 }
 
}



gecikme(100);  girdiğimde 100x10 =1000 ms yapıyor.


Teşekkürler



robomaster

neyi istediğinizi soruyu yönelttiğiniz kişilerde bilse iyi olur du :)

mikrodevre

Alıntı yapılan: robomaster - 14 Ekim 2013, 00:55:27
neyi istediğinizi soruyu yönelttiğiniz kişilerde bilse iyi olur du :)

Merhaba gecikme (1000); girdiğimde void döngüsüne gidip girdiğim değer kadar geçikme yapmasını istiyordum.  daha dogrusu for ve void işlemleri üzerine çalışıyorum.

değer  girdiğim halde çalıştıramadım. sonradan deneme yaparak ikinci cevapta verdiğim örnek gibi olunca çalıştı. Soruyu sormamla çözmem bir olunca hemen cevap yazdım.Ama soruyu sormadan önce baya bir uğraştım :-)

ilginiz için teşekkür ederim.