zhevak 0 21 августа, 2008 Опубликовано 21 августа, 2008 · Жалоба Короче, пойду покупать пистолет. 1. Сказку о двух лягушках расказать или знаете? 2. Решать задчи, которые уже знаешь как решать, -- не интересно. Намного интереснее решать те задачи, к которым даже не знаешь как подступится. Только такие задачи способствуют росту. 3. А судьи кто? Обычные люди (usual people) о конкретном человеке судят по тому, чего он достиг на данный момент. Продвинутые люди (advanced people) смотрят на то, какие задачи он себе ставит и как быстро он растет. Не обращайте внимание на то, что говорят первые. Идите своей дорогой. И будет Вам счастье! ЗЫ Здесь много грамотных людей, и они способны достаточно квалифицированно ответить на Ваши вопросы. Читайте книжки, посещайте форумы и уточняйте, что Вам не ясно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 21 августа, 2008 Опубликовано 21 августа, 2008 · Жалоба АНТОХА: Надо не I, а L! (от long) В вашем предыдущем письме было I. Впрочем, ставил и I, и l, и L - не помогает. В этих случаях совсем ничего не высвечивается. Клевета! :) Было маленькое L - l. Почему не работает - не знаю, я не использую CVAVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tomade 0 21 августа, 2008 Опубликовано 21 августа, 2008 (изменено) · Жалоба Антоха: Клевета! Было маленькое L - l. Прошу прощения. Был сбой при передаче данных. :) zhevak: Читайте книжки, посещайте форумы и уточняйте, что Вам не ясно. Потому и обратился сюда. В моём окружении программистов МК нет. Изменено 21 августа, 2008 пользователем Tomade Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sss992 0 21 августа, 2008 Опубликовано 21 августа, 2008 · Жалоба можно так сделать: ... unsigned long int x = 1000000; ... sprintf(lcd_buffer,"%.0f",(float)x); ... в С30 работает. а вообще почитайте описание sprintf и разберитесь с типами в Вашем компиляторе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tomade 0 22 августа, 2008 Опубликовано 22 августа, 2008 · Жалоба Ну вот, проблема решилась. Сделал следующее. 1.Сгенерировал начальные коды под микроконтроллер ATMega64L (было ATMega16). 2.В строке sprintf(lcd_buffer,"%u",x); вместо u поставил lu (как ранее советовал АНТОХА. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 25 августа, 2008 Опубликовано 25 августа, 2008 · Жалоба Можно сделать несколько иначе - не используя громоздкую sprintf (на мелких МК не всегда работает, плюс памяти отжирает много) для трехзначной переменной (наращивается аналогично), например: //объявляем переменные char j=1; char buffer [4]; char S =0; //сотни char D =0; //десяки char E =0; //единицы //функция преобразования void decbin (unsigned int x) { unsigned int i; // Place your code here for (i=x; i>=100; i=i-100) {S++;}; for (i=x-100*S; i>=10; i=i-10) {D++;}; for (i=x-100*S-10*D; i>=1; i=i-1) {E++;}; } main { .... while (1) { // Place your code here j++; decbin(j); if (S==0){ //условия для того, чтобы отображалось не "005 " а "5" - нолики убирают... buffer[0]=1; } else { buffer[0]=48+S; }; if ((D==0)&&(S==0)){ buffer[1]=1; } else { buffer[1]=48+D; }; buffer[2]=48+E; lcd_gotoxy(7,1); lcd_puts(buffer); if (j==150) {j=0;}; //считаем до 150 S=0; D=0; E=0; delay_ms(100); }; .... } Для attiny2313 размер кода со sprintf около 92%, а таким способом - около 45%... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться