ccs c de dizi oluşturma ve değer atama hakkında

Başlatan fractal, 09 Ağustos 2012, 14:11:53

fractal

ccs c de 60 uzunlukta bir dizi oluşturuyorum sonra bir float değişkenim var onu int değişkenine atıyorum ve teker teker yazıyorum.proteusta gözlem yapıyorum. şöyle bir sorun var. "0" değerlerini diziye yazmıyor.yani dizinin 40---ile 50 arasındaki tüm değerleri sıfır ama oraya yazma olmuyor.neden neden?
Restantum cogniscutur Quantum deligutur

Salih

#1
Alıntı yapılan: fractal - 09 Ağustos 2012, 14:11:53
ccs c de 60 uzunlukta bir dizi oluşturuyorum sonra bir float değişkenim var onu int değişkenine atıyorum ve teker teker yazıyorum.proteusta gözlem yapıyorum. şöyle bir sorun var. "0" değerlerini diziye yazmıyor.yani dizinin 40---ile 50 arasındaki tüm değerleri sıfır ama oraya yazma olmuyor.neden neden?

CCS de programın ASM sine bak orada işlem istediğin gibi yapılıyorsa, problem proteusdadır. Program gerçek devrede çalışır.

a_a_sezen

0 ile '\0' karışıklığı oluşup ilk 0 da dizi sonu olarak görüyor olabilir... Tersi atama yaparken de gerçekleşiyor olabilir...
Güce ve Geleceğe Güvenle...

fractal

Restantum cogniscutur Quantum deligutur

a_a_sezen

Nasıl kodladığınızı bilmediğim için farklı bir tarafa dikkatinizi çekmek istemiştim sadece...
Ben olsaydım, (60 elemanlı dizinizin int olduğunu sanıyorum. Tam açık değil...)
İşaretçi ile yapardım. Dizi aktarmaya çalışmazdım.
CCS C hiç kullanmadım.. Kendine özgü bir yapısı varmı bilmiyorum.. ama..
Önerimi örneklemek açısından aşağıdaki kodu denedim... MplabX xc8 de denedim..
İlk aklıma geleni kodladığım için daha şık çözümler olabilir...
Kolay gelsin...
    char i = 0;
    int z[40] = {1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,4,8,16,32,64,128}; 
    int *p;
    p = z; // işaretçiye dizi adresini verdim..
    for(i = 0; i < sizeof(z)/sizeof(int); i++) { //dizi eleman sayısına kadar
        PORTB = *(p + i);      // portb de durumu gözle...
        _delay(100000);
    }
Güce ve Geleceğe Güvenle...