[an error occurred while processing this directive]
|
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: info@telesys.ru