Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как в CVAVR вывести 3х-значное число на порты?

Непрочитано 20.03.2010, 17:53  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Сообщение от kison Посмотреть сообщение
Вот блин - я ее среди комментариев не заметил
Но пробовать собирать снова не буду - меньше 200 тактов все равно не получу.
Выложите для меня ПЛИЗ настроеный проект GCC ... пустой, допустим с main.c и main.h. Настроеный для компиляции... А сам я подключу в main.c свой файл и скомпилирую.
Я не создавал никогда для GCC. Не в курсе чего там и как настраивать...
Реклама:
picavr вне форума  
Непрочитано 20.03.2010, 18:17  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Сообщение от picavr Посмотреть сообщение
Не в курсе чего там и как настраивать...
Там ничего не надо настаивать. Это не ИАР.
Единственное что нужно - установить частоту ( и то необязательно если нет программных задержек) и тип кристалла. Все делается прямо в студии. А - главное оптимизацию не забыть включить, наример Os
Миниатюры:
Нажмите на изображение для увеличения
Название: studio.GIF
Просмотров: 209
Размер:	31.6 Кб
ID:	5982  
kison вне форума  
Непрочитано 20.03.2010, 21:32  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Код:
unsigned int Bin2BCD(unsigned int value, char *Res)
{
char *n = Res;

while (value›0)
 {
 *Res++ = value % 10;
 value/=10;
 }

return (unsigned int)(Res-n);
}
Функция записывает в буфер десятичное число, начиная с младшего знака и возвращает количество преобразованных цифр.

ADS1.2 - 16 команд, 88 тактов/5 знаков (апп. умножение+сдвиги)
MPLAB C30 - 15 команд, 136 тактов/5 знаков (апп. деление)

З.Ы. Интересны результаты для других компиляторов
AJScorp вне форума  
Непрочитано 21.03.2010, 00:32  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

KEIL ARM @ LPC1768 - 16 команд, 99 тактов/5 знаков
MPLAB C32 - 16 команд, 68 тактов/5 знаков

Последний раз редактировалось st_1; 21.03.2010 в 00:50.
st_1 вне форума  
Сказали "Спасибо" st_1
AJScorp (21.03.2010)
Непрочитано 21.03.2010, 19:59  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Сообщение от AJScorp Посмотреть сообщение
Функция записывает в буфер десятичное число, начиная с младшего знака и возвращает количество преобразованных цифр.
можно указать пример вызова функции с переменными, т.к. у меня в CodeVision при передачи в функцию числа 534 на входе value=2...
code-by вне форума  
Непрочитано 22.03.2010, 10:34  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Сообщение от code-by Посмотреть сообщение
можно указать пример вызова функции с переменными
Например так:

Код:
char bf[10];
unsigned int DigCount;

unsigned int Bin2BCD(unsigned int value, char *Res)
{
char *n = Res;

while (value›0)
 {
 *Res++ = value % 10;
 value/=10;
 }

return (unsigned int)(Res-n);
}

int main()
{
DigCount = Bin2BCD(1234, bf);

}
К сожалению в CVAVR проверить не могу.

Последний раз редактировалось AJScorp; 09.12.2010 в 22:31.
AJScorp вне форума  
Непрочитано 23.03.2010, 23:23  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: Как в CVAVR вывести 3х-значное число на порты?

Спасибо, AJScorp
code-by вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Как внедрялась АСУ chermnv Отвлекитесь, эмбеддеры! 743 14.02.2010 23:11
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33
как выйти с PROTEUS-а на порты? begun Микроконтроллеры, АЦП, память и т.д 5 28.10.2009 16:36
PICC как будет выглядеть код в CVAVR rv6yi Микроконтроллеры, АЦП, память и т.д 15 22.10.2009 23:22


Часовой пояс GMT +4, время: 06:24.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.