XC8'de sinir bozucu değişken problemi

Başlatan apsis, 04 Ocak 2017, 14:16:22

eeburakdemir

@apsis versiyonları güncellesen kesin düzelir mi bilemem ama gerçekte denemiştiniz değil mi ? O halde biryerde işleri bozan bir durum var. Dediğim şekilde led vs kontrol ettiniz mi ?
Asla pes etme...

mehmet

Havanda su dövene kadar kodlarınızın basit
halini yayınlasanız. Bunun üzerinden gidebiliriz.
Biraz önce deneme yaptım, bir sıkıntı çıkmadı
negatif sayı ile ilgili.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

HeCToR

@mehmet hocam bizdede çıkmıyor ne yazıkki :D :D bir defa karşılaştım bende başıma geldi kendi kendine düzeldi boşunamı söylüyoruz daha oturtamadılar diye hi-tech var mis gibi :D
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

apsis

@eeburakdemir basit programlar çalışıyor.
@mehmet bu fonksiyon içindeki değişkenden bahsediyorum. Diğer fonksiyonlarda global, mainde yerel değişkenler kullanıyorum
void ayar(void)
{
    int i=-1,k=-1; // burada i=0, k=-1 gözüküyor. ikisinin yerini değiştirdiğimde k=0,i=-1 oluyor.
    lcd_gotoxy(1,1);
    lcd_yaz("Aciyi Seciniz: ");
    lcd_gotoxy(2,1);
    lcd_yaz("1:30  2:60  3:80");
    while(1)
        {
          if((RD4 || RD5 || RD6 || RD7)!=0);
          i=key_pad();
          if(i==1)
          {
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("30 Derece Secili");
            __delay_ms(1000);
            i=-1;
            key=-1;
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("Sureyi Giriniz:");
            lcd_gotoxy(2,1);
            lcd_yaz("00 Saniye");
            while(1)
            {
                while(1)
                {
                    i=key_pad();
                    if(i>-1)
                    {
                        key=-1;
                        break;
                    }
                }
                i=i*10;
                lcd_gotoxy(2,1);
                veri_yolla(i/10+48);
                while(1)
                {
                    k=key_pad();
                    if(k>-1)
                    {
                        key=-1;
                        break;
                    }

                }
                lcd_gotoxy(2,2);
                veri_yolla(k%10+48);
                m=k+i;

                i=-1;
                key=-1;
                if(m>0)
                {

                    lcd_gotoxy(2,1);
                    veri_yolla(m/10+48);
                    veri_yolla(m%10+48);
                    lcd_gotoxy(2,4);
                    lcd_yaz("saniye");
                    __delay_ms(1000);
                    break;
                }

            }
            k=-1;
            break;

          }

          if(i==2)
          {
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("60 Derece Secili");
            __delay_ms(1000);
            i=-1;
            key=-1;
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("Sureyi Giriniz:");
            lcd_gotoxy(2,1);
            lcd_yaz("00 Saniye");
            __delay_ms(1000);
            while(1)
            {
                while(1)
                {
                    i=key_pad();
                    if(i>-1)
                    {
                        key=-1;
                        break;
                    }
                }
                i=i*10;
                lcd_gotoxy(2,1);
                veri_yolla(i/10+48);
                while(1)
                {
                    k=key_pad();
                    if(k>-1)
                    {
                        key=-1;
                        break;
                    }

                }
                lcd_gotoxy(2,2);
                veri_yolla(k%10+48);
                n=k+i;

                i=-1;
                key=-1;
                if(n>0)
                {

                    lcd_gotoxy(2,1);
                    veri_yolla(n/10+48);
                    veri_yolla(n%10+48);
                    lcd_gotoxy(2,4);
                    lcd_yaz("saniye");
                    __delay_ms(1000);
                    break;
                }

            }
            k=-1;
            break;

          }
          if(i==3)
          {
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("80 Derece Secili");
            __delay_ms(1000);
            i=-1;
            key=-1;
            lcd_clear();
            lcd_gotoxy(1,1);
            lcd_yaz("Sureyi Giriniz:");
            lcd_gotoxy(2,1);
            lcd_yaz("00 Saniye");
            __delay_ms(1000);
            while(1)
            {
                while(1)
                {
                    i=key_pad();
                    if(i>-1)
                    {
                        key=-1;
                        break;
                    }
                }
                i=i*10;
                lcd_gotoxy(2,1);
                veri_yolla(i/10+48);
                while(1)
                {
                    k=key_pad();
                    if(k>-1)
                    {
                        key=-1;
                        break;
                    }

                }
                lcd_gotoxy(2,2);
                veri_yolla(k%10+48);
                j=k+i;

                i=0;
                key=-1;
                if(j>0)
                {

                    lcd_gotoxy(2,1);
                    veri_yolla(j/10+48);
                    veri_yolla(j%10+48);
                    lcd_gotoxy(2,4);
                    lcd_yaz("saniye");
                    __delay_ms(1000);
                    break;
                }

            }
            k=-1;
            break;

          }



        }
}
"Makineye Beyin" MEKATRONİK

apsis

@HeCToR programı önceden yazmıştım. Normalde çalışıyordu, bazı değişiklikler yapıp tekrar derlediğimde bu sorunla karşılaştım. yaptığım değişiklik programın bu kısmıyla ilgili de değildi. Sadece main fonksiyonunun başında LCD'ye bazı yazılar yazıyordu onu değiştirdim.
"Makineye Beyin" MEKATRONİK

baran123

Hocam fonksiyondaki tanımlamayı şöyle yapıp bir deneyebilir misiniz ?
signed int i = -1;
signed int k = -1;

apsis

@baran123 bunu da denedim normal yazımdan farkı olmuyor.
"Makineye Beyin" MEKATRONİK

mehmet

Uyuzluk yapan değişkenleri volatile olarak
tanımlayıp deneyiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

eeburakdemir

@apsis senin kodda break komutları biryerde fazla mı yoksa ben mi yanılıyorum :/ attığın fonksiyonda 69.satırdaki ve  131. satırdaki break hangi while döngüsünü kırıyor orayı göremedim.
Asla pes etme...

HeCToR

@apsis böyle denersen ne oluyor ?
signed int i = -1, k;
k = i;
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

apsis

@eeburakdemir  break komutlarında fazlalık yok. 131 satırdaki break fonksiyonda sonsuz döngüye girdiği için işlem gerçekleştiğinde bu döngüyü kırmak için kullandım.
@HeCToR değişen birşey olmadı. Bana hi-tech c atacaktınız ne oldu? :)
"Makineye Beyin" MEKATRONİK

eeburakdemir

@apsis artık diyebileceğim birşey gelmiyor şuanda aklıma . Olursa yazarım yine.
Asla pes etme...

HeCToR

@apsis sormayınca bende sorma gereği duymadım özelden mail adresi atarsan gönderirim.
signed int i = -1, k;
k = i;

Bu şekilde denedinmi sonuç ne çıkıyor.
yada
signed int i, k;
void main(){
i = -1;
k = -1;
}
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

apsis

@HeCToR gösterdiğin şekilde yaptım olmadı. ÖZelden mailimi yazıyorum :)
@eeburakdemir çok teşekkür ederim ilgin ve alakan için
"Makineye Beyin" MEKATRONİK

eeburakdemir

Asla pes etme...