[an error occurred while processing this directive]
|
Сталкнулся с тем что компилятор неправильно работает с типом long
По примеру: В ImpNum в результате вычисления обнуляются старшие 2-а байта, младшие 2-х байта содержат правильный результат операции.
Может быть что-то не так я делаю или опции компилятора надо какие выставить.
А Может есть у кого есть библиотека арифм. операций на Asm-е
#define cCntImpToDeg 0x4e2 /*число имп. при сдвиге на однин градус
unsigned char CalculatCntImpDeg(unsigned int Deg)
{
unsigned long ImpNum;
unsigned char CntFullScale;
unsigned int Remainder;
ImpNum = cCntImpToDeg * Deg;
CntFullScale = ImpNum >> 16; /*Выделяем целую часть циклов по 0xffff
if (CntFullScale > 0) {
Remainder = (unsigned int*)ImpNum + CntFullScale;
NewPos = Remainder;
}
return CntFullScale;
}
E-mail: info@telesys.ru