Olá,
Estou utilizando o MikroC Pro for PIC para criar um código para um PIC 16F877A, porém estou enfrentando uma dificuldade com relação à memória RAM do mesmo. Ele possui 368 Bytes de memória RAM.
Este programa deve exibir textos no display, e tais textos estão divididos em aproximadamente 640 Bytes de memória, pois são divididos em 40 char string[16]. Algo como:
char LCDstringUm[16] = "ABCDEFGHIJKLMNOP";
char LCDstringDois[16] = "TEXTO DO DISPLAY";
void main(){
lcd_setCursor(0, 0);
lcd_print(LCDstringUm);
lcd_setCursor(0, 1);
lcd_print(LCDstringDois);
}
Estou tentando pensar em uma forma de economizar memória para execução disso, mas até agora sem sucesso. A primeira forma que pensei foi criar um char alfabeto[26] = {‘A’,‘B’,‘C’,…,‘Z’} e utilizar estas variáveis para montar um char LCD_string[16] e exibi-lo na tela, mas isso ocupou ainda mais espaço da memória RAM, de acordo com o compilador.
char LCDstring[16];
char characters[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
void setStringUm(){
int i;
for(i=0; i<16; i++){
LCDstring[i] = characters[i];
}
}
void setStringDois(){
LCDstring[0] = characters[19];
LCDstring[1] = characters[04];
LCDstring[2] = characters[23];
LCDstring[3] = characters[19];
LCDstring[4] = characters[14];
LCDstring[5] = ' ';
LCDstring[6] = characters[3];
LCDstring[7] = characters[14];
LCDstring[8] = ' ';
LCDstring[9] = characters[3];
LCDstring[10] = characters[8];
LCDstring[11] = characters[18];
LCDstring[12] = characters[15];
LCDstring[13] = characters[11];
LCDstring[14] = characters[0];
LCDstring[15] = characters[24];
}
void main(){
lcd_setCursor(0, 0);
setStringUm();
lcd_print(LCDstring);
lcd_setCursor(0, 1);
setStringDois();
lcd_print(LCDstring);
}
Percebi que no primeiro código tem apenas dois arrays totalizando 32 Bytes, enquanto no segundo totalizou 42 Bytes, porém mesmo com uma escala maior o consumo de memória aumenta.
Alguém já fez ou viu algo assim?