Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: mutta - 28 Şubat 2009, 22:53:15

Başlık: Döngüye sokamadım
Gönderen: mutta - 28 Şubat 2009, 22:53:15
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;
       }
Başlık: Döngüye sokamadım
Gönderen: Salih - 01 Mart 2009, 10:34:04
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.
Başlık: Döngüye sokamadım
Gönderen: Logan - 01 Mart 2009, 15:30:43

#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;
}
}
Başlık: Döngüye sokamadım
Gönderen: mutta - 03 Mart 2009, 22:38:32
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?
Başlık: Döngüye sokamadım
Gönderen: mutta - 03 Mart 2009, 23:22:42
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
}