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

 
 
> Функция вывода времени на жк.
ps1x
сообщение Apr 8 2006, 16:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Код
lcd_clear();
itoa(hour,temp);                
if (hour<10){lcd_putsf('0');lcd_puts(temp);}else{lcd_puts(temp);}
lcd_putsf(":");
itoa(min, temp);      
if (min<10){lcd_putsf('0');lcd_puts(temp);}else{lcd_puts(temp);}
lcd_putsf(":");
itoa(sec, temp);      
if (sec<10){lcd_putsf('0');lcd_puts(temp);}else{lcd_puts(temp);}

- по идее этот код должен выводить на экран время в формате ЧЧ:ММ:СС причем если число часов, минут или секунд меньше 10 то перед ним добавляется 0. Однако этого почему-то не происходит ((
Вместо этого если например реальное время - 08:23:09 то получается - 88:23:99

Где-же ошибка?

з.ы. Среда разработки - CVAVR
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 40)
jorikdima
сообщение Apr 8 2006, 17:12
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



А чем lcdputsf от lcdputs отличается. Я думаю дело в последовательном использовании этих команд, го сам CVAVR не знаю.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 8 2006, 17:33
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



lcd_putsf('0')
lcd_putsf(":");
Так что же выводится символ или строка?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 8 2006, 17:54
Сообщение #4


Гуру
******

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



Цитата(beer_warrior @ Apr 8 2006, 20:33) *
lcd_putsf('0')
Так что же выводится символ или строка?

Символ конца строки :-) :-)

И что? Скажите компилятор не выругался когда ему в функции вместо указателя байт подсунули!
Ну хоть сообщения читайте!


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


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Ну хоть сообщения читайте!

Читаю, только вот по такому коду дельный ответ дать трудно.
Скорее всего напутано с буферами, а где фиг поймешь.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 8 2006, 18:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Чесно говоря, компилятору все равно символ это или строка, кроме того он даже не заикнулся что где нибудь может быть ошибка...

Вот что написано в lcd.h

// write the string str located in SRAM to the LCD
void lcd_puts(char *str);
// write the string str located in FLASH to the LCD
void lcd_putsf(char flash *str);

Вот так объявленны переменные.
char *temp;
int year,month,day,hour,min,sec;

з.ы.
если написать lcd_putsf("Вот такие вот дела"); то строка выводится.
Go to the top of the page
 
+Quote Post
e-moe
сообщение Apr 8 2006, 18:16
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 38
Регистрация: 25-11-05
Из: Россия, Москва
Пользователь №: 11 377



void lcd_putsf(char flash *str) - вывод символов из FLASH памяти
void lcd_puts(char *str) - вывод из памяти данных
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 8 2006, 18:32
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Ну, я собственно это и написал, впрочем спасибо за перевод )
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 8 2006, 19:00
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Вот так объявленны переменные.
char *temp;
int year,month,day,hour,min,sec;


Надо писать FAQ по этому вопросу - каждую неделю кто-то накалываться. char *temp - это просто указатель в никуда - ручка от чашки - а самой чашки нет.
Надо писать:
char temp[размер строки], а потом передавать в функцию указатель -
т.е. адрес первого байта массива.
lcd_puts(temp); что эквивалентно lcd_puts( &temp[0]).

В качестве эксперимента можно попробовать :
lcd_puts( &temp[1]);что эквивалентно
temp++;
lcd_puts(temp);

Сообщение отредактировал beer_warrior - Apr 8 2006, 19:01


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 8 2006, 19:06
Сообщение #10


Гуру
******

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



Цитата(beer_warrior @ Apr 8 2006, 21:04) *
Цитата
Ну хоть сообщения читайте!

Читаю, только вот по такому коду дельный ответ дать трудно.
Скорее всего напутано с буферами, а где фиг поймешь.

