Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: zamzam23 - 10 Ağustos 2010, 10:02:26

Başlık: ccs out of rom hatası
Gönderen: zamzam23 - 10 Ağustos 2010, 10:02:26
ccs de pic16f876 derlerken out of rom hatası alıyorum internette arastırdım bıraz #separate kullan main fonksiyonu parcala demısler. lcd_gotoxy ve printf(lcd_putc komutlarını ayrı fonksıynda yaptırdım ancak yıne aynı hatayı alıyorum main foksıyon da daha da parcalanmıyor. bu problemı nasıl asabılırım?
Başlık: Ynt: ccs out of rom hatası
Gönderen: radres - 10 Ağustos 2010, 10:09:20
Programın çok mu fazla yer kaplıyor? Yoksa programın fazla yer kaplamıyor ama yine de bu uyarıyı mı veriyor?
Başlık: Ynt: ccs out of rom hatası
Gönderen: zamzam23 - 10 Ağustos 2010, 12:08:43
program cok yer kaplamıyor. amasaolun cvp ıcın sorunu cozdum. main fonksiyonu daha da parçalanabiliyormuş.parcaladım sorun bitti. şimdi daha iyi anlıyorum neden goto ları sevmıyor programcılar diye.ana fonksiyonumda tek bir goto bıle kalmadı.tek bir sonsuz dongü o kadar.bu sorunu yasayan arkadaslar ıcın tek cozum:main fonksiyonunu parçalayın ayrı birer fonksiyon yapın ve her fonksiyuonun basında #separate kullanın.örn:
-----------------------
#separate
void sifrene(void)
{
//içerik buraya
}

//çağırırkende
sifrene();
--------------------------
hepsi bu kadar.
Başlık: Ynt: ccs out of rom hatası
Gönderen: radres - 10 Ağustos 2010, 12:10:48
#separate eki fonksiyona tam olarak nasıl bir özellik katıyor?
Başlık: Ynt: ccs out of rom hatası
Gönderen: zamzam23 - 10 Ağustos 2010, 12:51:45
fonksiyon her çağrıldığında yazmaçlar Stack alanına yedeklenip fonksiyonun bulunduğu adrese dallanılır ve fonksiyondan dönerken dönüş adresleri Stack'ten geri çekilerek program kaldığı yerden devam eder.fonksiyonun her çağrıldıgı yerde bunun bır kopyası olusturulmaz.olusturlsa daha hızlı calısırama separate kullanılırsa daha az kod üretilirken daha fazla Stack kullanılmış olur.daha yavas calsıır ama olsun
Başlık: Ynt: ccs out of rom hatası
Gönderen: radres - 10 Ağustos 2010, 13:00:27
Alıntı yapılan: zamzam23 - 10 Ağustos 2010, 12:51:45
fonksiyon her çağrıldığında yazmaçlar Stack alanına yedeklenip fonksiyonun bulunduğu adrese dallanılır ve fonksiyondan dönerken dönüş adresleri Stack'ten geri çekilerek program kaldığı yerden devam eder.fonksiyonun her çağrıldıgı yerde bunun bır kopyası olusturulmaz.olusturlsa daha hızlı calısırama separate kullanılırsa daha az kod üretilirken daha fazla Stack kullanılmış olur.daha yavas calsıır ama olsun

Teşekkürler.
Başlık: Ynt: ccs out of rom hatası
Gönderen: mistek - 30 Ağustos 2011, 08:46:47
Alıntı yapılan: zamzam23 - 10 Ağustos 2010, 12:08:43
program cok yer kaplamıyor. amasağolun cvp ıcın sorunu cozdum. main fonksiyonu daha da parçalanabiliyormuş.parcaladım sorun bitti. şimdi daha iyi anlıyorum neden goto ları sevmıyor programcılar diye.ana fonksiyonumda tek bir goto bıle kalmadı.tek bir sonsuz dongü o kadar.bu sorunu yasayan arkadaslar ıcın tek cozum:main fonksiyonunu parçalayın ayrı birer fonksiyon yapın ve her fonksiyuonun basında #separate kullanın.örn:
-----------------------
#separate
void sifrene(void)
{
//içerik buraya
}

//çağırırkende
sifrene();
--------------------------
hepsi bu kadar.

Burada örnek vermişsiniz ancak ben tam olarak anlayamadım biraz daha ayrıntılı anlatırmısınız.

Benim void main() fonksiyonumun altında bir sürü durum var bunları nasıl parçalı fonksiyona böleceğim gelişi güzel mi?8-10 satırda bir mi?
ROM kullanımı %54
RAM kullanımı %20