[an error occurred while processing this directive]
Подскажите алгоритм или пример оптимального по объему кода преобразования BIN числа BCD число ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 14 апреля 2006 г. 15:04

void BINtoBCD(unsigned int bin) //Преобразование BIN в BCD
{
unsigned char i = 4; //Индекс
unsigned char bcdnumber = 0; //Число

if (bin >= 10000)
do
{
bin -= 10000;
bcdnumber++;
} while (bin >= 10000); //Определение числа десятков тысяч
BCDnumber[i--] = bcdnumber;
bcdnumber = 0;

if (bin >= 1000)
do
{
bin -= 1000;
bcdnumber++;
} while (bin >= 1000); //Определение числа тысяч
BCDnumber[i--] = bcdnumber;
bcdnumber = 0;

if (bin >= 100)
do
{
bin -= 100;
bcdnumber++;
} while (bin >= 100); //Определение числа сотен
BCDnumber[i--] = bcdnumber;
bcdnumber = 0;

if (bin >= 10)
do
{
bin -= 10;
bcdnumber++;
} while (bin >= 10); //Определение числа десятков
BCDnumber[i--] = bcdnumber;

BCDnumber[i] = (unsigned char)bin; //Остаток - число единиц

} //BINtoBCD(int)


unsigned int BCDtoBIN(void) //Преобразование BCD в BIN
{
unsigned char i = 0; //Индекс
unsigned int result = 0; //Результат

result = BCDnumber[i++] ; //Единицы

result += BCDnumber[i++] * 10; //Десятки

result += BCDnumber[i++] * 100; //Сотни

result += BCDnumber[i++] * 1000; //Тысячи

result += BCDnumber[i] * 10000; //Десятки тысяч

return result;
} //BCDtoBIN()


void BINtoHEX(unsigned int bin) //Преобразование BIN в HEX
{
unsigned char i = 4; //Индекс

BCDnumber[i--] = 0;
BCDnumber[i--] = (unsigned char) (bin >> 12);
BCDnumber[i--] = 0x0F & ((unsigned char) (bin >> 8));
BCDnumber[i--] = 0x0F & ((unsigned char) (bin >> 4));
BCDnumber[i] = 0x0F & ((unsigned char) bin);

} //BINtoHEX(int)

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru