Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

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

 
Опции темы

Разложить число на символы ASCII

Непрочитано 17.02.2011, 16:51  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

Можно сделать так:
Код:
#include ‹stdlib.h›

void Convert(char *OutBuf, float Data)
{
unsigned int DataInt = (unsigned int)(Data + 0.5);
div_t tmp;
    tmp = div(Data,10);
    *(OutBuf+2) = tmp.rem + '0';
    tmp = div(tmp.quot,10);
    *(OutBuf+1) = tmp.rem + '0';
    *OutBuf = tmp.quot + '0';
}
Экономия существенна - вместо 1000 тактов всего 600 ( на переменной 345,25, компилятор GCC4.2.2). Можно еще деление на 10 заменить на умножение. Тоже экономия в тактах будет. Да вообще полно вариантов.
Реклама:
kison вне форума  
Непрочитано 17.02.2011, 17:13  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

Сообщение от 7Fantomas7 Посмотреть сообщение
И два масива есть и задача стоит чтоб в любом месте общей програмы писать в эти масивы адреса ASCII хоть от символьных значений хоть числовых, но в любом случае адреса. Писать адреса того что необходимо вывести, ну я не знаю как еще объяснить. Замерил я АЦП, отфильтровал, записал в масив значение, обновил динамичку, увидел значени. Нажал кнопку, получил событие, записал адреса в масив например если чтото нажалось то в масив записалось Err, адресами ASCII записалось, ну есть разница пишем Err получаем набор из 3х hex-ов. А таблички и вывод уже есть.
А проблема то где? Если проблема в том, что float не влазит, так преобразуйте его в int, затем уже его в string.(Если точность float не нужна зачем его используете?)
Объясните проще что вам надо, например померил ADC, пересчитал в вольты и показал на экране. Или нажал кнопку, в переменную пита uint8_t записалась 1, как вывести на экран Err. А то выглядит, что вы создали какие то массивы и потом под это подгоняете логику программы.

Если ищите функцию, которая берет переменную любого типа и преобразует в четыре ASCII знака (не больше не меньше ) то готовой такой функции нет, но можете сами написать раз памяти много. Но намного проще, зная тип переменной, преобразовать ее в строку( тот же sprintf с нужным ключом для конкретного типа), а строку вывести на экран как два пальца...

Последний раз редактировалось CodeNameHawk; 17.02.2011 в 17:54.
CodeNameHawk вне форума  
Непрочитано 17.02.2011, 18:10  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

Цитата:
CodeNameHawk
Цитата:
Если проблема в том, что float не влазит
Влазит, просто отображать с такой точностью не нужно, а для расчетов в другом месте нужно. Но это не проблема.
Цитата:
Если ищите функцию, которая берет переменную любого типа и преобразует в четыре ASCII знака (не больше не меньше )
Ее и ищу.
Цитата:
то готовой такой функции нет
Жаль, значит sprint и точка.
Цитата:
тот же sprintf с нужным ключом для конкретного типа
Видимо на этом остановлюсь. Просто мне человек один объяснял как это красивее сделать, на словах объяснял, мне б дурню записать, ан нет на память понадеялся. Теперь контакта нет с этим человеком.
OlegNZH
Цитата:
как только sprintf врубаешь- сразу код настолько возрастает- мама не горюй!Всё проще должно быть.
И мне так сказали. Должно быть красивое решение.
7Fantomas7 вне форума  
Непрочитано 17.02.2011, 18:21  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

Сообщение от 7Fantomas7 Посмотреть сообщение
Жаль, значит sprint и точка.
Не понравится Вам результат для нецелых переменных. Да и универсальность sprintf тут мнимая. У Вас на момент вызова известен тип переменной. Если напишете например 4 функции для каждого типа выиграете и в объеме и в быстродействии.
kison вне форума  
Непрочитано 17.02.2011, 18:47  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

7Fantomas7, Я честно говоря х....ю ...
Если у вас все таки 7 сегментный LED индикатор , то я все вам выложил в прошлый раз . И работу с символами и с числами .
Что там непонятно ??????!!!!!!
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 17.02.2011, 20:24  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

С цифрами всё понятно. Что с буквами? Из чего они должны преобразовываться? По какому закону? Надеюсь, учёл все, что можно отобразить на 7-сегментнике.
Код:
;Таблица символов
Sims:
	db	00000000b       ;blank
	db	00111111b       ;0
	db	00000110b       ;1
	db	01011011b       ;2
	db	01001111b       ;3
	db	01100110b       ;4
	db	01101101b       ;5
	db	01111101b       ;6
	db	00001110b       ;7
	db	01111111b       ;8
	db	01101111b       ;9
	db	01111110b       ;A
	db	01110101b       ;b
	db	01010001b       ;c
	db	01010111b       ;d
	db	01111001b       ;E
	db	01111000b       ;F
	db	00111101b       ;G
	db	01110110b       ;H
	db	00000111b       ;J
	db	00110001b       ;L
	db	01010100b       ;n
	db	01010101b       ;o
	db	01111010b       ;P
	db	01010000b       ;r
	db	01011011b       ;S
	db	01110001b       ;t
	db	01000000b       ;-
;     **3**
;    *     *
;    4     2
;    *     *
;    **6**
;    *     *
;    5     1
;    *     *
;    **0**    7

Последний раз редактировалось omercury; 17.02.2011 в 20:31.
omercury вне форума  
Непрочитано 17.02.2011, 20:50  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

Сообщение от 7Fantomas7 Посмотреть сообщение
Должно быть красивое решение.
itoa вам чем не нравится?
CodeNameHawk вне форума  
Непрочитано 17.02.2011, 21:37  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

CodeNameHawk,
Цитата:
itoa вам чем не нравится?
А я сейчас достану книжку и как начну читать. Потом будут вопросы
7Fantomas7 вне форума  
Непрочитано 17.02.2011, 21:44  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

7Fantomas7, Ссылку на урезанную itoa , я уже давал
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 17.02.2011, 22:22  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: Разложить число на символы ASCII

dosikus,
Если не в лом повторите ссылочку. Информации дохрена и я не помню где она.

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

Последний раз редактировалось 7Fantomas7; 17.02.2011 в 23:08.
7Fantomas7 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подбираемся к DX Kabron Микроконтроллеры, АЦП, память и т.д 455 27.10.2014 22:41
Как в CVAVR вывести 3х-значное число на порты? code-by Микроконтроллеры, АЦП, память и т.д 26 23.03.2010 23:23
Число витков трансформатора для развязки звуковых частот Laksus Аудиотехника 6 07.07.2009 15:49


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


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