Наверное люди делятся на две категории: одни понимают указатели, другие нет
Не так давно я об этом уже спрашивал, потом забросил, т.к. не до того было, сейчас перечитал, потом на других ресурсах почитал... Да, я все-таки из второй категории.
Имеется функция вывода текста на графический дисплей, к которому прилагается двухмерный массив констант размерностью 159*5 байт, содержащий символы:
Код: Выделить всё
const unsigned char lcd_font[159][5] =
{
0x00, 0x00, 0x00, 0x00, 0x00, // sp - 0
0x00, 0x00, 0x2f, 0x00, 0x00, // ! - 1
0x00, 0x07, 0x00, 0x07, 0x00, // " - 2
0x14, 0x7f, 0x14, 0x7f, 0x14, // # - 3
0x24, 0x2a, 0x7f, 0x2a, 0x12, // $ - 4
и т.д.
}
Функция выглядит так:
Код: Выделить всё
void lcd_out (unsigned char row, unsigned char col, unsigned char *text)
{
unsigned char ch, i;
unsigned char *ptr;
lcd_setxy(row,col*6);
ptr = lcd_font; // a value of type "const unsigned char (*)[5]" cannot be assigned to an entity of type "unsigned char *"
while (*text != "\0") // operand types are incompatible ("unsigned char" and "char *")
{
ch = *text;
if ((ch >= 32) && (ch <= '~')) ch -= 32;
else ch = 255;
for (i = 0; i < 5 ; i++)
{
lcd_send(*(ptr+ch * 5 + i),DTA);
}
lcd_send(0,DTA); // Additional space
text++;
}
}
Вызываю функцию так:
Что я делаю неправильно?
Ошибки указаны выше, плюс есть еще предупреждение, касающееся вызова функции. Его я скопировать не могу, оно в виде подсказки вылезает, но говорится там о конвертации между указателем и целым с изменением знака

Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.