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,799
Mesajlar
930,198
Kullanıcılar
452,596
Son üye
Medi-terranean

Yeni konular

Geri
Üst