Display de 0 dan aşşağı düşünce 9 a dönmüyor [Çözüldü]

Başlatan baran123, 15 Mart 2014, 17:30:46

baran123

Merhaba arkadaslar kesmeler vs falan öğreneceğim baslangıc olarak bi 0-9 sayıcı yapım dedım sonra 0-99 falan gidicem ama 0-9 da bir problemim var buton ile arttırıp azaltma yapabılıyorum ama 0 dan düşük olursa 9 dön olarak ayarladım fakat tepki vermiyor ve ccs uyarı veriyor kodlar aşşağıda yardımcı olursanız sevinirim.

edit = pardon dikkatsizliğime gelmiş işaret hatası yapmısın düzelttim calısıyor.

#include <16F877A.h>
#device adc=16
#fuses NOWDT,XT,NOBROWNOUT,NOLVP,PUT,CPD,NOWRT,PROTECT,NODEBUG
#use delay(clock=4M)

#define up pin_a0
#define down pin_a1

char i = -1;
const int display[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F};
   
void main()
{
   set_tris_a(0x03);
   set_tris_b(0x00);
   output_b(0x00);
   
   while(TRUE)
   {
      if(input(up)==1)
      {
         delay_ms(300);
         i++;
         if(i > 9){i = 0;}
         output_b(display[i]);
      }
      
      if(input(down)==1)
      {
         delay_ms(300);
         i--;
         if(i == -1){i = 9;}
         output_b(display[i]);
      }
   }
}


uyarılar da şöyle :
1)Unsigned variable is never less than zero
2)Condition always false
pek anlam cıkaramadım calısması gerekiyor ?

İyi çalışmalar

gokhangokcen

if(i == -1){i = 9;}

satırında hata olduğunu düşünüyorum buradaki satırı ;
if(i >=10){i = 9;}

olarak bir düzenle tekrar dene.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

baran123