Страница 65 из 123
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт июл 30, 2013 21:41:27
Ghost in shell
Всем спасибо за ответы.
Как использовать функцию sprintf в микро-С?
Чем отличаются lcd_puts и lcd_putch?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт июл 30, 2013 21:44:48
Аlex
А почему используется нигде не объявленная функция sprintf?
http://yandex.ru/yandsearch?clid=9582&text=sprintf&lr=5
Чем отличаются lcd_puts и lcd_putch?
puts - это вывод строки.
putch- это вывод символа.
Почему с их помощью нельзя вывести 25,5?
Из вышесказанного, думаю, что сами догадаетесь почему.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт июл 30, 2013 21:46:31
Аlex
Как использовать функцию sprintf в микро-С?
Эта библиотека не для МикроС. По МикроС читайте хелп, там должна она быть описана.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср июл 31, 2013 13:02:28
Ghost in shell
Alex, спасибо за ответ.
Читаю хелп по микроС: там сказано, что для PIC16 эта функция не работет. В Сети я нарыл 2 взаимоисключающих описания, после чего спросил тут.
Код: Выделить всё
int sprintf (
char *buffer, /* буфер сохранения */
const char *fmtstr, /* строка форматирования */
... ); /* дополнительные аргументы */
Функция форматирует последовательность строк и численных значений и сохраняет результирующие строки в buffer.
Примечание: строка форматирования должна быть в области CONST, поэтому функция sprintf не поддерживается для семейств PIC12 и PIC16.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср июл 31, 2013 13:26:56
Аlex
Значит это большой минус в МикроС. Т.к. хайтек и хс8 спокойно выполняет эти функции. Живой пример по моей ссылке.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср июл 31, 2013 13:48:03
Alexeyslav
Не поддерживается понятно почему, т.к. sprintf это довольно жирненький монстр который не попадает под идеологию "Микро". "строка форматирования должна быть в области CONST" это лишь означает что строка форматирования должна быть константой, и следовательно не может быть переменной. Думаю, это обусловлено тем что sprintf в данном случае какой-то макрос и компилятор не генерирует вызов какой-то определенной функции а генерирует целую программу на основании строки форматирования из более простых и конкретных функций достигая тем самым минимальный размер кода.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 07:19:22
Ghost in shell
Мне пока не до
sprintf: при компиляции на вылетает
DelayMs(10);
Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 39.1 function declared implicit int
Error [800] ; 0. undefined symbol "LVPDIS"
Error [800] ; 0. undefined symbol "MCLREN"
Вот исходник
Код: Выделить всё
// MK pic16f72
// работа с LCD
#include <pic.h>
#include <stdio.h>
#include <string.h>
//------------------------------------------------------------------
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT); // биты конфигурации программатора
//------------------------------------------------------------------
/* Биты конфигурации ************/
#if defined(__PICC__)
__CONFIG ( WDTDIS & HS & MCLREN & UNPROTECT & LVPDIS );
#elif defined(__PICC18__)
__CONFIG(1, HS);
__CONFIG(2, BORDIS & PWRTEN & WDTDIS);
__CONFIG(4, LVPDIS);
#elif defined(__18CXX)
#pragma config FOSC = HSMP, PLLCFG = ON // High speed x4
#pragma config LVP = OFF // Single-Supply ICSP disabled
#pragma config PRICLKEN = OFF // Primary clock can be disabled
#pragma config PWRTEN = OFF // Power up timer disabled
#pragma config BOREN = OFF // Brown-out Reset disabled
#pragma config PBADEN = OFF // PORTB<5:0> pins are configured as digital I/O on Reset
#pragma config MCLRE = EXTMCLR // MCLR pin enabled, RE3 input pin disabled
#pragma config DEBUG = OFF //
#pragma config WDTEN = OFF // Watch dog timer is always disabled
#endif
/********************************/
// объявление функций, используемые в файле-----------------------------------------------------------------
extern void lcd_init(void);
extern void lcd_clear(void);
extern void lcd_gotoxy(char, char);
extern void lcd_puts(char *);
extern void lcd_putch(char);
extern void lcd_cgram(char *, unsigned char); // Добавляет массив строк из arr в CGRAM, по адресу adr.
// конец объявления функций, используемые в файле---------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main ()
{
DelayMs(10);
lcd_init();
lcd_clear();
lcd_gotoxy(0,0);
DelayMs(10);
lcd_putch('C');
}// end main
//-------------------------------------------------------------------------------------------------------
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 09:25:08
Alexeyslav
Он у тебя ругается на биты конфигурации... откуда ты их подсмотрел? Они просто не определены у тебя
И зачем в твоей программе универсальная конфигурация, если ты пишешь под конкретный контроллер?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 12:31:57
Ghost in shell
Биты конфигурации не влияют на функции, только на программатор. Убрал все, кроме
Код: Выделить всё
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT);
Все равно ругается:
Executing: "C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16F72 "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -C D:\Work\PIC_CI\My_program\LCD\lcd.c
Executing: "C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16F72 "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -C D:\Work\PIC_CI\My_program\LCD\main.c
Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 21.1 function declared implicit int
Executing: "C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16F72 "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -olCD1.cof -mlCD1.map lcd.obj main.obj
Error [499] ; . undefined symbol:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 12:40:32
Аlex
Error [499] ; . undefined symbol:
Щёлкните по этой строке 2 раза, курсор перейдёт на строку с ошибкой.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 12:42:37
Alexeyslav
Ну так посмотри на строчку, куда тебе компилятор показывает. Где-то нарушен синтаксис, лишние символы или в неожиданном месте.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 13:19:52
Ghost in shell
Щёлкните по этой строке 2 раза, курсор перейдёт на строку с ошибкой.
Если бы... Не переходит!
Компилятор ругаестся на
DelayMs(10); — Warning [361] D:\Work\PIC_CI\My_program\LCD\main.c; 21.1 function declared implicit int
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 13:53:49
Аlex
Warning - это не ошибка, а предупреждение.
А ошибка у Вас вот - "Error [499] ; . undefined symbol:"
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:03:37
Ghost in shell
Блокирую DelayMs(10); - все нормально компилируется!
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:05:32
Аlex
А какой компилятор то ? МикроС ? Читайте в хелпе про задержки, там должно быть всё это.
Зы: Учитесь пользоваться документацией и форум будет практически не нужен.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:06:29
dosikus
Ghost in shell писал(а):Мне пока не до sprintf: при компиляции на вылетает DelayMs(10);
В старых Hi tech насколько помниться, не было задержек в встроенных либах , а всего лишь пример .
Со всеми вытекающими - то есть и хэдер включить надобно и исходник + дефайн частоты кварца.
В новых вроде есть , но нет смысла юзать ибо глюк на глюке...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:08:31
Аlex
Если ХайТек, то у него нет встроенных либ для задержек. Пример Delay_Ms и Delay_Us находится в папке с примерами (Samles).
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:09:59
dosikus
Аlex писал(а):А какой компилятор то ? МикроС ?
В Микрос нет ни конфигов ни
А это еще одна жЫрная свинья подсунутая юзерам .
Так какой компиль то ?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:12:14
Аlex
Вообще, не понятно какой компиль юзает Ghost in shell. Вопросы то по МикроС, то по ХайТек, ....
Вы хоть определитесь с одним компилятором, ато просто сами запутаетесь в синтаксисе. Т.к. это 2 совершенно разных компилятора.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт авг 02, 2013 15:33:37
Ghost in shell
Компилятор у меня HI-TECH Software\PICC\std\9.60. Дока там на ангельском, который не берет ни одна прога-переводчик. Если бы я мог перевести, то воистину, сам разобрался. Но чего нет, того нет.
Вот и приходится читать все, что попадается на русском.
Сейчас поиском не нашел Delay. Получается, HI-TECH 9.60 ее не поддерживает? Сотворю задержку через таймер.