На Си можешь попробовать это. Правда RAM это не экономит ... (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено O.L. 08 марта 2004 г. 09:17
В ответ на: Подскажите как сделать преобразование в десятичную систему на AVR без соманды десятичной коррекции. отправлено ANT 08 марта 2004 г. 03:51

union {
unsigned long d;
unsigned char byte[4];
struct
{
unsigned char source;
unsigned char lo;
unsigned char mid;
unsigned char hi;
}Dec_num;
}Dat;
//Dat.Dec_num.source
//Dat.Dec_num.hi


void
BCD_shift (void)
{
unsigned char count = 8,i;
do {
for (i=1;i<4;++i)
{
if ((Dat.byte[i]&0x0F)>=0x05) Dat.byte[i]+=0x03;
if ((Dat.byte[i]&0xF0)>=0x50) Dat.byte[i]+=0x30;
}
Dat.d <<=1;
}while (--count);
}
теперь используем эти "домашние заготовки"

void
BCD_word (unsigned int data)
{
Dat.d = 0; // clear long data
Dat.byte[0] = (unsigned char)(data>>8);
BCD_shift ();
Dat.byte[0] = (unsigned char)data;
BCD_shift ();
}

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru