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

Katılım
28 Tem 2007
Mesajlar
33
Puanları
1
Yaş
40
Arkadaşlar herkese selamlar. Bir program yazdım pic 16f877 nin hafızasına sığmıyor.Ram dolduğu için programı derlemiyor.Yerine başka bir entegre denedim o da lcdde çok sapma yapıyor.Program hafızası geniş bir entegre kullanıyorum.16f877 kadar iyi bir Lcd çıkışı alamıyorum.bazı harfleri göstermiyor.lcdnin 2. satırına yazdığım kelimeleri 1. satırda yazıyor.Bana önerebileceğiniz entegre falan var mı?
Alt program deneyerek yapsam olur mu?
Ama onu da denedim bn tam alt programı çalıştıramıyorum.Alt progrma yazdığım komutlar çalışmıyor.Yardımcı olur musunuz?
 
"Program memory" yetersiz diyorsan;
877 nin "program memory" kapasitesi 8192 word dur.
Program derlendiğinde kaç adet "word" derlendi mesajı çıkıyor?
8192 yi aşıyormu.RAM dan bahsetmişsin.Hangi RAM bu? Değişkenlerin saklandığı RAM değil sanırım.
 
Bende anlayamadım ya zaten neden böyle oldu
line 112 yazıyor ve devam ediyor şöyle:eek:ut of rom, a segment or the program too large main

----------------------------------------------------------------------

tam olarak şöyle bir hata çıkıyor kardeş karşıma : ***Error 71"irregularverbs.c"Line 11(0,1):Out of ROM, A segment or the program is too large MAIN

Bende anlayamadım neden böyle yaptığını ya



_________________________________________________

[size=10pt]Arka Arkaya mesaj atmak yasaktır.Lütfen yukarıdan DEĞİŞTİR seçeneğini kullanınız.[/size]

Bu mesaj en son "4 haziran 2008 " tarihinde, saat " 10:04 " itibariyle görkem tarafından

düzenlenmiştir.
 
Ne programı bu? 8192 yi aşıyorsa epey detaylı olmalı.
 
#include <Lcd.C>
#include <string.h>

int8 x=1,y=0;

void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,1,1);

set_tris_b(0xff);
output_b(0x00);
set_tris_c(0x00);
output_c(0x00);
lcd_init();
lcd_send_byte(0,0x01);
delay_ms(500);
lcd_send_byte(0,0x0c);
delay_ms(1000);


while(1)


{

if(input(pin_b0)==1){ lcd_send_byte(0,0x01); y=1; }
if(input(pin_b1)==1){ y=0;if(x==1){x=50;}else{x--;} lcd_send_byte(0,0x01); while(input(pin_b1)==1); }
if(input(pin_b2)==1){ y=0; x++; if(x==51){x=1;} lcd_send_byte(0,0x01); while (input(pin_b2)==1); }
if(y==0){
if(x==1){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} if(x==2){ lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==3){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} if(x==4){ lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==5){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} if(x==6){ lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==7){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} if(x==8){ lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==9){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} if(x==10){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==11){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==12){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==13){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==14){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==15){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==16){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==17){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==18){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==19){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==20){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==21){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==22){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==23){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==24){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==25){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==26){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==27){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==28){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==29){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==30){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==31){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==32){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==33){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==34){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==35){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==36){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==37){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==38){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==39){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==40){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==41){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==42){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==43){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==44){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==45){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==46){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==47){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==48){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");}
if(x==49){lcd_gotoxy(1,1);printf(lcd_putc,"PRESENT = ");} if(x==50){lcd_gotoxy(1,1); printf(lcd_putc,"PRESENT = ");} }


if(y==1){
if(x==1){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==26){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==2){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==27){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==3){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==28){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==4){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==29){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==5){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==30){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==6){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==31){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==7){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==32){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==8){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==33){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==9){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==34){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==10){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==35){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==11){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==36){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==12){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==37){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==13){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==38){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==14){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==39){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==15){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==40){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==16){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==41){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==17){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==42){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==18){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==43){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==19){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==44){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==20){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==45){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==21){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==46){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==22){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==47){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==23){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==48){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==24){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==49){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}
if(x==25){ lcd_gotoxy(1,1); printf(lcd_putc,"PAST = ");} if(x==50){ lcd_gotoxy(1,2); printf(lcd_putc,"PERFECT = ");}}

}
-------------------------------------------------------------------------------------------

gördün mü
hem daha bu bitmemiş hali

-------------------------------------------------------------------------------------------

Bu program da 50 tane ingilizce kelime olacak
herhangi bir kelimeyi seçince sana 2. ve 3. hallerini gösterecek
Ben basit olur sanmıştım yazmaya başlayınca baya doldu gitti

--------------------------------------------------------------------------------------------

[Bu durumda ne yapılabilir arkadaşlar?



_________________________________________________

[size=10pt][size=10pt] Arka Arkaya mesaj atmak yasaktır.Lütfen yukarıdan DEĞİŞTİR seçeneğini kullanınız.[/size]

[/size]

Bu mesaj en son " 4 haziran 2008 " tarihinde, saat " 10:01 " itibariyle görkem tarafından düzenlenmiştir.
 
C ile çalışmadım ama epey Lcd komutu var. bunlar memory yi dolduruyor olabilir.
 
başka türlüde lcdye yazdıramadım ki
bunları

--------------------------------------------------------------------------------


aslında öyle bir komut olması lazım ki ben unuttum galiba değişkeni lcdye tek bir komutla yazdırıp.O konut sayesinde değişken değiştikçe lcddeki yazıya yansıtan bir komut olması gerekli
sayısal bir değişken olsa onu aktarıyorum ama bu sitring ifadeyi nasıl bu şekilde aktarabilirim?



_________________________________________________

[size=10pt]Arka Arkaya mesaj atmak yasaktır.Lütfen yukarıdan DEĞİŞTİR seçeneğini kullanınız.
[/size]

Bu mesaj en son "4 haziran 2008 " tarihinde, saat " 10:07 " itibariyle görkem tarafından düzenlenmiştir.
 
En kısa çözüm 16F877 yerine 18F452 yada fazla aya gerekmediğini düşündüğüm için 18F252 kullanabilirsin. bunların özellikleri daha iyi tabi hafıza ve performans canavarı üst düzey dillere ne kadar dayanabilirler bilmiyorum.

diğer bir alternatif olarak algoritmada değişikliğe gidebilirsin.

üst düzey diller kullandığın için iki alternatif içinde geçiş yapman çok zor olmasa gerek?
 
ben de asm ile yaz derim asm ile yazdığında büyük ihtimal 16f877 ye sığacaktır
ama programı kaç ayda bitirirsin bilemem
 

Forum istatistikleri

Konular
130,052
Mesajlar
932,567
Kullanıcılar
453,033
Son üye
Luxate

Yeni konular

Geri
Üst