quarry (20.04.2012 16:28, просмотров: 3289)
вопрос по преобразованию двоичного в двоично-десятичное. есть ПП получения адреса
на входе у неё значения от 0х00 до 0х63 (т.е. 0-99)
в теле ПП это значение преобразуется к двоично-десятичному
с помощью встроеной в IAR EW430 функции __bcd_add_short
и вот незадача, до 0x0f всё нормально 0x15 на выходе, а уже 0x10 и больше преобразовывать отказывается
это так и должно быть? я почему то был уверен что мне будет щасте ан нет.
это можно поправить или принципиально я не прав?
//-----------------------------------------------------------------------------
// получение адреса EEPROM
//-----------------------------------------------------------------------------
unsigned long GetAdr (unsigned char y)
{
unsigned char ucX, ucY;
unsigned short usX, usY;
unsigned long ulX;
// преобразуем в BCD
usX = 0;
usY = y;
usX = __bcd_add_short(usX, usY);
// берём первый индекс
ucX = (usX >> 4);
// берём второй индекс
ucY = usX & 0x0f;
// берём адрес
ulX = (unsigned long) &EEPROM2->YearIntegr[ucX][ucY];
return ulX;
};
//-----------------------------------------------------------------------------