Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Döngüye sokamadım

Başlatan mutta, 28 Şubat 2009, 22:53:15

mutta

Merhaba arkadaşlar başlıktanda anlaşıldığı üzere bir döngü kurgulayamadım, istediğim döngü şöyle;
RA0 ucuna bağlı olan butona basıldığında  RB0 a bağlı olan led 250 ms yanacak ve sonra sönecek elim butonda basılı kalsa bile bu işlem bir daha işlemeyecek,eli butondan kaldırıp tekrar butona bastığımda yine 250 ms yanacak ve sonra sönecek benim döngüm aşağıdaki gibi nerede yanlış yaptığımı söyler misiniz?Bana bir yol gösterir misiniz?

#include<pic.h>
#include<delay.c>

main (void)
{
        int i=0;

       TRISA=1;
       TRISB=0;
       if(RA0==1)
       {
               for(;i<1;i++)
               {
                       RB0=1;
                       DelayMs(250);
                       RB0=0;
                       DelayMs(250);
                       i++;
               }
       }
       else
       {
               RB0=0;
       }
>>>Her yere imza atmam<<<

Salih

Bir yardımcı bit kullanmanı tavsiye ederim. Bu biti buton basılınca "0" yap butona basılmadığında "1" yap. if deyiminde And ile yardımcı bitide yaz.

Logan

#include<pic.h> 
#include<delay.c> 

main (void) 
{ 
int i=0; 

TRISA=1; 
TRISB=0; 
if(RA0==1) 
{ 
for(;i<1;i++) 
{ 
RB0=1; 
DelayMs(250); 
RB0=0; 
DelayMs(250); 
i++; 
} 
} 
else 
{ 
RB0=0; 
}


Yukarıdaki programın bahsettiğin gibi çalışması için şu şekilde yazmalısın;
#include<pic.h> 
#include<delay.c> 

main (void) 
{

TRISA=1; 
TRISB=0; 

if (RA0) 
{
RB0=1; 
DelayMs(250); 
RB0=0;
while (!RA0) {;;}
} 
else 
{ 
RB0=0; 
}
}
İmza.

mutta

malesef olmadı arkadaşım , başka yolla yapaz mıyım ya?
birde şöyle düşündüm iki buton aynı anda basıldığında yanacak ama yazdığım kodda hata var sanırım ve şartını koyamadım
örneğin;

if(RA0&&RA1==1)
{
     RB0=1;
}

bu kod doğru mudur acaba?
>>>Her yere imza atmam<<<

mutta

istediğim program çalışma şekli şöyle;

RA0 butona basıldığında RB0 aktif olacak
RA1 butonuna basıldığında ise RB0 250 ms sonda sıfır olacak

bu programı yazdım ama gecikmeyi koyamadım[code]

if(RA1==1)
{
   RB0=0; //Buraya DelayMs (250) ekliyorum ama işlemiyor
}
>>>Her yere imza atmam<<<