Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите плиз
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MMP
Проблема с выводом переменной на LCD:
есть функция:
void LCD4_PutS(unsigned char *data)
{
unsigned char c = 0;

while (data[c] != 0) {
LCD4_WR4bits( data[c] >> 4);
LCD4_WR4bits( data[c++]);
DELAY;
}
}

Пишув main
LCD4_PutS("Ля-ля");
все ок
задаю впеременную
unsigned char Mes0[]={"Ля-ля"};
или
unsigned char Mes0[]={"131,124,131"};

и пишу

LCD4_PutS(Mes0);
то выдвет ошибку multiple define
zltigo
unsigned char *Mes0="Ля-ля";
unsigned char Mes0[16]={ '1', '3', '1', '/0' };
rezident
Не
Код
LCD4_PutS(Mes0);
а
Код
LCD4_PutS(&Mes0);
надо. У вас же указатель в функцию передается, а не значение переменной.
MMP
Спасибо, но ни то не другое не помогло.
Сам понимаю, что где-то не стыковка в определении переменных, но уже просто заглючил.
rezident
Я конечно не великий знаток Си, но что мешает написать так?
Код
void LCD4_PutS(unsigned char *data)
{
   while (*data != 0)
   {
      LCD4_WR4bits(*data>>4);
      LCD4_WR4bits(*data++);
      DELAY;
   }
}
zltigo
Цитата(rezident @ Apr 7 2006, 18:41) *
Не
Код
LCD4_PutS(Mes0);
а
Код
LCD4_PutS(&Mes0);
надо. У вас же указатель в функцию передается, а не значение переменной.

Я Вас умоляю! Два перечисленных ранее варианта формально должны компилироваться и работать -
и при всей НЕНУЖНОЙ запутанности инициализации речь может идти о личных пристрастиях КОНКРЕТНОГО компилятора.

А вот предложенный вами вариант, напротив, должен отвергнуть ЛЮБОЙ компилятор.
Ну полные непонятки с адресом Mes0 :-) У Mes0[0] есть адрес и &Mes0[0] полностью эквивалентно
Mes0.

Цитата
LCD4_PutS(Mes0);
то выдвет ошибку multiple define


Может ХОТЬ СТРОЧКУ УКАЖЕТЕ НА КОТОРУЮ РУГАЕТСЯ!
Или Вы чего-то не договариваете, либо
Mes0 уже где-то существует, либо .... а нет других вариантов.












Цитата(rezident @ Apr 7 2006, 19:17) *
Я конечно не великий знаток Си, но что мешает написать так?

Ничего не мешает и 'правильнее', только к вопросу отношения не имеет.
MMP
вот проект на ICC 6.31
zltigo
Цитата(MMP @ Apr 7 2006, 20:24) *
вот проект на ICC 6.31

Ну и невооруженным взглядом видны ДВА Mes0
- в lcd.c
- в all.h

Посему и ругань при компиляции lcd.c в который включен all.h

в all.h естественно должно быть:
extern unsigned char Mes0[];
MMP
Все понял ошибку.
Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.