16f877 out of rom hatası

Başlatan MURSEL, 03 Aralık 2007, 17:28:28

MURSEL

merhaba arkaşlar 16f877 de rom %52 gecince  böyle bi hata veriyor "out of rom,a segment or the program is to large probas "  %52 den sonra bi lcd komutu yazsam  bile bu hatayı veriyor"printf(lcd_putc,"\b%03u",tel2);" gibi  kaçırdıgım nokta nedir  daha önce farklı bi uygulamamdada %50 nin  üzerine cıktıgımda bu hatayı almıştım  bu konuda bilgisi olan arkaşların yardımını bekliyorum  selametle a.e.o

mikroserdar

arkadaşım merhaba. Ben de deaynı sorun oldu. ama ben CCS C'de yazıyordum. Eğer C'de yazıyorsan o hatayı vermemesi için yazdığın alt programlar void (main) dışında yazman gerek

void main()

{




}


void CPU_SETUP()

{

set_tris_b(0x11);
set_tris_a(0x20);
CCP_1_LOW=0;
CCP_1_HIGH=0;
setup_ccp1(ccp_capture_div_16);
enable_interrupts(int_ccp1);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(0);
setup_timer_0(rtcc_internal | rtcc_div_1);
disable_interrupts(int_timer0);
enable_interrupts(global);
set_timer0(0);

}

yani örnekte görüldüğü gibi cpu_setup () alt programı void (main) dışında.

yani alt programları ana programın dışında tutarsan ROM'da yer kazanmış olursun

kolay gelsin.
mikrodentleyici yaşam biçimidir.

MURSEL

arkadaşım öncelikle teşekkürler .. denedim fakat olamdı :(
"out of rom,a segment or the program is to large probas "  probas cagırdıgım bir fonksiyon adı yani main in içinden  cagırdım fonksiyon senin yazıları okuduktan sonra bir alt fonkisoyondaha oluşturdum fakat bu fonksiyonuda   propas  içinden cagırmış olmam   sorunun devam etemsi için sebebmi sence.. maine dönüm ordanmı cagırmam gerek ?

MURSEL

@mikroserdar  cok sagol arkaşım verdigin bilgiyle iş hallettim  arkadaşlara durumu kısa anlatayım karşılaştıkalrında benim gibi madur kalmasınlar
main()
{
probas();
}
probas()
{
//yazılımda yüklendigim fonkisoyon %52 rom dolunca program hata verdi

}


çözüm:
main()
{
while(1)
{probas();
arama();
}

probas()
{
//işlem
}
arama()
{
//işlem
}

picusta

biraz daha açiklayici olabilirmisin? Daha ziyade sorunun nedeni hakkinda.

Ziya

Bu konuda forumda en az iki başlık var. Birine geçen hafta cevap yazmıştım.

Sadece bir defa çağırdığınız alt program (fonksiyon) öncesine #separate talimatını ekleyeceksiniz. Derleyici tek seferde çağırılan fonksiyonları üst programa gömer (in-line yapar). Bunu ayırarak yapması için o talimatı kullanmanız gerekir.

ana program veya alt programları müstakil derlendiğinde 2k'yı geçmeyecek büyüklükte tutun.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

MURSEL

teşekkürler  ziya hocam  hatanın icerigi hakınnda bilgilendirdigin için    @picusta hatayla ilk defa karşılaştııgm için  sorun ile ilgili acıklayacak bilgim yoktu ziya  hocamız telafi etti .. a.e.o