Это не к Вам относилось :-( Я имел ввиду автора который НЕ ПРОЧИТАЛ предупреждающие сообщения
компилятора.
Извините за невнятно изложенную мысль.


Цитата(ps1x @ Apr 8 2006, 21:10) *
Чесно говоря, компилятору все равно символ это или строка, кроме того он даже не заикнулся что где нибудь может быть ошибка...

ЭТО ПРАКТИЧЕСКИ НЕВЕРОЯТНО, если конечно все warnings не задешены на корню в
командной строке/проекте.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Focus
сообщение Apr 8 2006, 19:15
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 22-02-06
Из: Россия, Курск
Пользователь №: 14 603



Для вывода одного символа лучше пользоваться оператором lcd_putchar
и вообще надо для преобразования числа в сторку использовать оператор sprintf.
например

char lcd_buuff[2]; // обявляем массив (это строка)

time=8;
sprintf(lcd_buff,"%-i",time);
if (time<10) lcd_buff[0]='0';
lcd_dotoxy(x,y);
lcd_puts(lcd_buff);
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 8 2006, 21:52
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(Focus @ Apr 8 2006, 23:15) *
Для вывода одного символа лучше пользоваться оператором lcd_putchar
и вообще надо для преобразования числа в сторку использовать оператор sprintf.
например

char lcd_buuff[2]; // обявляем массив (это строка)

time=8;
sprintf(lcd_buff,"%-i",time);
if (time<10) lcd_buff[0]='0';
lcd_dotoxy(x,y);
lcd_puts(lcd_buff);


Такой код приводит к заполнению всего дисплея (2х16) черными квадратами.

Проблема не решена.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 8 2006, 22:28
Сообщение #13


Гуру
******

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



sprintf не совсем хороша для вывода непосредственно на LCD, т.к. в конце преобразованной строки символов '\0' добавляет. Однако если сначала формируется буфер и только потом целиком выводится на LCD, то можно и sprintf использовать. Тогда и ведущие нули не нужно самому добавлять.
Код
pos+=sprintf(&lcd_buf[pos],"%02u:%02u:%02u", hour, min, sec);
преобразует переменные времени в строку с ведущими нулями, разделителем ':' и кроме того вернет количество символов, добавав их к текущему значению pos которое можно трактовать как позицию для смещения курсора или для добавления другой строки, что иногда тоже полезно.
Если формировать строку не нужно, то pos можно и не использовать.
Код
sprintf(lcd_buf,"%02u:%02u:%02u", hour, min, sec);
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 8 2006, 23:42
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(rezident @ Apr 9 2006, 02:28) *
sprintf не совсем хороша для вывода непосредственно на LCD, т.к. в конце преобразованной строки символов '\0' добавляет. Однако если сначала формируется буфер и только потом целиком выводится на LCD, то можно и sprintf использовать. Тогда и ведущие нули не нужно самому добавлять.
Код
pos+=sprintf(&lcd_buf[pos],"%02u:%02u:%02u", hour, min, sec);
преобразует переменные времени в строку с ведущими нулями, разделителем ':' и кроме того вернет количество символов, добавав их к текущему значению pos которое можно трактовать как позицию для смещения курсора или для добавления другой строки, что иногда тоже полезно.
Если формировать строку не нужно, то pos можно и не использовать.
Код
sprintf(lcd_buf,"%02u:%02u:%02u", hour, min, sec);


Тоже не работает!!! (виснет)
Может дело в том что я использую протеус?
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 9 2006, 06:58
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Что за камень?Если Tiny,то с функцией sprintf возникают проблемы.Ест много флэш и стек надо увеличи
чить по сравнению с выделяемым CV по умолчанию.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 07:59
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(WHALE @ Apr 9 2006, 10:58) *
Что за камень?Если Tiny,то с функцией sprintf возникают проблемы.Ест много флэш и стек надо увеличи
чить по сравнению с выделяемым CV по умолчанию.


Mega8 в протеусе. С функцией sprintf и до этого были проблемы, насколько я помню...
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 9 2006, 09:18
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Увеличь размер стека до 64 байт,и все должно пойти.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 09:30
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Data Stack area: 60h to 25Fh
Data Stack size: 512 byte(s)
Estimated Data Stack usage: 15 byte(s)

-- Это вроде бы нормально....
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 9 2006, 10:31
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Тогда может действительно протеус глючит?Или дальше в программе вывода ошибка?sptintf при таком
раскладе виснуть не должна.Проверь на симуляторе студиию.и на всякий случай чуть-чуть увеличь еще область стека,у меня
как-то был глюк,правда на тини-тоже висла программа на sprintf,хотя компилер ни на что не ругался,а стека не хватало,портил рабочую область,т.к. вложенность там приличная.

Сообщение отредактировал WHALE - Apr 9 2006, 10:36


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 9 2006, 10:44
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Я бы все-таки не рекомендовал бы пользоваться sprintf
дел на копейку, а памяти отожрет не по детски. В начале ветки приводился код который можно довести до ума. Да и понимания больше будет.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 15:14
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Вот в том то и дело, что код, вроде бы должен работать, но не работает, а все попытки довести его до ума привели к "никчему". А sprintf глючит. С тем и сидим.

А размер стека если вы не заметили у меня 512 байт, думаю этого должно хватать....
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 9 2006, 15:42
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



ну не знаю,если ресурсы проца позволяли,я неоднократно пользовался в CV sprintf,что позволялореша
ть 1 строкой кода сразу несколько задач,все работало.Какой-то глюк в компиляторе,связанный с выде
лением стека под нее есть,проявился на tiny2313,отловил в симуляторе AVRStudio и вылечил увеличе-
нием стека(совсем ненамного).Если вы уверены,что программа виснет именно на ней,прогоните код в
студии,если зависнет,увеличте размер стека.Что происходит,прекрасно видно при прогоне в дизассем-
блере.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 9 2006, 16:47
Сообщение #23


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(ps1x @ Apr 9 2006, 19:14) *
Вот в том то и дело, что код, вроде бы должен работать, но не работает, а все попытки довести его до ума привели к "никчему". А sprintf глючит. С тем и сидим.

А размер стека если вы не заметили у меня 512 байт, думаю этого должно хватать....

А debugger то использовался? Может глянуть все по шагам.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 9 2006, 16:47
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



2 ps1x
Давайте вс сначала, есть код в начале топика. Цифирь выводит, только криво.Ниже показано в чем ошибка. Исправляете и смотрите на результаты. К sprintf вернемся попозже.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 16:56
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Дык я ж пробовал и так и сяк в том числе и так, как написанно выше, там не менее результата три либо показывает 55:34:88 вместо 05:34:08 либо заполняет экран черными квадратиками, либо не показывает ничего (в случае с sprintf). К сожалению дебаггера нет, да и асма я не знаю толком.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 9 2006, 17:09
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
char lcd_buuff[2]; // обявляем массив (это строка)

time=8;
sprintf(lcd_buff,"%-i",time);
if (time<10) lcd_buff[0]='0';
lcd_dotoxy(x,y);
lcd_puts(lcd_buff);

Такой код приводит к заполнению всего дисплея (2х16) черными квадратами.

Это с предыдущей страницы.
К itoa не относиться.
Я еще раз повторюсь, вернитесь к исходному варианту и попробуйте снова.
Судя по всему после разнородных советов наделано ошибок немеряно.
Каждый новый вариант постите, что бы было понятно о чем идет речь.
(если хотите помощи)


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 17:23
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(beer_warrior @ Apr 9 2006, 21:09) *
Цитата

char lcd_buuff[2]; // обявляем массив (это строка)

time=8;
sprintf(lcd_buff,"%-i",time);
if (time<10) lcd_buff[0]='0';
lcd_dotoxy(x,y);
lcd_puts(lcd_buff);

Такой код приводит к заполнению всего дисплея (2х16) черными квадратами.

Это с предыдущей страницы.
К itoa не относиться.
Я еще раз повторюсь, вернитесь к исходному варианту и попробуйте снова.
Судя по всему после разнородных советов наделано ошибок немеряно.
Каждый новый вариант постите, что бы было понятно о чем идет речь.
(если хотите помощи)


В прошлый раз видимо в чем то ошибся.

Конкретно этот код выводит "0" и все. Так что не работает.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 9 2006, 17:36
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Тогда проблема с lcd_puts(lcd_buff); что-то не то со сдигом или буфер маловат. Попробуйте посимвольно. И внимательно smile.gif
Готов поставить литр пива, что там просто банальный недосмотр.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 9 2006, 18:25
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Да конечно.
lcd_putsf('0'); - что должно быть аргументом? а что есть?


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 9 2006, 18:35
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



а так если
define lcd_buffer_size 16 //тут указывается длина строки вашего жки
char lcd_buf[lcd_buffer_size]; // обявляем массив (это строка вывода)
sprintf(lcd_buf,"%02u:%02u:%02u", hour, min, sec);
как вам уже советовали. далее собственно сам вывод-должно работать
ЗЫ.а ассмблер освоить очень желательно,у avr он несложен

Сообщение отредактировал WHALE - Apr 9 2006, 18:37


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 21:31
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(vet @ Apr 9 2006, 22:25) *
Да конечно.
lcd_putsf('0'); - что должно быть аргументом? а что есть?


Пожалуйста, не отвечайте вопросом на вопрос, у меня итак уже крыша едет от этого...
huh.gif


И вот он - ПРАВИЛЬНЫЙ ОТВЕТ!!!!
Цитата
а так если
define lcd_buffer_size 16 //тут указывается длина строки вашего жки
char lcd_buf[lcd_buffer_size]; // обявляем массив (это строка вывода)
sprintf(lcd_buf,"%02u:%02u:%02u", hour, min, sec);
как вам уже советовали. далее собственно сам вывод-должно работать
ЗЫ.а ассмблер освоить очень желательно,у avr он несложен

Пиво в студию!!!

З.ы. Помоему ассемблер для х86 гораздо проще (ИМХО), я его смутно помню правда.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 9 2006, 21:48
Сообщение #32


Гуру
******

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



Цитата(ps1x @ Apr 10 2006, 00:31) *
И вот он - ПРАВИЛЬНЫЙ ОТВЕТ!!!!


Потрясающая способность начисто игнорировать ответы на заданные вопросы.
"правильный ответ" до этого давали Вам уже минимум ДВАЖДЫ.
Цитата
Только вот куда указывает temp и есть-ли там куда он указывает свободное место
для размещения получившейся строки.... По тексту это неинециализированный указатель при
записи по которому чего-нибудь и порушите, или, как минимум, в пустоту запишите и потом из этой
пустоты чего-нибудь прочитаете. Как минимум компилятор должен был выдать вполне определенные
ругательства на этот счет. Не стоило их игнорировать.
char temp[MAX_SIZE_OF_STRING+1];
Ну а вообще надо заставить себя книжку дочитать!


Цитата
Надо писать FAQ по этому вопросу - каждую неделю кто-то накалываться. char *temp - это просто указатель в никуда - ручка от чашки - а самой чашки нет.
Надо писать:
char temp[размер строки], а потом передавать в функцию указатель -
т.е. адрес первого байта массива.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 21:57
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Да нет, не правы Вы, я пробовал эти варианты, в частности
char lcd_buf[2];
и выводил в него каждое преобразование отдельно часов минут и секунд, но, увы, не сработало...
Я не игнорирую никаких высказываний по теме, и вдумываюсь в каждый пост, все равно, проблема то в конечном счете моя wink.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 9 2006, 22:08
Сообщение #34


Гуру
******

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



Цитата(ps1x @ Apr 10 2006, 00:57) *
Да нет, не правы Вы, я пробовал эти варианты, в частности
char lcd_buf[2];
и выводил в него каждое преобразование отдельно часов минут и секунд, но, увы, не сработало...
Я не игнорирую никаких высказываний по теме, и вдумываюсь в каждый пост, все равно, проблема то в конечном счете моя wink.gif

Бездумные пробы :-( не увенчались успехом, поскольку:
1) фиг знает что Вы делали за "преобразования";
2) буфер должен быть на _ТРИ_ байта.

