[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Можно и с параметрами (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено ВВ 26 марта 2002 г. 14:12
В ответ на: Ответ: Да уж!.... см (+) :-) отправлено A V R 26 марта 2002 г. 08:40

Для этого придётся воспользоваться ассемблерными макросами.
Сперва напишем нужный макрос, предположим, с тремя параметрами:
#asm
.MACRO __my_func
cli
ldi r31,HIGH(@0)
ldi r30,LOW(@0)
clr @1
label: dec @2
brne label
sei
.ENDM
#endasm

Затем для удобства вызова определим:
#define my_func(x,y,z) #asm("__my_func x,y,z")

И теперь пользуемся:
my_func(_tmp,r10,r20)

Понятно, что глобальная переменная tmp определена ранее
и при обращении к ней в макросе нужно добавить к её имени
префикс "_".
P.S. Декоративные пробелы опять, небось, растерялись при
транспортировке.

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

Ответы



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

E-mail: info@telesys.ru