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

 
 
> символьные строки в MCC18
Слесарь
сообщение Jun 26 2010, 10:35
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Здравствуйте!
Чет мне как-то непривычно с компилятором MCC18, код:
Код
unsigned char buf[17];
buf[0] = 0X54;
buf[1] = 0x45;
buf[2] = 0X53;
buf[3] = 0X54;
buf[4] = 0;
lcd_puts( buf );

- работает и выводится на экран LCD текст, а вот код:
Код
lcd_puts( "Test" );

- неработает. Выводится мусор на экран.

Возможно причина в размерности строковых констант.

Подскажите, что нужно подкрутить?

Сообщение отредактировал rezident - Jun 26 2010, 21:01
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Слесарь
сообщение Jun 26 2010, 11:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Понятно.
Так это издержки компилятора? Это нельзя обойти чтоб использовать привычные lcd_puts( "Test" ); ?
PIC16 + HI-TECH компилятор, таких проблем небыло

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

CODE
void lcd_puts(unsigned char * s)
{
LCD_RS = 1; // write characters
while( *s )
{
lcd_write( *s );
s++;
}
}
Go to the top of the page
 
+Quote Post
msalov
сообщение Jun 29 2010, 08:38
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Код
"Test"
иммет тип rom char *
Замените
Код
void lcd_puts(unsigned char * s)
на
Код
void lcd_puts(unsigned char rom * s)
и ваша функция будет работать только со строками из флешь-памяти.
И
Код
lcd_puts( "Test" );
будет работать как и ожидается.Как пример можете посмотреть библиотечные функции memcmp/memcmppgm2ram/memcmppgm2pgm. Эти функции выполняют одно и тоже только сравнивают они ОЗУ-ОЗУ/ПЗУ-ОЗУ/ПЗУ-ПЗУ соответственно.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:39
Рейтинг@Mail.ru


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