pıc 16f877a ile displayı 0-9 arası ileri geri saydırmak

uufuk944

Üye
Katılım
31 May 2010
Mesajlar
40
Puanları
1
Yaş
30
ARKADAŞLAR BEN PIC 16F877A İLE DEVRE YAPICAM VE DİSPLAYI 0-9' A KADAR A0 BUTONUNA BASINCA İLERİ A1 BUTONUNA BASINCA GERİYE SARICAK YANİ 1. BUTONA BASINCA ÖRNEĞİN DİSPLAY 0'DA İSE BİRİNCİ BUTONA BASINCA 1 OLACAK İKİNCİ BUTONA BASINCA TEKRAR 0 OLACAK BU ŞEKİLDE DEVRE LAZIM BENDE BİR DEVRE VAR AMA TAM İSTEDİĞİM DEVREMİ BİLMİYOM AÇIKCASI İŞTE YAZILIŞI

int i;
set_tris_a(0xff);
set_tris_b(0x00);
while(1)
{
i>0;
output_b(i);
if(input(pin_a0)&&i<10);
i++;
delay_ms(1000);
}
if(input(pin_a1)&&i>0);
{
i--;
delay_ms(1000);
}
}

acaba bu devre tam istediğim devremi bilenler yardımcı olurlarsa sevinirim
 
probleminizi nasıl hallettiğinizi yazarsanız diğer arkadaşlarda tecrübenizden faydalanmış olurlar :)
 
probleminizi nasıl hallettiğinizi yazarsanız diğer arkadaşlarda tecrübenizden faydalanmış olurlar :)

yazıcaktım ama okul işleri işte çok meşgulüm bir yandan pıc bir yandan plc den geçmeye çalışıyorum...

&&i>0 siliyoruz i>0 siliyoruz i>0 yerine i=0 koyuyoruz ... işlem tamamdır.. D:
 
Selamlar;

&&i>0 siliyoruz i>0 siliyoruz i>0 yerine i=0 koyuyoruz ... işlem tamamdır.. D:

Kod:
if(input(pin_a1) && i>0) 
{
   i--;
   delay_ms(1000);
}

koşullu ifadesinde i>0 yerine i=0 koyarsanız :

Önce a1'e bağlı butona basarsanız i=255 olur
Arttır butonuna basarsanız i<10 olmadığı için artmaz
Eksilt butonuna basıldığında da i=0 olmadığı için i'nin içeriği eksilmez.
i, 255 olarak kalır.

önce a0'a bağlı butona basarsanız i=1 olur
arttır butonu ile i içeriği 10'a kadar arttırılabilir ve öyle kalır.
eksilt butonu çalışmaz çünki bir daha i=0 olamaz.

Sonuçta;

*sadece i>0; satırını i=0; olarak değiştirilmeli.

*i'nin başta söylendiği gibi 10'a değil 9'a kadar artması isteniyorsa:

if(input(pin_a0)&&i<10) yerine:
if(input(pin_a0)&&i<9) yazılmalı.

*if'li ifade satırlarının sonuna noktalı virgül konmaz.

*Program başında #use fast_io(a) gibi bir komut koymadıysanız, tris ayarlarını manuel yapmanız gerekmez, derleyici bunu komutlara göre otomatik yapar.

Başarılar dilerim.
 
Selamlar;



Kod:
if(input(pin_a1) && i>0) 
{
   i--;
   delay_ms(1000);
}

koşullu ifadesinde i>0 yerine i=0 koyarsanız :

Önce a1'e bağlı butona basarsanız i=255 olur
Arttır butonuna basarsanız i<10 olmadığı için artmaz
Eksilt butonuna basıldığında da i=0 olmadığı için i'nin içeriği eksilmez.
i, 255 olarak kalır.

önce a0'a bağlı butona basarsanız i=1 olur
arttır butonu ile i içeriği 10'a kadar arttırılabilir ve öyle kalır.
eksilt butonu çalışmaz çünki bir daha i=0 olamaz.

Sonuçta;

*sadece i>0; satırını i=0; olarak değiştirilmeli.

*i'nin başta söylendiği gibi 10'a değil 9'a kadar artması isteniyorsa:

if(input(pin_a0)&&i<10) yerine:
if(input(pin_a0)&&i<9) yazılmalı.

*if'li ifade satırlarının sonuna noktalı virgül konmaz.

*Program başında #use fast_io(a) gibi bir komut koymadıysanız, tris ayarlarını manuel yapmanız gerekmez, derleyici bunu komutlara göre otomatik yapar.

Başarılar dilerim.


güzel tespitler.
 

Forum istatistikleri

Konular
129,880
Mesajlar
930,991
Kullanıcılar
452,753
Son üye
Emrecannnn

Yeni konular

Geri
Üst