"ELSE" KOMUTU NASIL DOĞRU KULLANILIR..???

Başlatan PARS, 18 Aralık 2010, 19:43:24

PARS

Arkadaşlar \"mikro c \" de 12f675 işlemcisiyle tek butona bağlı bit kontrolü yapmaya çalışıyorum fakat !!! yazdığım yazılımda

eğer ( if )buton 1 ise çıkışa bağlı led belirli ms aralıklarla 1-0 yanıp sönecek....

değil ise ( else )  buton 0 ise yine aynı led  0 !!!  olması gerekirken  0 olmuyor sürekli yanıp sönüyor...else komutunu kullandığım anda \" HATA \" veriyor.. bende iki tane if komutu kullandım ama program ilk hangisini gördüyse o döngüde kalıyor..

Muhtemelen bu \" else \" yi kullanabilirsem iş çözülecek..   

yazılım şöyle ;


void main()
       {
         ANSEL  = 0;       // ADc girişleri dijitale ayarlandı
         CMCON  = 7;       // KARŞILAŞTIRILMA modüllü kapatıldı
         TRISIO.F1= 1;    // f1 giriş
         TRISIO.F5= 0;    // f5 çıkış
                             
         GPIO   = 0;       
                         

while(1)
{


          if(GPIO.F1=1)
          {
          GPIO.F5 =0;
          Delay_ms(2000);


         
          while(1)
          {

          GPIO.F5=1;
          Delay_ms(500);
          GPIO.F5=0;
          Delay_ms(500);

         else (GPIO.F5=0)    !!!! BU KOMUTU KOYUNCA DERLEMEDE HATA OLUŞUYOR  !!!
         
          }}}}
         






ASPGraphic

Micro C nin tam syntaxlarını bilmiyorum ama senin yazdığın kodu kullanarak değiştiriyorum aşağıdaki kodu bir deneyebilirmisin?

void main(void)
{
   ANSEL = 0;
   CMCON = 7
   TRISIO.F1 = 1;
   TRISIO.F0 = 0;
   GPIO = 0;
   
   while(1)
   {
      if (GPIO.F1=1)
      {
         GPIO.F5 = 0;
         Delay_ms(2000);
         GPIO.F5 = 1;
         Delay_ms(500);
         GPIO.F5 = 0;
         Delay_ms(500);       
      }
      else
      {
         GPIO.F5 = 0;
      }
   }
}
İnsan hayalleriyle yaşar. www.32bit-core.com

PARS

saol dostum çok teşekkür ederim ..else oldu bu şekilde derlendi...eline sağlık...

PARS

gecikmede derleme hatası veriyor...çünkü ben 2000ms lik gecikmeyi while döngüsüne katmadan yapmaya çalışıyorum...yani butona basılsığında bir defa 2000ms bekleyim daha snra ledler sürekli yanıp sönsün diyorumm..


buton sıfır olunca devre duruyor o tamam...else komutunu çok iyi anladım ama bu gecikmeyi while döngüsünden ayrı ayrı nasıl yapabiliriz?







ASPGraphic

Bir kaç çeşit yolla yapabilirsin. Etiket oluşturarak, fonksiyon kullanarak ama en pratiği while kullanman olur. Neden while kullanmadan yapmak istiyorsun? Gerçi başka bir konuda bu soruna cevap verilmiş. Benim tekrar açıklamama gerek var mı?
İnsan hayalleriyle yaşar. www.32bit-core.com

PARS

ewet başka bir arkadaşım dediğiniz gibi while kullanıp bir çozüm buldu..bende öğrenmiş oldum..yinede ilginize çok teşekkür ederim..

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın