Пара вопросов:
- Вы определили тип
U8
с чем-то вроде typedef unsigned char U8;
?
- Вы определили
LCD_LANGUAGE
как LANG_1
или LANG_2
?
Причина, по которой я спрашиваю, заключается в том, что этот небольшой фрагмент ниже компилируется и работает просто отлично:
#include <stdio.h>
typedef unsigned char U8;
#define LCD_LANGUAGE LANG_1
static const U8 userFont[8][8] =
{
#if (LCD_LANGUAGE == LANG_1)
{ 0x0E, 0x09, 0x09, 0x1D, 0x09, 0x09, 0x0E, 0x00 },
{ 0x03, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x09, 0x06, 0x0F, 0x01, 0x02, 0x04, 0x0F, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x15, 0x0E, 0x04, 0x00 },
{ 0x11, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x19, 0x06, 0x09, 0x04, 0x02, 0x09, 0x06, 0x00 },
{ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }
#elif (LCD_LANGUAGE == LANG_2)
{ 0x0A, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x04, 0x00, 0x1E, 0x04, 0x04, 0x04, 0x1E, 0x00 },
{ 0x0A, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x04, 0x00 },
{ 0x0F, 0x10, 0x10, 0x0E, 0x01, 0x1E, 0x04, 0x00 },
{ 0x0E, 0x00, 0x0F, 0x10, 0x17, 0x11, 0x0F, 0x00 },
{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }
#endif
};
int main (void) {
printf ("0x%02x 0x%02x\n", userFont[0][0], userFont[2][2]);
return 0;
}
производство:
0x0e 0x0f