Страница 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 писал(а):А какой компилятор то ? МикроС ?
В Микрос нет ни конфигов ни

Код: Выделить всё

#include <pic.h>
А это еще одна жЫрная свинья подсунутая юзерам . :)))

Так какой компиль то ?

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 ее не поддерживает? Сотворю задержку через таймер.