Перейти к содержанию
    

Помогите плиз

Проблема с выводом переменной на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не

LCD4_PutS(Mes0);

а

LCD4_PutS(&Mes0);

надо. У вас же указатель в функцию передается, а не значение переменной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, но ни то не другое не помогло.

Сам понимаю, что где-то не стыковка в определении переменных, но уже просто заглючил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я конечно не великий знаток Си, но что мешает написать так?

void LCD4_PutS(unsigned char *data)
{ 
   while (*data != 0) 
   {
      LCD4_WR4bits(*data>>4);
      LCD4_WR4bits(*data++);
      DELAY;
   }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не
LCD4_PutS(Mes0);

а

LCD4_PutS(&Mes0);

надо. У вас же указатель в функцию передается, а не значение переменной.

Я Вас умоляю! Два перечисленных ранее варианта формально должны компилироваться и работать -

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

 

А вот предложенный вами вариант, напротив, должен отвергнуть ЛЮБОЙ компилятор.

Ну полные непонятки с адресом Mes0 :-) У Mes0[0] есть адрес и &Mes0[0] полностью эквивалентно

Mes0.

 

LCD4_PutS(Mes0);

то выдвет ошибку multiple define

 

Может ХОТЬ СТРОЧКУ УКАЖЕТЕ НА КОТОРУЮ РУГАЕТСЯ!

Или Вы чего-то не договариваете, либо

Mes0 уже где-то существует, либо .... а нет других вариантов.

 

 

 

 

 

 

 

 

 

 

 

 

Я конечно не великий знаток Си, но что мешает написать так?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот проект на ICC 6.31

Ну и невооруженным взглядом видны ДВА Mes0

- в lcd.c

- в all.h

 

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

 

в all.h естественно должно быть:

extern unsigned char Mes0[];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...