CCS uzmanları bi bakarmısınız

kumsaatci

Üye
Katılım
26 Nis 2009
Mesajlar
18
Puanları
1
Arkadaslar acilen yetiştirmem gereken bi işvar.
Şu an tarih 26.nisan.2009 bu işi 8.mayıs.2009 a kadar vermeliyim.

Olay bir butonla 7-seg ile 0-F arası sonsuz sayıcı yapmalıyım.

program şu

for (;;)
{
if (input(but))
{
delay_ms(15);
for(;;)
{
for(i=15;i>=0;i--)
{
output_D(digit);
delay_ms(100);
}
}
}
}

Ama for döngüsünde işin içine 0 girince sonsuz dögü bile bir kez çalışıyor.
bu durum da

const int digit[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

olan diziyi

const int digit[17]={0x00,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

şeklide yazıp
for döngüsünü de

for(i=16;i>=1;i--)

şeklide yazmam gerekiyor.

BUNUN BAŞKA BİR CALIŞMA YOLUNU BİLEN VARSA YARDIMINA İHTİYACIM VAR

ŞİMDİDEN TEŞEKKÜR EDERİM
 
bu arada arkadaslao şemkiren yüzler benden diil
o fo r un sonsuz döngüsüydü
for (; ; ) yani
 
for(i=15;i>=0;i--) döngüsünün içine if(i==0){ i=15; goto devam;} şeklinde bi kod eklesen devam etiketini de for(i=15;i>=0;i--) 'un başına koysan nasıl olur acaba?

bi fikir..
 
for ( ; ; )
{
if (input(but))
{
delay_ms(15);
for( ; ; )
{
for(i=15;i>=0;i--)
{
output_D(digit);
delay_ms(100);
}
}
}
}

verdiğin kodda içte de bir sonsuz döngü kullanmışsın, o sonsuz döngünün dışına sanırım hiç çıkmayacaktır ? sorun bu olmasın ?
 
S.A.
Arkdaşm Altaş kitap evinin sitesine gir orada ccs c kitabının içineki uygulamalar var onları incele derim. Kolay gelsin.
 
Kodunu inceledim. Bir iki ufak yerini değiştirdim. Görünce farkedeceksin zaten. Ben genelde i-- yerine i++ gibi kullanmayı seviyorum ondan orasını öyle kendime göre değiştirdim. Bir de for( ; ; ) işlemini pek sevmediğim için orasını da while(true) şeklinde değiştirdim. Bu dediklerime göre de bir iki yeri değiştirmişimdir. Ama proteusta simüle ettim. Gayet te güzel çalışıyo. En azından anlattığına göre güzel çalışıyo. Şemayı ve kodları ekliyorum.


kodlar ise:

Kod:
#include "C:\Documents and Settings\mecaz\Desktop\ou\main.h"

int i=0;

const int digit[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
  
   set_tris_b (0x01);
   set_tris_d (0x00);
   output_b (0x00);
   output_d (0x00);

   while(true){
        if(input(PIN_B0)){
            for(i=0;i<=15;i++)
            {
                output_d(digit[15-i]);
                delay_ms(100);
            }
       }
       
        delay_ms(15);
    }

}

bunlarla uğraşmak istemiyorsan da eklenti olarak ekledim. incelersin...
 

Ekli dosyalar

  • ou.rar
    24.1 KB · Görüntüleme: 5
for ( ; ; )
{
if (input(but))
{
delay_ms(15);
for( ; ; )
{
for(i=15;i>=0;i--)
{
output_D(digit);
delay_ms(100);
}
}
}
}

verdiğin kodda içte de bir sonsuz döngü kullanmışsın, o sonsuz döngünün dışına sanırım hiç çıkmayacaktır ? sorun bu olmasın ?


burada istenen butona basınca 0-F arasında sonsuz saymasıydı
orada sonsuz döngü şart yani
 
S.A.
Arkdaşm Altaş kitap evinin sitesine gir orada ccs c kitabının içineki uygulamalar var onları incele derim. Kolay gelsin.

dostum Serdar ÇİÇEK in kitabına diyorsa zaten bizim ders kitabı ama hoca yetinmiyor işte

teklifin için tesekkür ederim
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,242
Kullanıcılar
449,839
Son üye
Qkay

Yeni konular

Geri
Üst