реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите плиз
MMP
сообщение Apr 7 2006, 16:20
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 7-07-05
Из: г.Магнитогорск
Пользователь №: 6 618



Проблема с выводом переменной на 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2006, 16:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



unsigned char *Mes0="Ля-ля";
unsigned char Mes0[16]={ '1', '3', '1', '/0' };


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2006, 16:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Не
Код
LCD4_PutS(Mes0);
а
Код
LCD4_PutS(&Mes0);
надо. У вас же указатель в функцию передается, а не значение переменной.
Go to the top of the page
 
+Quote Post
MMP
сообщение Apr 7 2006, 17:01
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 7-07-05
Из: г.Магнитогорск
Пользователь №: 6 618



Спасибо, но ни то не другое не помогло.
Сам понимаю, что где-то не стыковка в определении переменных, но уже просто заглючил.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2006, 17:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я конечно не великий знаток Си, но что мешает написать так?
Код
void LCD4_PutS(unsigned char *data)
{
   while (*data != 0)
   {
      LCD4_WR4bits(*data>>4);
      LCD4_WR4bits(*data++);
      DELAY;
   }
}
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2006, 17:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(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) *
Я конечно не великий знаток Си, но что мешает написать так?

Ничего не мешает и 'правильнее', только к вопросу отношения не имеет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
MMP
сообщение Apr 7 2006, 18:24
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 7-07-05
Из: г.Магнитогорск
Пользователь №: 6 618



вот проект на ICC 6.31
Прикрепленные файлы
Прикрепленный файл  time.rar ( 48.57 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2006, 18:36
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(MMP @ Apr 7 2006, 20:24) *
вот проект на ICC 6.31

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

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

в all.h естественно должно быть:
extern unsigned char Mes0[];


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
MMP
сообщение Apr 7 2006, 23:53
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 7-07-05
Из: г.Магнитогорск
Пользователь №: 6 618



Все понял ошибку.
Спасибо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.03176 секунд с 7
ELECTRONIX ©2004-2016