Ответ: 1. Этот твой макрос предназначен как раз только для установки бита. В качестве параметров в макрос можно передавать ТОЛЬКО такие строковые конструкции, которым на этапе компиляции смогут быть опознаны ассемблером как разрешенные имена либо как числовые значения. Следовательно, твое желание передать в качестве макропараметра ВЫРАЖЕНИЕ является безграмотной глупостью.
2. Не надо врать. И не надо пользоваться кривыми инструментами:
AVRASM ver. 1.77.3 MACR.aav Sun Oct 16 23:18:51 2005 000000 + My_M_write_in_AY_Br16 $1234, 7 .def yl = r28 .def yh = r29 .macro My_M_write_in_AY_Br16 address bit_no ldi yh,high(@0) ldi yl,low(@0) ldi r16,(1 << @1) st y,r16 .endm .listmac 000000 + My_M_write_in_AY_Br16 $1234, 7 000000 e1d2 ldi yh,high(0x1234) 000001 e3c4 ldi yl,low(0x1234) 000002 e800 ldi r16,(1 << 0x7) 000003 8308 st y,r16 .endm Assembly complete with no errors.3. Все параметры в макрос я передаю через функцию RTFM, описанную выше. Уточнять не стану из принципа - хамов не терплю 4. В твоем случае - это дело не только безвкусицы, но и обычного ламерства. RTFM. 5. Эту инструкцию не поддерживают только давно снятые с производства 90S1200, Tiny10-12, 28, в которых RAM нет как класса, и для них любая конструкция такого рода - что с, что без STS, будет никчемной. Слив не защитан. 6. Проблема была у тебя, и я с ней, как и со многими другими, разобрался. Квалификацией с тобой меряться мне не позволяют мои гуманистические убеждения, да и коллеги, знающие меня здесь не первый день, могут не поддержать публичную порку :))