bu yazılımda ledler neden 2 defa yanar?

J.BOURNE

Üye
Katılım
22 Ara 2010
Mesajlar
4
Puanları
1
ARKADAŞLAR

yazılımı "micro c " de yaptım fakat EN AZINDAN BUTON BASILI İKEN 10'A KADAR SAYMASI LAZIM...

nasıl bir durum olabilir acaba arkadaşlar?

proteusta devreye enerji verir vermez F5 e bağlı led 2 defa yanıp sönüyor sonra tık yok

ben butona basıldığında sadece bi kere "1" vermesini ve durmasını istiyorum..
" i " değişkenine 0-10 arası değer veriyorum hala iki defa yanıp sönüyor..sorun ne olabilir acaba...????


bilginize.....



void main()

{
ANSEL = 0; // ADc girişleri dijitale ayarlandı
CMCON = 7; // KARŞILAŞTIRILMA modüllü kapatıldı
TRISIO.F1= 1; // F1 GİRİŞ
TRISIO.F5= 0; // F5 ÇIKIŞ
// GPIO çıkışa yönlendirildi
GPIO = 0; // GPIO sıfırlandı


{ unsigned char i;

if(GPIO.F1=1)
{
for(i=0;i<=10;i++)
{
GPIO.F5=1;
Delay_ms(500);
GPIO.F5=0;
Delay_ms(500);
}
}
else
{
GPIO.F5=0;

}}}
 
programda gecikme komutu var fakat,
c yi pek bilmiyorum ama butona basıldıktan sonra gecikme vermediyseniz
tekrar basılmış gibi algılayabilir program.
bu veya benzer açılardan inceleyin.
 
O gecikme komutları yani delay_ms ler ledleri 1 ve sıfır yapan aralık değerleridir...onllardan olduğunu hiç zannetmiyorum...ya parantez blok yada komut mantık hatası var...anlayamadım takıldım kaldım burda...
 
Micro C kodlarını bilmiyorum ama sonsuz döngü kurulmadığı için kodlarınız sadece bir sefer işleniyor.

CCS C dilinde sonsuz döngü bu şekilde oluşturuluyor.

while(1) // sonsuz döngü
{

}

Veya çoğuprogramlama dili için geçerli olan Goto komutunu kullanarak sonsuz döngü oluşturmak.

Basla:


Goto Basla
 
ben ZATEN butona basıldığında sadece bi kere "1" vermesini ve durmasını istiyorum..
" i " değişkenine 0-10 arası değer veriyorum hala proteusta devreye enerji verdiğim anda led iki defa yanıp sönüyor ve duruyor..bir defalık " 1 " alamıyorum sorun o zaten dostum..
 
void main()

{
ANSEL = 0; // ADc girişleri dijitale ayarlandı
CMCON = 7; // KARŞILAŞTIRILMA modüllü kapatıldı
TRISIO.F1= 1; // F1 GİRİŞ
TRISIO.F5= 0; // F5 ÇIKIŞ
// GPIO çıkışa yönlendirildi
GPIO = 0; // GPIO sıfırlandı


{ unsigned char i;

if(GPIO.F1=1)
{
for(i=0;i<=10;i++)
{
GPIO.F5=1;
Delay_ms(500);
GPIO.F5=0;
Delay_ms(500);
}
}
else
{
GPIO.F5=0;

}}}


Mikroc'de port, yazmaç, değişken tanımlamaları en başta parantez kullanmadan yapılıyor olmalı yani main fonksiyonuna dahil edilmemeli.
Bunun dışında, yazdığınız for döngüsü şöyle işliyor: Giriş 1 olduğunda kez 2. for döngüsü 11 kez işliyor( çıkış 11 kez 500ms on-500 ms off oluyor)

Sizin yapmanız gereken:
Tanımlamaları başa yazın
Main bloğuna da.

Kod:
while(1)
{
if(GPIO.F1=1)
{
GPIO.F5=1;
Delay_ms(500);
GPIO.F5=0;
Delay_ms(500);
}
}

yazın. Bu şekilde giriş on olduğunda çıkış da 1 sefere mahsus on olmalı.

Başarılar dilerim
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,879
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst