binary sayacı değişken sorunu

Başlatan gökhan_, 25 Ekim 2012, 18:09:12

gökhan_

buton ile artırıp azaltmalı binary sayacı yapmak istiyorum işte periyot 16 olcak orası çalısıyor ama azaltma butonu ile 0 dan aşagı inince tekrara calısmıyor yani atıyorum sıfırdan düşük değerler için 0 atıyorum değişkene sonra artırma butonuna basınca program çalışmıyor, değişken olarak unsigned kullandım char kullandım int8 kullandım olmadı
#include <16f877a.h>
#fuses XT,NOWDT,NOWRT,NOLVP,NOCPD,NODEBUG,NOPUT,NOPROTECT,NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(b)
#define up pin_a0
#define down pin_a1
int8 i;
const int led[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
void main()
{

   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);

   // TODO: USER CODE!!
   set_tris_a(0x03);
   set_tris_b(0x00);
   output_b(0x00);
   while(1)
   {
   
   if(input(up))
   {
   while(input(up));
   i=i+1;
   if(i>=16)
   {i=0;}
   output_b(led);
   }
   if(input(down))
   {
   while(input(down));
   i=i-1;
   if(i<0)
   {i=0;}
   output_b(led);
   }
   }
}

Klein

if(input(down))
   {
   while(input(down));
   i=i-1;
   if(i<0) 
   {i=0;}
   output_b(led);
   }
   }


kodunu

if(input(down))
   {
   while(input(down));
   if (i>0) i=i-1;
   output_b(led);
   }
   }


şeklinde değiştir.

gökhan_

teşekkür ederim bu şekilde oldu.