Потом раз не "помогло" - НИКОГДА не будем писать какое-то непонятное число в
квадратных скобочках. Железная логика :-(


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


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(zltigo @ Apr 10 2006, 02:08) *
Цитата(ps1x @ Apr 10 2006, 00:57) *

Да нет, не правы Вы, я пробовал эти варианты, в частности
char lcd_buf[2];
и выводил в него каждое преобразование отдельно часов минут и секунд, но, увы, не сработало...
Я не игнорирую никаких высказываний по теме, и вдумываюсь в каждый пост, все равно, проблема то в конечном счете моя wink.gif

Бездумные пробы :-( не увенчались успехом, поскольку:
1) фиг знает что Вы делали за "преобразования";
2) буфер должен быть на _ТРИ_ байта.

Потом раз не "помогло" - НИКОГДА не будем писать какое-то непонятное число в
квадратных скобочках. Железная логика :-(

Почему непонятное, очень даже понятное char lcd_buf[2]; - фактически, это массив из char'ов размерностью 2, а 3 их там надо, поскольку строка в С всегда должна завершаться \0. ))

Преобразование itoa(); преобразует int в *сhar. wink.gif
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 9 2006, 22:25
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(ps1x @ Apr 10 2006, 01:31) *
Цитата(vet @ Apr 9 2006, 22:25) *

Да конечно.
lcd_putsf('0'); - что должно быть аргументом? а что есть?


Пожалуйста, не отвечайте вопросом на вопрос, у меня итак уже крыша едет от этого...
huh.gif


Поясняю.
lcd_putsf принимает аргументом строку. Вы передавали в неё символ. Всё.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 9 2006, 22:26
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(vet @ Apr 10 2006, 02:25) *
Цитата(ps1x @ Apr 10 2006, 01:31) *

Цитата(vet @ Apr 9 2006, 22:25) *

Да конечно.
lcd_putsf('0'); - что должно быть аргументом? а что есть?


Пожалуйста, не отвечайте вопросом на вопрос, у меня итак уже крыша едет от этого...
huh.gif


Поясняю.
lcd_putsf принимает аргументом строку. Вы передавали в неё символ. Всё.


Как я уже говорил выше, я пробовал и такой вариант: lcd_putsf("0");
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 9 2006, 22:32
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



В таком случае вопросов не имею.
Вообще, такие вещи успешно отлаживаются загрузкой программы в AVR Studio и внимательной трассировкой. Тему, в общем-то, и не стоило заводить. Имхо.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 9 2006, 23:43
Сообщение #39


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



> ps1x
Цитата
Как я уже говорил выше, я пробовал и такой вариант: lcd_putsf("0");

врать нехорошо.

ps: будьте внимательны к сообщениям компилятора, Warning'и игнорировать не стоит.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 10 2006, 04:30
Сообщение #40


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Вы только не обижайтесь,но вам действительно надо прислушаться к советам местных гуру,если вы серьезно собираетесь заниматься разработками на AVR,т.к проблема у вас была очень простая и имея
под рукой книгу по С и владя ассемблером,все решилось бы очень быстро.
З.Ы. а без ассемблера я вообще слабо представляю,как можно работать-та-же отладка,написание кусков,критичных ко времени и т.д.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
ps1x
сообщение Apr 10 2006, 13:34
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Всем спасибо!
Go to the top of the page
 
+Quote Post

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

 


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


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