[an error occurred while processing this directive]
Все больше и больше разочаровываюсь в С............... хотя можетбыть просто чтото нетак делаю....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено колян 12 сентября 2002 г. 23:01

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