для начала рекомендую: глава 6 Advanced Programming Technique в доке на Cx51 Compiler
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено bialix 17 августа 2004 г. 18:11
В ответ на: Ассембрерные вставки в Си (Keil) отправлено Tow 17 августа 2004 г. 17:35

1й пункт можно побороть хитростью
2й пункт - ну а что же вы хотели, если объявили функцию, которая должна возвращать значения. Победить можно тоже хитростью.

Вот как побеждаю хитростью я (но это грязный хак!)


// int my_abs(int) - получение модуля целого числа (2 байта)
void _my_abs(void)
{
#pragma ASM
mov a, r6
jb acc.7, c_0688
ret

c_0688:
clr C
clr a
subb a, r7
mov r7, a
clr a
subb a, r6
mov r6, a
ret
#pragma ENDASM
}

А взаголовочном файле эта функция объявлена как:


int my_abs(int); // получение модуля целого числа (2 байта)

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

Ответы



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

E-mail: info@telesys.ru