"Not enough RAM" dans mikroC

Résolu
handballeur68 Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   -  
 loupius -
Bonjour,

Comme l'indique le titre du sujet, je travaille sur mikroC, dans le but de programmer un PIC. Cependant, lorsque je veux compiler, il me dit qu'il n'y a pas assez de RAM. Or je trouve que mon programme n'est pas très long comparé aux grands programmes que j'ai déjà vu.
Quelqu'un aurait il une solution ? Je travaille sur un PIC P16F887A et voici le code :




void main()
{
unsigned char e = 3;
unsigned char premiere = 0;
unsigned char deuxieme = 0;
unsigned char troisieme = 0;
unsigned char quatrieme = 0;

unsigned int codeEnVigueur = 1234;
unsigned int premiereP = 0;
unsigned int deuxiemeP = 0;
unsigned int troisiemeP = 0;
unsigned int quatriemeP = 0;
unsigned int total = 0;
char i = 0;

Glcd_Init(&PORTB, 0,1,2,3,5,4, &PORTD);
Glcd_Fill(0);
Glcd_Set_Font(FontSystem5x8, 5, 8, 32);



ADCON1 = 0b00000110;
TRISA = 0b11111111;
TRISB = 0b11111100;
while(1)
{
Glcd_Write_Text("Il vous reste", 0, 0, 1);
Glcd_Write_Text(e, 0, 1, 1);
Glcd_Write_Text("essai", 3, 1, 1);

if(e == 0)
{
Glcd_Write_Text("Serrure bloquée pour 10 secondes", 0, 0, 1);
Delay_ms(10000);
}
else
{
if(i < 4)
{
Glcd_Write_Text("Saisir code!", 0, 0, 1);
}



switch (i)
{
case 0:

while(i != 1)
{
if (PORTA.F0==1)
{
premiere = 0;
i++;
}

else if(PORTA.F1 == 1)
{
premiere = 1;
i++;
}
else if(PORTA.F2 == 1)
{
premiere = 2;
i++;
}
else if(PORTA.F3 == 1)
{
premiere = 3;
i++;
}
else if(PORTA.F4 == 1)
{
premiere = 4;
i++;
}
else if(PORTA.F5 == 1)
{
premiere = 5;
i++;
}
else if(PORTA.F6 == 1)
{
premiere = 6;
i++;
}
else if(PORTA.F7 == 1)
{
premiere = 7;
i++;
}
else if(PORTC.F0 == 1)
{
premiere = 8;
i++;
}
else if(PORTC.F1 == 1)
{
premiere = 9;
i++;
}
}
break;

case 1:

while(i != 2)
{
if (PORTA.F0 == 1)
{
deuxieme = 0;
i++;
}

else if(PORTA.F1 == 1)
{
deuxieme = 1;
i++;
}
else if(PORTA.F2 == 1)
{
deuxieme = 2;
i++;
}
else if(PORTA.F3 == 1)
{
deuxieme = 3;
i++;
}
else if(PORTA.F4 == 1)
{
deuxieme = 4;
i++;
}
else if(PORTA.F5 == 1)
{
deuxieme = 5;
i++;
}
else if(PORTA.F6 == 1)
{
deuxieme = 6;
i++;
}
else if(PORTA.F7 == 1)
{
deuxieme = 7;
i++;
}
else if(PORTC.F0 == 1)
{
deuxieme = 8;
i++;
}
else if(PORTC.F1 == 1)
{
deuxieme = 9;
i++;
}
}
break;

case 2:

while(i != 3)
{
if (PORTA.F0 == 1)
{
troisieme = 0;
i++;
}

else if(PORTA.F1 == 1)
{
troisieme = 1;
i++;
}
else if(PORTA.F2 == 1)
{
troisieme = 2;
i++;
}
else if(PORTA.F3 == 1)
{
troisieme = 3;
i++;
}
else if(PORTA.F4 == 1)
{
troisieme = 4;
i++;
}
else if(PORTA.F5 == 1)
{
troisieme = 5;
i++;
}
else if(PORTA.F6 == 1)
{
troisieme = 6;
i++;
}
else if(PORTA.F7 == 1)
{
troisieme = 7;
i++;
}
else if(PORTC.F0 == 1)
{
troisieme = 8;
i++;
}
else if(PORTC.F1 == 1)
{
troisieme = 9;
i++;
}
}
break;

case 3:

while(i != 4)
{
if (PORTA.F0 == 1)
{
quatrieme = 0;
i++;
}

else if(PORTA.F1 == 1)
{
quatrieme = 1;
i++;
}
else if(PORTA.F2 == 1)
{
quatrieme = 2;
i++;
}
else if(PORTA.F3 == 1)
{
quatrieme = 3;
i++;
}
else if(PORTA.F4 == 1)
{
quatrieme = 4;
i++;
}
else if(PORTA.F5 == 1)
{
quatrieme = 5;
i++;
}
else if(PORTA.F6 == 1)
{
quatrieme = 6;
i++;
}
else if(PORTA.F7 == 1)
{
quatrieme = 7;
i++;
}
else if(PORTC.F0 == 1)
{
quatrieme = 8;
i++;
}
else if(PORTC.F1 == 1)
{
quatrieme = 9;
i++;
}
}
break;
}
}
}

premiereP = premiere*1000;
deuxiemeP = deuxieme*100;
troisiemeP = troisieme*10;
quatriemeP = quatrieme*1;
total = premiereP + deuxiemeP + troisieme + quatriemeP;
e--;


if(total == codeEnVigueur)
{
Glcd_Write_Text("Code OK", 0, 0, 1);
Glcd_Write_Text("Ouverture gache.", 0, 1, 1);
PORTB.F1 = 1;
Delay_ms(5000);
PORTB.F1 = 0;
}


}

23 réponses

handballeur68 Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   28
 
Tu dévis du sujet

Si c'est possible et je le sais. Tout ce qui est " const char..." il le met dans le ROM.
C'est sur ça que je m'appuie. Je stocke mon texte là bas. Ce que j'attends c'est le code qui permette d'afficher un 'char' sur le LCD. Le connais tu ?
Merci
0
loupius
 
As-tu lu la doc du mikroC ? On y trouve:
Lcd_Chr (1, 2, 'h') ou Lcd_Chr_Cp ('i').
0
handballeur68 Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   28
 
Voila la réponse qu'il me fallait =)=)

Merci de ta disponibilité et pour la rapidité de tes réponses.
0
handballeur68 Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   28
 
pff j'ai toutes les emmerdes, maintenant que j'ai pu ramener ma carte PIC chez moi, mon PC n'arrive pas à l'installer sur mon PC, même avec le CD d'installation ... =S

Faut il un driver particulier ou une autre idée ?
0
loupius
 
Je travaille sous Linux et je n'ai pas d'idée sur ton problème.
Maintenant que tu as reposé cette question sur une autre entrée de ce forum, tu peux déclarer cette question comme résolue.
Bonne continuation.
0