Ynt: Aynı kodlar ama biri isiste çalışıyor diğer benzeri çalışmıyor.

Başlatan Recep METE, 12 Ekim 2013, 19:15:35

Recep METE

Arkadaşlar iki tane farklı klasörlerde ama aynı, çok basit program.  Biri isiste çalışıyor öteki çalışmıyor.Kodları tek tek inceledim hiçbir farkı yok.Defalarca compiler ettim değişen olmadı.Acaba bu olay CCS C'nin bir hatasımı,açığımı.Kodları aşağıya yazıyorum.

ÇALIŞAN KODLAR:
#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları
#use delay(clock=4000000)
#use fast_io(a) // Port yönlendirme komutları A portu için geçerli
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

int i=0;

/********* ANA PROGRAM FONKSİYONU********/

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 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_a(0x01);    // RA0 ucu giriş olarak ayarlandı.
   set_tris_b(0x00);    // RB0 portu tümüyle çıkış olarak ayarlandı.
   
   output_b(0x00);

  
 while(1) // Sonsuz döngü 
{
if(input(pin_a0))
{delay_ms(5);while(input(pin_a0)==1);i++;



if(i==1)
output_high(pin_b0);
delay_ms(50);
while(input(pin_a0)==1);


if(i==2)
output_low(pin_b0);
delay_ms(5);
while(input(pin_a0)==1);




if(i==2)i=0;

}
}}




ÇALIŞMAYAN KODLAR:
#include <16f877.h>// çalışmıyor

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları
#use delay(clock=4000000)
#use fast_io(a) // Port yönlendirme komutları A portu için geçerli
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

int i=0;

/********* ANA PROGRAM FONKSİYONU********/

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 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_a(0x01);    // RA0 ucu giriş olarak ayarlandı.
   set_tris_b(0x00);    // RB0 portu tümüyle çıkış olarak ayarlandı.
   
   output_b(0x00);

  
while(1) // Sonsuz döngü 
{
if(input(pin_a0))
{delay_ms(5);while(input(pin_a0)==1)i++;


if(i==1)
output_high(pin_b0);
delay_ms(150);
while(input(pin_a0)==1);


if(i==2)
output_low(pin_b0);
delay_ms(5);
while(input(pin_a0)==1);
 
 
 if(i==2)i=0;

}
  
}}


Yorumlarınızı bekliyorum.

mesaj birleştirme:: 12 Ekim 2013, 19:27:29

Hocam burdan seçip tekrar yapıştırdım.Şimdi ikiside çalışıyor.Kusura bakmayın.Ama neden böyle bir hata oldu anlayamadım.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d


diversant

if(input(pin_a0))
{delay_ms(5);while(input(pin_a0)==1);i++;  çalışanda  böyle yazılı

{delay_ms(5);while(input(pin_a0)==1)i++;   çalışmayanda böyle
son parantez lle i arasındaki ; sebebi olabilir







musti463

Alıntı yapılan: diversant - 12 Ekim 2013, 21:54:30
if(input(pin_a0))
{delay_ms(5);while(input(pin_a0)==1);i++;  çalışanda  böyle yazılı

{delay_ms(5);while(input(pin_a0)==1)i++;   çalışmayanda böyle
son parantez lle i arasındaki ; sebebi olabilir

evet bencede hata unutulmuş ;'de
Mustafa Emir SADE

Recep METE

Herkese çok teşekkür ederim.Çok uzun saatler programlama ile uğraşınca kafa donuyor.Bazı şeyleri göremez oluyorsun.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

RaMu


if(i==1)
output_high(pin_b0);
delay_ms(50);
while(input(pin_a0)==1);

çalışanda böyle yazıyor,
çalışmayanda delay 150 ms yazıyor
bende bunu gördüm yazayım dedim

ama diğer mesajlarda belirtilen daha önemli bence.

Okunaklı takip edilebilir kod yazmak lazım.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html