16f877 hafıza yetersiz ve çözüm bulamadım yardım eder misiniz?

mrb arkadaşım programın başında hangi pic i kullanacağını belirtmemişsin ondan hata veriyor olabilir mi acaba ?

#include<16f877.h>
 
Biz baştan buyana hafıza yetmemesi üzerine yoğunlaştık. pic C dilini bilmediğim için bişey söylemek zor. Sn.elkgazi nin söylediği gibi farklı bir sebeb olabilir.
 
char *text = "mikroElektronika";

void main() {
TRISB = 0; // PORTB is output
Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
Lcd_Out(1, 1, text); // Print text to LCD, 2nd row, 1st column
}//~!

LCD ye yazdırmak için son komutu kullanabilrsin senin yazdığından daha kolay gibi duruyo sanki..
 
Arkadaşlar! Dikkatimi çeken bir husus, üst düzey dillerde her yapılan "Delay" tarzı işlemler ayrı bir döngü oluşturmakta bu da hafızayı yiyip bitirmektre. Bunun yerine programda 1 yerde (zamanlama hep aynıysa) delay kullanıp gerekli yerlerden asm de olduğu gibi CALL gidi alt yordam çağrıları yapılabilinir mi? en azından derlenirken tek delay döngüsü oluşur gibime geliyor.

Düşüncelerinizi aktarırsanız sevinirim.
 
sn abuzettin20 ye katılıyorum genelde asm koduna izin veriyor programlar
her gecikme için ayrı döngü kurulacağına tek döngü ile bütün gecikme işlemleri yapılabilir
hafıza kaplamaması için iyi bir yöntem
yüksek programlar her foksiyon için birden fazla asm komutu kullanır oysa basit bir iş için asm kullanmak iyi bir mantık
 
18f452 kullan 877 ile birebir bacak uyumlu kristal ayarlarına dikkat et gerisi kolay hemde 32k kapasite var onda

kal sağlıcakla
 
bende 16f628 de dediğin sorunu yaşadım ve aynı ayak yapısında 16f648 kullandım. olmasaydı iki işlemci birden kullanmayı düşünüyordum.
ayrıca c dili yerine picin yapısına daha uydun pbp(pic basic pro) da kullanabilirsin. bir kaç ayrı forumda hafızayı c den daha tasarruflu kullandığını okumuştum. yerinde olsam 16f452 ye geçerdim...

bence öncelikle programı bitir. sonunda kaç bayt olduğunu gör sonra bir karar daha verirsin(programdan kastım algoritma...) saygılarımla...
 
18f452 kullanabilirsin tabi ama gerek yok..
senin sorunun mainde yazdığın kodun çok uzun olması..
maine yazdığın kodu 3e böl mesela hepsini ayrı bir fonksiyon içine at ve mainde o fonksiyonları çağır.. bu sorunu çözecektir.. iyi çalışmalar..
 
merhabalar,
lcd ye bişeyler yazamamanın 877 nin hafızasıyla uzaktan yakından ilgisi yok ayrıca lcd ye bişeyler yazmak doğal olarak programı uygun bişekilde tasarlayamadığın takdirde hafızayı dolduracaktır.

iyi çalışmalar.
 

Forum istatistikleri

Konular
128,299
Mesajlar
916,535
Kullanıcılar
450,131
Son üye
mrtblkl

Yeni konular

Çevrimiçi üyeler

Geri
Üst