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

 
 
> Преобразвание bin-hex, Из bin на 7-сегментный индикатор
Kuznec9999
сообщение Apr 29 2008, 22:42
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 29-04-08
Пользователь №: 37 157



Проблема следующая. После оцифровки сигнала в АЦП, в регистре имеется 8бит данных. Задача преобразовать этот двоичный регистр в три, к которые будут отображаться на трёх семисегментных индикаторах соответственно. В индикаторах должен отображаться десятичный эквивалент сигнала (0-255). Подскажите, легко ли это реализовать на ассемблере, и где про это можно почитать? Спасибо.

Сообщение отредактировал Kuznec9999 - Apr 29 2008, 22:43
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
domowoj
сообщение Apr 30 2008, 01:33
Сообщение #2


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Есть много методов преобр.
Самый быстрый - табличный(если не жалко памяти),
самый медленный - вычитаешь из bin 1 - прибавляешь 1 к 3-х байтному числу, анализируя достижение
каждого байта числа 10, если 10 - сбрасываешь его и прибавляешь 1 к след. байту, и т.д.
Есть оптимальные алгоритмы в букварях http://lord-n.narod.ru/walla.html
поищи, не помню где именно.

Сообщение отредактировал domowoj - Apr 30 2008, 01:46


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 30 2008, 05:24
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(domowoj @ Apr 30 2008, 04:33) *
Есть много методов преобр.
Самый быстрый - табличный(если не жалко памяти),
самый медленный - вычитаешь из bin 1 - прибавляешь 1 к 3-х байтному числу, анализируя достижение
каждого байта числа 10, если 10 - сбрасываешь его и прибавляешь 1 к след. байту, и т.д.

cranky.gif 01.gif
итого 255 итераций для преобразования числа 255?
01.gif 01.gif 01.gif
а просто поделить на 10 никак?

Я бы сделал так:
Код
char number;
char digit1=0; // 1 цифра
char digit2=0; // 1 цифра
char digit3=0; // 1 цифра
...
number=...     //

...
if(number>=200)
{
  digit1=2;
  number-=200;
}
else

  if(number>=100)
  {
    digit1=1;
    number-=100;
  }
digit2=number/10;
digit3=number-digit2*10;

не претендую на оптимальность , но сам так делаю


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 30 2008, 05:43
Сообщение #4


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(MrYuran @ Apr 30 2008, 09:24) *
не претендую на оптимальность , но сам так делаю

Да уж... Господа, читайте классику, она вечна. smile.gif И программа в avr24.asm основана именно на алгоритме, описанном у Титце-Шенка (см. выше).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kuznec9999   Преобразвание bin-hex   Apr 29 2008, 22:42
- - rezident   Ключевое слово для поиска по форуму - BCD. Вот в т...   Apr 29 2008, 22:59
|- - Kuznec9999   Цитата(rezident @ Apr 30 2008, 02:59) Клю...   Apr 29 2008, 23:03
|- - Сергей Борщ   Цитата(Kuznec9999 @ Apr 30 2008, 02:03) Ж...   Apr 29 2008, 23:49
|- - rezident   Цитата(Kuznec9999 @ Apr 30 2008, 05:03) С...   Apr 29 2008, 23:54
|- - 777777   Цитата(Kuznec9999 @ Apr 30 2008, 03:03) С...   Apr 30 2008, 04:52
- - TarasH   Смотри сюда http://www.atmel.ru/Articles/Atmel1...   Apr 30 2008, 06:26
|- - 777777   Цитата(TarasH @ Apr 30 2008, 10:26) Смотр...   Apr 30 2008, 06:40
|- - ReAl   Цитата(777777 @ Apr 30 2008, 09:40) Че-то...   Apr 30 2008, 08:34
- - blackfin   Ещё пару ссылок: int >> str itoa на asm, и...   Apr 30 2008, 06:58
- - MrYuran   ЦитатаЭто, конечно, быстрее, чем делением на 10 А ...   Apr 30 2008, 08:49
|- - ReAl   Цитата(MrYuran @ Apr 30 2008, 11:49) А чт...   Apr 30 2008, 13:00
- - Kuznec9999   Попробовал avr204.asm, а именно bin2bcd8... На вых...   Apr 30 2008, 12:08
- - singlskv   Цитата(Kuznec9999 @ Apr 30 2008, 02:42) П...   Apr 30 2008, 15:30
- - singlskv   Цитата(singlskv @ Apr 30 2008, 19:30) 16 ...   Apr 30 2008, 18:43
- - Kuznec9999   Цитата(singlskv @ Apr 30 2008, 22:43) Код...   Apr 30 2008, 19:27
- - 777777   Цитата(singlskv @ Apr 30 2008, 22:43) Код...   May 2 2008, 15:07
- - singlskv   Цитата(777777 @ May 2 2008, 19:07) А нель...   May 2 2008, 16:38


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

 


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


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