程序如何解决嵌入式系统内存不足问题
比如有以下代码.
const unsigned char EnFont[][6] =
{
EnFont[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
EnFont[6] = { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
EnFont[6] = { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
EnFont[6] = { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
EnFont[6] = { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
EnFont[6] = { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
EnFont[6] = { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
EnFont[6] = { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
EnFont[6] = { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
EnFont[6] = { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
EnFont[6] = { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
EnFont[6] = { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
}
void LCD_Write_Char(unsigned char c){
unsigned char line;
c -= 32;
for(line = 0;line < 3;line++){
LCD_Write_Byte(EnFont[c][line],1);
}
}
但是const依然占用内存,我整个系统只有128B内存,不可能够他占用啊,怎么塞进去,用switch..case每次在内部赋值?
void LCD_Write_Char(unsigned char c){
unsigned char line;
unsigned char EnFont[6];
c -= 32;
switch(c){
case 0:
EnFont[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // sp
break;
case 1:
EnFont[6] = { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }; // !
break;
default:
EnFont[6] = { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }; // horiz lines
break;
}
for(line = 0;line < 3;line++){
LCD_Write_Byte(EnFont[line],1);
}
}
但是也不对,数组不能如此赋值,那么应该怎么办?
我现在的目标是可以牺牲ROM空间来缓存内存充足.
如果要写成switch...case结构,那么每一个赋值很麻烦,我该如何转换原数组.
H子小LOLI
11 years, 9 months ago