[an error occurred while processing this directive]
|
char xdata InpBuf[64] _at_ 0x0000; //Буфер приемника
......
......
void GetRam(void) //Получить InpBuf[1]=страница
{
printf("Вход %03bu ",InpBuf[1]);
if (InpBuf[1]>131) //Несушествующая область
{printf("Вход A %03bu ",InpBuf[1]);
.......
return();
}
if (InpBuf[1]==128) //
{printf("Вход B %03bu ",InpBuf[1]);
.......
return();
}
if (InpBuf[1]<128) //
{printf("Вход C %03bu ",InpBuf[1]);
.......
return();
}
}
Таквот, какое бы значение InpBuf[1] небыло каждый раз выполняется ветка InpBuf[1]<128. Параметры проекта-Large:variable in XDATA;
Сделал так:
void GetRam(void) //Получить InpBuf[1]=страница
{unsigned char AdrB;
AdrB=InpBuf[1];
printf("Вход %03bu ",InpBuf[1]);
if (AdrB>131) //Несушествующая область
{printf("Вход A %03bu ",InpBuf[1]);
.......
return();
}
if (AdrB==128) //
{printf("Вход B %03bu ",InpBuf[1]);
.......
return();
}
if (AdrB<128) //
{printf("Вход C %03bu ",InpBuf[1]);
.......
return();
}
}
Так все работает корректно....
Где я ошибся? Может какието параметры проекта неправильно выставил что оно вупор нехочет занимаца сравнением регистров находящихся во внешней памаяти? Keil, проц aduc812
E-mail: info@telesys.ru