ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
41701 Топик полностью
AVR (16.10.2005 23:55, просмотров: 1) ответил Доктор ТуамОсес на Господину AVRу..
Ответ: 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. Проблема была у тебя, и я с ней, как и со многими другими, разобрался. Квалификацией с тобой меряться мне не позволяют мои гуманистические убеждения, да и коллеги, знающие меня здесь не первый день, могут не поддержать публичную порку :))