Я очень новичок в программировании на C и работаю над прошивкой для своего MCU. Этот метод работал нормально, когда я использовал компилятор KEIL (Big Endian), но когда я переключился на компилятор SDCC (Little Endian), он не работал должным образом. Может кто-нибудь объяснить, что я делаю не так???
Целевым устройством является Silicon Labs C8051F320, основанный на архитектуре 8051.
unsigned **int** MotorSteps = 0; //"Global" variables
unsigned **int** MotorSpeed = 0;
bit RampUp()
{
float t = 0;
t = MotorSteps;
if ( t < 51 )
{
t = (1-((50 - t)/50))*15;
t = (t * t);
MotorSpeed = 100 + t;
return 0;
}
else return 1;
}
ДОБАВЛЕНО: во-первых, теперь я изменил MotorSteps и MotorSpeed на целые числа без знака. В моем отладчике по какой-то причине, если я устанавливаю точку останова в строке оператора function MotorSteps = 00, поэтому t также должно быть присвоено 0, но отладчик показывает, что t = 0,031497 (десятичное число). Если я переключу отладчик на отображение в шестнадцатеричном формате, t = 0x3d010300. Как будто t никогда не назначают...