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
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.
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 ?
@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
}
biraz daha açiklayici olabilirmisin? Daha ziyade sorunun nedeni hakkinda.
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.
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