[an error occurred while processing this directive] [an error occurred while processing this directive]
Функции в IAR AVR ???? Гдето чтото недопонимаю.....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Колян 03 мая 2002 г. 15:29

чегото явно недопонимаю.....
есть функция в которую передаются 4 переменных, там они курочаца и возврашаюца обратно раскуроченными.Описал так:
char CheckCan(unsigned char *rev,
unsigned char *tout,
unsigned char *flaga,
unsigned char *flagb)
{ //упрощенно:)
*flaga++;
*flagb++;
*rev++ ;
*tout++ ;
if (*flaga==20) return(0);
return(1);
}


в майне вызываю ее так:
if (CheckCan( &Rev0, &Tout0, &FlagA0, &FlagB0))
ToFleshTmp=ToFleshTmp|Bit0;
//Rev0, Tout0, FlagA0, FlagB0 -все ансигнед чар.

начто асм код выглядит совсем криво, эти 4 переменных из области верхних адресов переносятся в регистры R16--R19, вызывается функция,внутри функции регистры изменяются а при выходе они невосстанавливаются обратно из R16--R19 в верхние адреса(((((Мало этого так она еще и возврат функции в регистре R16 делает....
Покажите дяди где я облажался и научите как необлажаца плиз)))

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru