ccs c ile yukarı aşağı sayıcı sorun

Başlatan antiteror, 15 Mayıs 2010, 23:00:33

antiteror

merhabalar yeni yeni ccs c  ile kod yazmaya başladım. yukarı aşağı sayıcı yapmak istedim yukarı sayıyor ancak aşağıya saymıyor acaba nerde bir problem var. yardımlarınızı bekliyorum. (edit)

sorunu çözdüm
@ferdem arkadaşım teşekkür ederim
ccs de yeni olduğum için  gözümden kaçmış.

#include <16F877A.h>
#device adc=8
#fuses XT,NOPROTECT,NOWDT,NOWRT,NOPUT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(c)
#use fast_io(d)
#define dis_1 pin_a0
#define dis_2 pin_a1
#define buton pin_c0
#define buton_1 pin_c1
const int digit[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char  birler=0,onlar=0;
int16 sayi=0;
void main()
{

   port_b_pullups(0);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   set_tris_a(0x00);
   set_tris_c(0b00000011);
   set_tris_d(0x00);
   output_a(0x00);
   output_d(0x00);
   output_low(dis_1);
   output_low(dis_2);
       while(1)
         {
            birler=sayi%10;
            onlar=sayi/10;
            output_high(dis_1);
            output_d(digit[birler]);
            delay_ms(5);
            output_low(dis_1);
            output_high(dis_2);
            output_d(digit[onlar]);
            delay_ms(5);
            output_low(dis_2);
      
               if (input(buton))
                  {
                  sayi=sayi+2;
                     if(sayi==100)
                     sayi=0;
                  birler=sayi%10;
                  onlar=sayi/10;
                     while(input(buton))
                        {
                           output_high(dis_1);
                           output_d(digit[birler]);
                           delay_ms(5);
                           output_low(dis_1);
                           output_high(dis_2);
                           output_d(digit[onlar]);
                           delay_ms(5);
                           output_low(dis_2);
         
         
                        }
                        
                  }
                              if (input(buton_1)&&(sayi!=0))
                                 {
                                    sayi=sayi-2;
                                    birler=sayi%10;
                                    onlar=sayi/10;
                                       while(input(buton_1))
                                          {
                                             output_high(dis_1);
                                             output_d(digit[birler]);
                                             delay_ms(5);
                                             output_low(dis_1);
                                             output_high(dis_2);
                                             output_d(digit[onlar]);
                                             delay_ms(5);
                                             output_low(dis_2);
                                             if(sayi==0)
                                             sayi=0;
                                          }
                                 }
         }
}

ferdem

#1
Parantezler gözünüzden kaçmış, if ler while lar birbirine girmiş. Mesela while(input(buton)) un parantezi nerde kapanıyor! Kodunuzu yazarken her if, while bloğunun içini bir tab içerden başlatın, böylece kodunuz hem siz hem başkaları için daha kolay okunur olur. Örnek:
if (koşullar){
   işlemler;
   if(başka koşullar){
     işlemler;
     while(koşullar){
       işlemler;
     }
   }
}       
İyi çalışmalar.